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()