#!/usr/bin/env python3 import argparse from dataclasses import dataclass import json import pathlib import struct import sys from generated.first_arrival_to_zones import FirstArrivalToZone from generated.hidden_locations import HiddenLocation from generated.signpost_types import SignpostType from generated.town_map_description_flag_types import TownMapDescriptionFlagType from generated.vars_flags import VarFlag ANSI_BOLD_WHITE = "\033[1;37m" ANSI_BOLD_RED = "\033[1;31m" ANSI_RED = "\033[31m" ANSI_CLEAR = "\033[0m" TOWN_MAP_BLOCK_FMT = '4} | {line}" for line_num, line in zip(list(range(start_line + 1, end_line + 1)), doc_lines[start_line : end_line])][ : end_line - start_line] error_line_index = e.lineno - start_line - 1 error_lines[error_line_index] = error_lines[error_line_index][ : 5] + f"{ANSI_RED}{error_lines[error_line_index][5 : ]}{ANSI_CLEAR}" error_out = "\n".join(error_lines) print(f"{ANSI_BOLD_WHITE}{args.pokedex}:{e.lineno}:{e.colno}: {ANSI_BOLD_RED}error: {ANSI_BOLD_WHITE}{e.msg}{ANSI_CLEAR}\n{error_out}", file=sys.stderr) sys.exit(1) signpost_naix = {} with open(signpost_naix_path, 'r') as f: for line in f: line = line.strip().split() if line and line[0] == '#define' and len(line) == 3: signpost_naix[line[1]] = int(line[2]) text_bank = town_map_data["text_bank"] with open(block_path, 'wb') as out_blocks, open(flags_path, 'wb') as out_flags: area_indices = {} landmark_indices = {} num_blocks = len(town_map_data["blocks"]) out_blocks.write(struct.pack("