pokemon/tools/generate/collision_tile_ids.py
Zack Buhman e1a430abec main: add warp events
You can now walk from pallet town to the mount moon exit.
2023-07-29 00:16:44 +00:00

49 lines
1.3 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 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 <cstdint>'
yield ''
yield '#include "collision_tile_ids.hpp"'
yield ''
def generate_source():
render, out = renderer()
render(includes_source())
render(collision_tile_ids());
return out