pokemon/tools/parse/parse.py
Zack Buhman 4909a1f089 types: add type name strings
This also parses, generates, and displays nidoran male/female name
strings correctly.
2023-08-04 05:26:23 +00:00

101 lines
3.4 KiB
Python

import sys
from pathlib import Path
from parse import map # constants
# headers
# blocks
# objects
# hidden_objects
from parse import tileset # constants
# headers
# gfx
# collision_tile_ids
from parse import spritesheet # constants
# spritesheets
# gfx
from parse import pokemon # constants
# base_stats
# evos_moves
# names
# dex_entries
# dex_order
# dex_text
from parse import move # constants
# moves
# names
from parse import types # constants
# names (fixme)
# matchups (fixme)
# battle_constants.asm
from parse import text
from parse import scripts
from parse import pic
def memoize(f):
value = None
def inner():
nonlocal value
if value is None:
value = f()
return value
return inner
prefix = Path(sys.argv[1])
# map
map_constants_list = memoize(lambda: map.constants.parse(prefix))
map_headers = memoize(lambda: map.headers.parse_all(prefix))
map_blocks_list = memoize(lambda: map.blocks.parse(prefix))
map_objects_list = memoize(lambda: map.objects.parse_all(prefix))
map_hidden_objects_list = memoize(lambda: map.hidden_objects.parse(prefix))
# tileset
tileset_constants_list = memoize(lambda: tileset.constants.parse(prefix))
tileset_headers_list = memoize(lambda: tileset.headers.parse(prefix))
tileset_gfx_list = memoize(lambda: tileset.gfx.parse(prefix))
tileset_collision_tile_ids_list = memoize(lambda: tileset.collision_tile_ids.parse(prefix))
# need:
#data/tilesets/pair_collision_tile_ids.asm
#cut_tree_blocks.asm
# sprites
spritesheet_gfx_list = memoize(lambda: spritesheet.gfx.parse(prefix))
spritesheet_spritesheets_list = memoize(lambda: spritesheet.spritesheets.parse(prefix))
spritesheet_constants_list = memoize(lambda: spritesheet.constants.parse(prefix))
# text
scripts_list = memoize(lambda: scripts.parse_all(prefix))
text_list = memoize(lambda: text.parse_all(prefix))
# home/vcopy: animations
# pokemon
pokemon_base_stats_list = memoize(lambda: pokemon.base_stats.parse_all(prefix))
pokemon_constants_list = memoize(lambda: pokemon.constants.parse(prefix))
pokemon_dex_constants_list= memoize(lambda: pokemon.dex_constants.parse(prefix))
pokemon_dex_entries_list = memoize(lambda: pokemon.dex_entries.parse(prefix))
pokemon_dex_order_list = memoize(lambda: pokemon.dex_order.parse(prefix))
pokemon_dex_text_list = memoize(lambda: pokemon.dex_text.parse(prefix))
pokemon_evos_moves_list = memoize(lambda: pokemon.evos_moves.parse(prefix))
pokemon_names_list = memoize(lambda: pokemon.names.parse(prefix))
# move
move_constants_list = memoize(lambda: move.constants.parse(prefix))
move_moves_list = memoize(lambda: move.moves.parse(prefix))
move_names_list = memoize(lambda: move.names.parse(prefix))
# pic
pic_list = memoize(lambda: pic.parse_all(prefix))
# type
type_constants_list = memoize(lambda: types.constants.parse(prefix))
type_names_list = memoize(lambda: types.names.parse(prefix))
type_names_list()