Properly set building owner + apply building pop capacity

This commit is contained in:
2024-01-23 18:39:53 +01:00
parent 547a1ca583
commit 2d11bb4675
14 changed files with 195 additions and 105 deletions

View File

@@ -16,8 +16,27 @@ typedef struct AnimationFrame {
f32 duration;
} AnimationFrame;
typedef enum OwnerType {
OWNER_NONE = -1,
OWNER_BLUE,
OWNER_RED,
OWNER_COUNT,
} OwnerType;
static OwnerType getOwnerType(BzTileID tile) {
switch (tile) {
case 1046:
return OWNER_RED;
case 1301:
return OWNER_BLUE;
default:
return OWNER_COUNT;
}
}
typedef enum TerrainType {
TERRAIN_NONE = -1,
TERRAIN_GOLD_ORE,
TERRAIN_COUNT,
} TerrainType;
@@ -267,12 +286,9 @@ typedef enum BuildingType {
BUILDING_HOUSE_04,
BUILDING_HOUSE_05,
BUILDING_HOUSE_06,
BUILDING_HOUSE_07,
BUILDING_HOUSE_08,
BUILDING_HOUSE_09,
BUILDING_HOUSE_10,
BUILDING_HOUSE_11,
BUILDING_HOUSE_12,
BUILDING_HOUSE_7,
BUILDING_HOUSE_8,
BUILDING_HOUSE_9,
BUILDING_KEEP,
BUILDING_MARKET,
BUILDING_MILL,
@@ -282,47 +298,40 @@ typedef enum BuildingType {
static BuildingType getTileBuilding(BzTileID tile) {
switch (tile) {
case 5638:
return BUILDING_BARRACKS;
case 5654:
case 5655:
case 5910:
case 5911:
return BUILDING_KEEP;
case 6149:
case 6150:
return BUILDING_BARRACKS;
case 6405:
case 6406:
return BUILDING_ARCHERY_RANGE;
case 6410:
return BUILDING_HOUSE_01;
case 6411:
return BUILDING_HOUSE_02;
case 6412:
return BUILDING_HOUSE_03;
case 6433:
return BUILDING_WAREHOUSE;
case 6666:
return BUILDING_HOUSE_04;
return BUILDING_HOUSE_01;
case 6667:
return BUILDING_HOUSE_05;
return BUILDING_HOUSE_02;
case 6668:
return BUILDING_HOUSE_06;
return BUILDING_HOUSE_03;
case 6689:
return BUILDING_MILL;
case 6922:
return BUILDING_HOUSE_07;
return BUILDING_HOUSE_04;
case 6923:
return BUILDING_HOUSE_08;
return BUILDING_HOUSE_05;
case 6924:
return BUILDING_HOUSE_09;
return BUILDING_HOUSE_06;
case 6945:
return BUILDING_GRANARY;
case 7178:
return BUILDING_HOUSE_10;
return BUILDING_HOUSE_7;
case 7179:
return BUILDING_HOUSE_11;
return BUILDING_HOUSE_8;
case 7180:
return BUILDING_HOUSE_12;
return BUILDING_HOUSE_9;
case 7191:
return BUILDING_MARKET;
default:
@@ -332,24 +341,21 @@ static BuildingType getTileBuilding(BzTileID tile) {
static BzTileID getBuildingTile(BuildingType type) {
switch (type) {
case BUILDING_BARRACKS: return 5638;
case BUILDING_KEEP: return 5654;
case BUILDING_BARRACKS: return 6149;
case BUILDING_ARCHERY_RANGE: return 6405;
case BUILDING_HOUSE_01: return 6410;
case BUILDING_HOUSE_02: return 6411;
case BUILDING_HOUSE_03: return 6412;
case BUILDING_WAREHOUSE: return 6433;
case BUILDING_HOUSE_04: return 6666;
case BUILDING_HOUSE_05: return 6667;
case BUILDING_HOUSE_06: return 6668;
case BUILDING_HOUSE_01: return 6666;
case BUILDING_HOUSE_02: return 6667;
case BUILDING_HOUSE_03: return 6668;
case BUILDING_MILL: return 6689;
case BUILDING_HOUSE_07: return 6922;
case BUILDING_HOUSE_08: return 6923;
case BUILDING_HOUSE_09: return 6924;
case BUILDING_HOUSE_04: return 6922;
case BUILDING_HOUSE_05: return 6923;
case BUILDING_HOUSE_06: return 6924;
case BUILDING_GRANARY: return 6945;
case BUILDING_HOUSE_10: return 7178;
case BUILDING_HOUSE_11: return 7179;
case BUILDING_HOUSE_12: return 7180;
case BUILDING_HOUSE_7: return 7178;
case BUILDING_HOUSE_8: return 7179;
case BUILDING_HOUSE_9: return 7180;
case BUILDING_MARKET: return 7191;
default: return -1;
}
@@ -357,24 +363,21 @@ static BzTileID getBuildingTile(BuildingType type) {
static const char *getBuildingStr(BuildingType type) {
switch (type) {
case BUILDING_KEEP: return "keep";
case BUILDING_BARRACKS: return "barracks";
case BUILDING_KEEP: return "keep";
case BUILDING_ARCHERY_RANGE: return "archery_range";
case BUILDING_WAREHOUSE: return "warehouse";
case BUILDING_HOUSE_01: return "house_01";
case BUILDING_HOUSE_02: return "house_02";
case BUILDING_HOUSE_03: return "house_03";
case BUILDING_WAREHOUSE: return "warehouse";
case BUILDING_MILL: return "mill";
case BUILDING_HOUSE_04: return "house_04";
case BUILDING_HOUSE_05: return "house_05";
case BUILDING_HOUSE_06: return "house_06";
case BUILDING_MILL: return "mill";
case BUILDING_HOUSE_07: return "house_07";
case BUILDING_HOUSE_08: return "house_08";
case BUILDING_HOUSE_09: return "house_09";
case BUILDING_GRANARY: return "granary";
case BUILDING_HOUSE_10: return "house_10";
case BUILDING_HOUSE_11: return "house_11";
case BUILDING_HOUSE_12: return "house_12";
case BUILDING_HOUSE_7: return "house_7";
case BUILDING_HOUSE_8: return "house_8";
case BUILDING_HOUSE_9: return "house_9";
case BUILDING_MARKET: return "market";
default: return NULL;
}
@@ -382,16 +385,20 @@ static const char *getBuildingStr(BuildingType type) {
static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHeight) {
switch (type) {
case BUILDING_BARRACKS:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_KEEP:
if (outWidth) *outWidth = 2;
if (outHeight) *outHeight = 2;
break;
case BUILDING_BARRACKS:
case BUILDING_ARCHERY_RANGE:
if (outWidth) *outWidth = 2;
if (outHeight) *outHeight = 1;
break;
case BUILDING_ARCHERY_RANGE:
if (outWidth) *outWidth = 2;
case BUILDING_WAREHOUSE:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_01:
@@ -406,7 +413,7 @@ static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHe
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_WAREHOUSE:
case BUILDING_MILL:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
@@ -422,35 +429,19 @@ static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHe
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_MILL:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_07:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_08:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_09:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_GRANARY:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_10:
case BUILDING_HOUSE_7:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_11:
case BUILDING_HOUSE_8:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_12:
case BUILDING_HOUSE_9:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;