from parse import parse from generate.generate import renderer from generate.tilesets import sorted_tilesets_constants_list def includes_header(): yield '#include ' yield '' def extern_collision_tile_ids(): for index, name in sorted_tilesets_constants_list(): tileset_header = parse.tileset_headers_list()[index] coll_path = tileset_header.coll() tile_ids = parse.tileset_collision_tile_ids_list()[coll_path] yield f"extern uint8_t {coll_path}[{len(tile_ids)}];" def generate_header(): render, out = renderer() render(includes_header()) render(extern_collision_tile_ids()) return out def collision_array(index, name): tileset_header = parse.tileset_headers_list()[index] coll_path = tileset_header.coll() tile_ids = parse.tileset_collision_tile_ids_list()[coll_path] yield f"uint8_t {coll_path}[] = {{" yield " ".join( f"{tile_ix}," for tile_ix in sorted(tile_ids) ) yield "};" def collision_tile_ids(): for index, name in sorted_tilesets_constants_list(): yield from collision_array(index, name) def includes_source(): yield '#include ' yield '' yield '#include "collision_tile_ids.hpp"' yield '' def generate_source(): render, out = renderer() render(includes_source()) render(collision_tile_ids()); return out