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

File diff suppressed because one or more lines are too long

View File

@@ -37,7 +37,7 @@ bool canPlaceBuilding(Game *game, BuildingType type, BzTile tileX, BzTile tileY)
} }
ecs_entity_t placeBuilding(Game *game, BuildingType type, ecs_entity_t placeBuilding(Game *game, BuildingType type,
BzTile posX, BzTile posY, Owner owner) { BzTile posX, BzTile posY, Player player) {
if (type <= BUILDING_NONE || type >= BUILDING_COUNT) if (type <= BUILDING_NONE || type >= BUILDING_COUNT)
return 0; return 0;
i32 sizeX, sizeY; i32 sizeX, sizeY;
@@ -71,7 +71,7 @@ ecs_entity_t placeBuilding(Game *game, BuildingType type,
pos.x - size.x * 0.5f, pos.y - size.y * 0.5f, pos.x - size.x * 0.5f, pos.y - size.y * 0.5f,
size.x, size.y); size.x, size.y);
ecs_set_ptr(ECS, building, SpatialGridID, &gridID); ecs_set_ptr(ECS, building, SpatialGridID, &gridID);
ecs_set_ptr(ECS, building, Owner, &owner); ecs_set(ECS, building, Owner, {player});
BzTileset *tileset = &game->tileset; BzTileset *tileset = &game->tileset;
TextureRegion region = { TextureRegion region = {
tileset->tiles, tileset->tiles,
@@ -85,6 +85,7 @@ ecs_entity_t placeBuilding(Game *game, BuildingType type,
switch (type) { switch (type) {
case BUILDING_KEEP: case BUILDING_KEEP:
ecs_set(ECS, building, AddPopCapacity, {10});
ecs_add_id(ECS, building, Storage); ecs_add_id(ECS, building, Storage);
break; break;
default: default:
@@ -119,12 +120,6 @@ void getBuildingCost(BuildingType type, i32 cost[RES_COUNT]) {
case BUILDING_HOUSE_04: case BUILDING_HOUSE_04:
case BUILDING_HOUSE_05: case BUILDING_HOUSE_05:
case BUILDING_HOUSE_06: case BUILDING_HOUSE_06:
case BUILDING_HOUSE_07:
case BUILDING_HOUSE_08:
case BUILDING_HOUSE_09:
case BUILDING_HOUSE_10:
case BUILDING_HOUSE_11:
case BUILDING_HOUSE_12:
cost[RES_WOOD] = 50; cost[RES_WOOD] = 50;
break; break;
case BUILDING_MARKET: case BUILDING_MARKET:

View File

@@ -12,7 +12,7 @@
typedef struct Game Game; typedef struct Game Game;
bool canPlaceBuilding(Game *game, BuildingType type, i32 tileX, i32 tileY); bool canPlaceBuilding(Game *game, BuildingType type, i32 tileX, i32 tileY);
ecs_entity_t placeBuilding(Game *game, BuildingType type, i32 posX, i32 posY, Owner owner); ecs_entity_t placeBuilding(Game *game, BuildingType type, i32 posX, i32 posY, Player player);
void getBuildingCost(BuildingType type, i32 cost[RES_COUNT]); void getBuildingCost(BuildingType type, i32 cost[RES_COUNT]);
bool canAffordBuilding(BuildingType type, PlayerResources res); bool canAffordBuilding(BuildingType type, PlayerResources res);

View File

@@ -31,6 +31,7 @@ ECS_COMPONENT_DECLARE(AIBlackboard);
ECS_TAG_DECLARE(Selectable); ECS_TAG_DECLARE(Selectable);
ECS_TAG_DECLARE(Selected); ECS_TAG_DECLARE(Selected);
ECS_COMPONENT_DECLARE(AddPopCapacity);
ECS_COMPONENT_DECLARE(Worker); ECS_COMPONENT_DECLARE(Worker);
ECS_COMPONENT_DECLARE(Building); ECS_COMPONENT_DECLARE(Building);
ECS_COMPONENT_DECLARE(Unit); ECS_COMPONENT_DECLARE(Unit);
@@ -70,6 +71,7 @@ void initComponentIDs(ecs_world_t *ecs) {
ECS_TAG_DEFINE(ecs, Selectable); ECS_TAG_DEFINE(ecs, Selectable);
ECS_TAG_DEFINE(ecs, Selected); ECS_TAG_DEFINE(ecs, Selected);
ECS_COMPONENT_DEFINE(ecs, AddPopCapacity);
ECS_COMPONENT_DEFINE(ecs, Worker); ECS_COMPONENT_DEFINE(ecs, Worker);
ECS_COMPONENT_DEFINE(ecs, Building); ECS_COMPONENT_DEFINE(ecs, Building);
ECS_COMPONENT_DEFINE(ecs, Unit); ECS_COMPONENT_DEFINE(ecs, Unit);

View File

@@ -166,6 +166,11 @@ extern ECS_COMPONENT_DECLARE(AIBlackboard);
extern ECS_TAG_DECLARE(Selectable); extern ECS_TAG_DECLARE(Selectable);
extern ECS_TAG_DECLARE(Selected); extern ECS_TAG_DECLARE(Selected);
typedef struct AddPopCapacity {
i32 amount;
} AddPopCapacity;
extern ECS_COMPONENT_DECLARE(AddPopCapacity);
// Worker can: // Worker can:
// - Harvest // - Harvest
// - Build // - Build

View File

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

View File

@@ -69,7 +69,22 @@ bool initBuildingsLayer(BzTileMap *map, BzTileLayer *layer) {
buildingType = getTileBuilding(buildingType); buildingType = getTileBuilding(buildingType);
if (buildingType <= BUILDING_NONE || buildingType >= BUILDING_COUNT) if (buildingType <= BUILDING_NONE || buildingType >= BUILDING_COUNT)
continue; continue;
placeBuilding(game, buildingType, x, y, (Owner) {owner}); // TODO: set player owner
// Convert owner
OwnerType ownerType = getOwnerType(owner);
Player player = PLAYER_RED;
switch (ownerType) {
case OWNER_BLUE:
player = PLAYER_BLUE;
break;
case OWNER_RED:
player = PLAYER_RED;
break;
default:
BZ_ASSERT(false);
break;
}
placeBuilding(game, buildingType, x, y, player);
i32 sizeX = 1; i32 sizeX = 1;
i32 sizeY = 1; i32 sizeY = 1;

View File

@@ -57,6 +57,26 @@ void updateTextureOwnerTile(ecs_iter_t *it) {
tex[i].rec.y += offset.y; tex[i].rec.y += offset.y;
} }
} }
void buildingAddPopCapacity(ecs_iter_t *it) {
Game *game = ecs_singleton_get_mut(ECS, Game);
AddPopCapacity *addPop = ecs_field(it, AddPopCapacity, 1);
Owner *owner = ecs_field(it, Owner, 2);
for (i32 i = 0; i < it->count; i++) {
PlayerResources *res = &game->playerResources[owner[i].player];
res->popCapacity += addPop[i].amount;
}
}
void buildingRemovePopCapacity(ecs_iter_t *it) {
Game *game = ecs_singleton_get_mut(ECS, Game);
AddPopCapacity *addPop = ecs_field(it, AddPopCapacity, 1);
Owner *owner = ecs_field(it, Owner, 2);
for (i32 i = 0; i < it->count; i++) {
PlayerResources *res = &game->playerResources[owner->player];
res->popCapacity -= addPop[i].amount;
}
}
void entityUpdateSpatialID(ecs_iter_t *it) { void entityUpdateSpatialID(ecs_iter_t *it) {
Game *game = ecs_singleton_get_mut(ECS, Game); Game *game = ecs_singleton_get_mut(ECS, Game);

View File

@@ -252,7 +252,7 @@ void updatePlayerInput() {
getBuildingSize(input->building, &sizeX, &sizeY); getBuildingSize(input->building, &sizeX, &sizeY);
bool canPlace = canPlaceBuilding(game, input->building, tileX, tileY); bool canPlace = canPlaceBuilding(game, input->building, tileX, tileY);
if (canPlace && isInputBtnDown(input, primaryBtn)) { if (canPlace && isInputBtnDown(input, primaryBtn)) {
placeBuilding(game, input->building, tileX, tileY, (Owner) {PLAYER_BLUE}); placeBuilding(game, input->building, tileX, tileY, game->player);
} }
input->buildingCanPlace = canPlace; input->buildingCanPlace = canPlace;
input->buildingPos = (Vec2i) {tileX, tileY}; input->buildingPos = (Vec2i) {tileX, tileY};

View File

@@ -109,6 +109,9 @@ void setupSystems() {
ECS_OBSERVER(ECS, updateTextureOwnerTile, EcsOnSet, TextureRegion, Owner); ECS_OBSERVER(ECS, updateTextureOwnerTile, EcsOnSet, TextureRegion, Owner);
ECS_OBSERVER(ECS, buildingAddPopCapacity, EcsOnSet, AddPopCapacity, Owner);
ECS_OBSERVER(ECS, buildingRemovePopCapacity, EcsOnRemove, AddPopCapacity, Owner);
ECS_SYSTEM(ECS, entityUpdateSpatialID, EcsOnUpdate, Position, Size, Velocity, SpatialGridID); ECS_SYSTEM(ECS, entityUpdateSpatialID, EcsOnUpdate, Position, Size, Velocity, SpatialGridID);
ECS_SYSTEM(ECS, entityUpdateKinematic, EcsOnUpdate, Position, Velocity, Steering, Unit); ECS_SYSTEM(ECS, entityUpdateKinematic, EcsOnUpdate, Position, Velocity, Steering, Unit);

View File

@@ -62,6 +62,19 @@ void entityPathRemove(ecs_iter_t *it);
void updateTextureOwnerTile(ecs_iter_t *it); void updateTextureOwnerTile(ecs_iter_t *it);
/* Observer (for adding pop capacity)
* 0: Game (singleton)
* 1: AddPopCapacity
* 2: Owner
*/
void buildingAddPopCapacity(ecs_iter_t *it);
/* Observer (for removing pop capacity)
* 0: Game (singleton)
* 1: AddPopCapacity
* 2: Owner
*/
void buildingRemovePopCapacity(ecs_iter_t *it);
/* /*
* 0: Game (singleton) for entity map * 0: Game (singleton) for entity map
* 1: Position * 1: Position

View File

@@ -1625,7 +1625,8 @@
"name":"ownership", "name":"ownership",
"type":"string", "type":"string",
"value":"" "value":""
}] }],
"type":"RED"
}, },
{ {
"animation":[ "animation":[
@@ -2212,7 +2213,8 @@
"name":"ownership", "name":"ownership",
"type":"string", "type":"string",
"value":"" "value":""
}] }],
"type":"BLUE"
}, },
{ {
"id":1302, "id":1302,
@@ -6562,7 +6564,8 @@
"name":"player", "name":"player",
"type":"int", "type":"int",
"value":0 "value":0
}] }],
"type":"barracks"
}, },
{ {
"id":5639, "id":5639,
@@ -7493,8 +7496,7 @@
"name":"player", "name":"player",
"type":"int", "type":"int",
"value":0 "value":0
}], }]
"type":"barracks"
}, },
{ {
"id":6150, "id":6150,
@@ -7531,8 +7533,7 @@
"name":"player", "name":"player",
"type":"int", "type":"int",
"value":0 "value":0
}], }]
"type":"barracks"
}, },
{ {
"id":6151, "id":6151,
@@ -7926,8 +7927,7 @@
"name":"player", "name":"player",
"type":"int", "type":"int",
"value":0 "value":0
}], }]
"type":"house_01"
}, },
{ {
"id":6411, "id":6411,
@@ -7941,8 +7941,7 @@
"name":"player", "name":"player",
"type":"int", "type":"int",
"value":0 "value":0
}], }]
"type":"house_02"
}, },
{ {
"id":6412, "id":6412,
@@ -7956,8 +7955,7 @@
"name":"player", "name":"player",
"type":"int", "type":"int",
"value":0 "value":0
}], }]
"type":"house_03"
}, },
{ {
"id":6414, "id":6414,
@@ -8311,7 +8309,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_04" "type":"house_01"
}, },
{ {
"id":6667, "id":6667,
@@ -8326,7 +8324,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_05" "type":"house_02"
}, },
{ {
"id":6668, "id":6668,
@@ -8341,7 +8339,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_06" "type":"house_03"
}, },
{ {
"id":6674, "id":6674,
@@ -8428,6 +8426,19 @@
}] }]
}, },
{ {
"animation":[
{
"duration":140,
"tileid":6689
},
{
"duration":140,
"tileid":6690
},
{
"duration":140,
"tileid":6691
}],
"id":6689, "id":6689,
"properties":[ "properties":[
{ {
@@ -8525,7 +8536,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_07" "type":"house_04"
}, },
{ {
"id":6923, "id":6923,
@@ -8540,7 +8551,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_08" "type":"house_05"
}, },
{ {
"id":6924, "id":6924,
@@ -8555,7 +8566,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_09" "type":"house_06"
}, },
{ {
"id":6926, "id":6926,
@@ -8795,6 +8806,36 @@
"value":"" "value":""
}] }]
}, },
{
"id":7170,
"properties":[
{
"name":"terrain",
"type":"string",
"value":""
}],
"type":"gold_ore"
},
{
"id":7171,
"properties":[
{
"name":"terrain",
"type":"string",
"value":""
}],
"type":"gold_ore"
},
{
"id":7172,
"properties":[
{
"name":"terrain",
"type":"string",
"value":""
}],
"type":"gold_ore"
},
{ {
"id":7173, "id":7173,
"properties":[ "properties":[
@@ -8835,7 +8876,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_10" "type":"house_7"
}, },
{ {
"id":7179, "id":7179,
@@ -8850,7 +8891,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_11" "type":"house_8"
}, },
{ {
"id":7180, "id":7180,
@@ -8865,7 +8906,7 @@
"type":"int", "type":"int",
"value":0 "value":0
}], }],
"type":"house_12" "type":"house_9"
}, },
{ {
"id":7182, "id":7182,

View File

@@ -777,7 +777,7 @@
<property name="ownership" value=""/> <property name="ownership" value=""/>
</properties> </properties>
</tile> </tile>
<tile id="1046"> <tile id="1046" type="RED">
<properties> <properties>
<property name="ownership" value=""/> <property name="ownership" value=""/>
</properties> </properties>
@@ -1024,7 +1024,7 @@
<object id="1" x="0" y="0" width="16" height="16"/> <object id="1" x="0" y="0" width="16" height="16"/>
</objectgroup> </objectgroup>
</tile> </tile>
<tile id="1301"> <tile id="1301" type="BLUE">
<properties> <properties>
<property name="ownership" value=""/> <property name="ownership" value=""/>
</properties> </properties>

View File

@@ -40,6 +40,7 @@ terrain_tiles = extract_by_property(all_tiles, "terrain")
building_tiles = extract_by_property(all_tiles, "building") building_tiles = extract_by_property(all_tiles, "building")
entity_tiles = extract_by_property(all_tiles, "entity") entity_tiles = extract_by_property(all_tiles, "entity")
item_tiles = extract_by_property(all_tiles, "item") item_tiles = extract_by_property(all_tiles, "item")
ownership_tiles = extract_by_property(all_tiles, "ownership")
writer.header_guard_start() writer.header_guard_start()
script_name = os.path.basename(__file__) script_name = os.path.basename(__file__)
@@ -54,6 +55,10 @@ writer.output_anim_frame_struct()
terrain_writer = EnumWriter(writer, terrain_tiles, "terrain") terrain_writer = EnumWriter(writer, terrain_tiles, "terrain")
building_writer = EnumWriter(writer, building_tiles, "building") building_writer = EnumWriter(writer, building_tiles, "building")
entity_writer = EnumWriter(writer, entity_tiles, "entity") entity_writer = EnumWriter(writer, entity_tiles, "entity")
ownership_writer = EnumWriter(writer, ownership_tiles, "owner")
ownership_writer.output_enum()
ownership_writer.output_tile_to_enum("getOwnerType")
terrain_writer.output_enum() terrain_writer.output_enum()
terrain_writer.output_tile_has_anim("terrainHasAnimation") terrain_writer.output_tile_has_anim("terrainHasAnimation")