67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
import json
|
|
import os.path
|
|
|
|
from extract_common import *
|
|
|
|
writer = ExtractFileWriter("game_tileset")
|
|
|
|
|
|
def extract_by_property(tiles, key):
|
|
extracted = []
|
|
for tile in tiles:
|
|
if 'properties' not in tile:
|
|
continue
|
|
props = tile['properties']
|
|
props = [True for prop in props if prop['name'] == key]
|
|
if any(props):
|
|
extracted.append(tile)
|
|
return extracted
|
|
|
|
|
|
content = open("../rawAssets/game.tsj").read()
|
|
tiles = json.loads(content)["tiles"]
|
|
terrain_tiles = extract_by_property(tiles, "terrain")
|
|
building_tiles = extract_by_property(tiles, "building")
|
|
entity_tiles = extract_by_property(tiles, "entity")
|
|
|
|
writer.header_guard_start()
|
|
script_name = os.path.basename(__file__)
|
|
writer.output(f"// This file was generated by: {script_name}\n\n")
|
|
writer.include("<breeze.h>")
|
|
writer.include("<string.h>")
|
|
|
|
writer.empty_line()
|
|
writer.output_anim_sequence_struct()
|
|
writer.output_anim_frame_struct()
|
|
|
|
terrain_writer = EnumWriter(writer, "terrain", terrain_tiles)
|
|
building_writer = EnumWriter(writer, "building", building_tiles)
|
|
entity_writer = EnumWriter(writer, "entity", entity_tiles)
|
|
|
|
terrain_writer.output_enum()
|
|
terrain_writer.output_tile_has_anim("terrainHasAnimation")
|
|
terrain_writer.output_tile_anim_sequence("terrainGetAnimationSequence")
|
|
terrain_writer.output_tile_anim_frame("terrainGetAnimationFrame")
|
|
writer.empty_line()
|
|
|
|
building_writer.output_enum()
|
|
building_writer.output_tile_to_enum("getTileBuilding")
|
|
building_writer.output_enum_to_tile("getBuildingTile")
|
|
building_writer.output_str_to_enum("getBuildingFromStr")
|
|
building_writer.output_enum_to_str("getBuildingStr")
|
|
building_writer.output_enum_tile_size("getBuildingSize")
|
|
writer.empty_line()
|
|
|
|
anim_writer = AnimationWriter(writer, "entity", "anim", entity_tiles)
|
|
|
|
anim_writer.output_enum()
|
|
anim_writer.output_anim_enum()
|
|
anim_writer.output_has_anim("entityHasAnimation")
|
|
anim_writer.output_anim_sequence("entityGetAnimationSequence")
|
|
anim_writer.output_anim_frame("entityGetAnimationFrame")
|
|
|
|
writer.header_guard_stop()
|
|
|
|
|
|
writer.to_file("../game/game_tileset.h")
|