pokemon/tools/generate/collision_tile_ids.py

49 lines
1.4 KiB
Python

from parse import parse
from generate.generate import renderer
from generate.tilesets import sorted_tilesets_constants_list
def includes_header():
yield '#include <cstdint>'
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 <cstdint>'
yield ''
yield '#include "collision_tile_ids.hpp"'
yield ''
def generate_source():
render, out = renderer()
render(includes_source())
render(collision_tile_ids());
return out