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 name, index in sorted_tilesets_constants_list(): tileset_header = parse.tileset_headers_list[index] coll_path = tileset_header.coll() tile_ids = parse.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(name, index): tileset_header = parse.tileset_headers_list[index] coll_path = tileset_header.coll() tile_ids = parse.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 name, index in sorted_tilesets_constants_list(): yield from collision_array(name, index) 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