Add buildings

This commit is contained in:
2024-01-15 10:12:40 +01:00
parent e35cee7e7a
commit 087b8f22a7
10 changed files with 1540 additions and 101 deletions

View File

@@ -258,22 +258,75 @@ static AnimationFrame terrainGetAnimationFrame(BzTileID tile, i32 frameIdx) {
typedef enum BuildingType {
BUILDING_NONE = -1,
BUILDING_ARCHERY_RANGE,
BUILDING_BARRACS,
BUILDING_GRANARY,
BUILDING_HOUSE_01,
BUILDING_HOUSE_02,
BUILDING_HOUSE_03,
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_KEEP,
BUILDING_MARKET,
BUILDING_MILL,
BUILDING_WAREHOUSE,
BUILDING_COUNT,
} BuildingType;
static BuildingType getTileBuilding(BzTileID tile) {
switch (tile) {
case 5892:
case 5893:
case 5894:
case 6148:
case 5654:
case 5655:
case 5910:
case 5911:
return BUILDING_KEEP;
case 6149:
case 6150:
case 6404:
return BUILDING_BARRACS;
case 6405:
case 6406:
return BUILDING_KEEP;
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;
case 6667:
return BUILDING_HOUSE_05;
case 6668:
return BUILDING_HOUSE_06;
case 6689:
case 6690:
case 6691:
return BUILDING_MILL;
case 6922:
return BUILDING_HOUSE_07;
case 6923:
return BUILDING_HOUSE_08;
case 6924:
return BUILDING_HOUSE_09;
case 6945:
return BUILDING_GRANARY;
case 7178:
return BUILDING_HOUSE_10;
case 7179:
return BUILDING_HOUSE_11;
case 7180:
return BUILDING_HOUSE_12;
case 7191:
return BUILDING_MARKET;
default:
return BUILDING_COUNT;
}
@@ -281,7 +334,25 @@ static BuildingType getTileBuilding(BzTileID tile) {
static BzTileID getBuildingTile(BuildingType type) {
switch (type) {
case BUILDING_KEEP: return 5892;
case BUILDING_KEEP: return 5654;
case BUILDING_BARRACS: 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_MILL: return 6689;
case BUILDING_HOUSE_07: return 6922;
case BUILDING_HOUSE_08: return 6923;
case BUILDING_HOUSE_09: 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_MARKET: return 7191;
default: return -1;
}
}
@@ -289,6 +360,24 @@ static BzTileID getBuildingTile(BuildingType type) {
static const char *getBuildingStr(BuildingType type) {
switch (type) {
case BUILDING_KEEP: return "keep";
case BUILDING_BARRACS: return "barracs";
case BUILDING_ARCHERY_RANGE: return "archery_range";
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_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_MARKET: return "market";
default: return NULL;
}
}
@@ -296,8 +385,80 @@ static const char *getBuildingStr(BuildingType type) {
static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHeight) {
switch (type) {
case BUILDING_KEEP:
if (outWidth) *outWidth = 2;
if (outHeight) *outHeight = 2;
break;
case BUILDING_BARRACS:
if (outWidth) *outWidth = 2;
if (outHeight) *outHeight = 1;
break;
case BUILDING_ARCHERY_RANGE:
if (outWidth) *outWidth = 2;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_01:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_02:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_03:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_WAREHOUSE:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_04:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_05:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_06:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_MILL:
if (outWidth) *outWidth = 3;
if (outHeight) *outHeight = 3;
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:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_11:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_HOUSE_12:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
case BUILDING_MARKET:
if (outWidth) *outWidth = 1;
if (outHeight) *outHeight = 1;
break;
default:
if (outWidth) *outWidth = 0;
@@ -309,12 +470,12 @@ static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHe
typedef enum EntityType {
ENTITY_NONE = -1,
ENTITY_WORKER,
ENTITY_WOOD,
ENTITY_STONE,
ENTITY_APPLE,
ENTITY_GOLD,
ENTITY_POP,
ENTITY_STONE,
ENTITY_WOOD,
ENTITY_WORKER,
ENTITY_COUNT,
} EntityType;
@@ -414,26 +575,26 @@ static AnimationFrame entityGetAnimationFrame(EntityType entity, AnimType type,
typedef enum ItemType {
ITEM_NONE = -1,
ITEM_STAFF,
ITEM_PICKAXE,
ITEM_AXE,
ITEM_DAGGER,
ITEM_WOOD_SHIELD,
ITEM_SHIELD,
ITEM_IRON_SHIELD,
ITEM_BOW,
ITEM_JAVLIN,
ITEM_ARROW,
ITEM_SWORD,
ITEM_GREATSWORD,
ITEM_CUTLASS,
ITEM_AXE,
ITEM_BATTLEAXE,
ITEM_GREATEAXE,
ITEM_SYTHE,
ITEM_MACE,
ITEM_BATTLEHAMMER,
ITEM_BOW,
ITEM_CUTLASS,
ITEM_DAGGER,
ITEM_GREATEAXE,
ITEM_GREATSWORD,
ITEM_IRON_SHIELD,
ITEM_JAVLIN,
ITEM_MACE,
ITEM_PICKAXE,
ITEM_SHIELD,
ITEM_SPEAR,
ITEM_STAFF,
ITEM_SWORD,
ITEM_SYTHE,
ITEM_TRIDENT,
ITEM_WOOD_SHIELD,
ITEM_COUNT,
} ItemType;