From a5363a07ad0900f33ff84f9e8a89455b95183e61 Mon Sep 17 00:00:00 2001 From: bridge Date: Wed, 3 Dec 2025 00:10:10 +0800 Subject: [PATCH] fix bug --- README.md | 3 +- src/classes/map.py | 2 +- src/classes/region.py | 94 +------------------ src/classes/tile.py | 5 + src/run/load_map.py | 26 +++-- static/game_configs/region_map.csv | 68 +++++++------- web/src/components/game/AnimatedAvatar.vue | 8 +- web/src/components/game/MapLayer.vue | 4 +- .../game/composables/useTextures.ts | 23 ++++- 9 files changed, 85 insertions(+), 148 deletions(-) diff --git a/README.md b/README.md index de4b648..f56411f 100644 --- a/README.md +++ b/README.md @@ -137,8 +137,8 @@ - ✅ 战斗小剧场 - ✅ 对话小剧场 - ✅ 小剧场不同文字风格 +- ✅ 一次性选择(如是否要切换功法) - [ ] NPC观测空间设计 -- [ ] 一次性选择(如是否要切换功法) ### 🏛️ 世界背景系统 - [ ] 背景故事框架 @@ -157,6 +157,7 @@ - [ ] 占卜 & 谶纬 - [ ] 男生女相 & 女生男相 - [ ] 角色隐秘/双面人 +- [ ] 世界秘密 ### 🔭 远期展望 - [ ] ECS并行工具 diff --git a/src/classes/map.py b/src/classes/map.py index 421482b..1375b69 100644 --- a/src/classes/map.py +++ b/src/classes/map.py @@ -88,7 +88,7 @@ class Map(): # 或者我们简单点,不分类返回,只返回总览? # 为了保持接口不变,我们可以现场过滤。 - from src.classes.region import NormalRegion, CultivateRegion, CityRegion, SectRegion + from src.classes.region import NormalRegion, CultivateRegion, CityRegion def filter_regions(cls): return {rid: r for rid, r in self.regions.items() if isinstance(r, cls)} diff --git a/src/classes/region.py b/src/classes/region.py index f0595b1..7474174 100644 --- a/src/classes/region.py +++ b/src/classes/region.py @@ -11,65 +11,6 @@ from src.classes.plant import Plant, plants_by_id from src.classes.sect import sects_by_name -def get_tiles_from_shape(shape: 'Shape', north_west_cor: str, south_east_cor: str) -> list[tuple[int, int]]: - """ - 根据形状和两个角点坐标,计算出对应的所有坐标点 - """ - if not north_west_cor or not south_east_cor: - return [] - - nw_coords = tuple(map(int, north_west_cor.split(','))) - se_coords = tuple(map(int, south_east_cor.split(','))) - - min_x, min_y = nw_coords - max_x, max_y = se_coords - - coordinates = [] - - if shape == Shape.SQUARE or shape == Shape.RECTANGLE: - for x in range(min_x, max_x + 1): - for y in range(min_y, max_y + 1): - coordinates.append((x, y)) - - elif shape == Shape.MEANDERING: - distance_x = max_x - min_x - distance_y = max_y - min_y - total_distance = max(distance_x, distance_y) - - if total_distance < 10: width = 1 - elif total_distance < 30: width = 2 - else: width = 3 - - path_points = [] - if distance_x >= distance_y: - for x in range(min_x, max_x + 1): - progress = (x - min_x) / max(distance_x, 1) - base_y = min_y + int(progress * distance_y) - import math - wave_amplitude = min(3, distance_y // 4) if distance_y > 0 else 0 - wave_y = int(wave_amplitude * math.sin(progress * math.pi * 2)) - y = max(min_y, min(max_y, base_y + wave_y)) - path_points.append((x, y)) - else: - for y in range(min_y, max_y + 1): - progress = (y - min_y) / max(distance_y, 1) - base_x = min_x + int(progress * distance_x) - import math - wave_amplitude = min(3, distance_x // 4) if distance_x > 0 else 0 - wave_x = int(wave_amplitude * math.sin(progress * math.pi * 2)) - x = max(min_x, min(max_x, base_x + wave_x)) - path_points.append((x, y)) - - for px, py in path_points: - for dx in range(-width//2, width//2 + 1): - for dy in range(-width//2, width//2 + 1): - nx, ny = px + dx, py + dy - if min_x <= nx <= max_x and min_y <= ny <= max_y: - coordinates.append((nx, ny)) - - return sorted(list(set(coordinates))) - - @dataclass class Region(ABC): """ @@ -79,12 +20,7 @@ class Region(ABC): name: str desc: str - # 可选/默认值,因为现在主要通过外部传入 cors 初始化 - shape: 'Shape' = field(default=None) - north_west_cor: str = "" - south_east_cor: str = "" - - # 核心坐标数据 + # 核心坐标数据,由 load_map.py 注入 cors: list[tuple[int, int]] = field(default_factory=list) # 计算字段 @@ -93,13 +29,6 @@ class Region(ABC): def __post_init__(self): """初始化计算字段""" - if self.shape is None: - self.shape = Shape.SQUARE # 默认值 - - # 如果 cors 为空且提供了旧版坐标字符串,尝试计算 (兼容性) - if not self.cors and self.north_west_cor and self.south_east_cor: - self.cors = get_tiles_from_shape(self.shape, self.north_west_cor, self.south_east_cor) - # 基于坐标点计算面积 self.area = len(self.cors) @@ -116,12 +45,7 @@ class Region(ABC): self.center_loc = min(self.cors, key=_dist2) else: # Fallback - if self.north_west_cor and self.south_east_cor: - nw = list(map(int, self.north_west_cor.split(','))) - se = list(map(int, self.south_east_cor.split(','))) - self.center_loc = ((nw[0]+se[0])//2, (nw[1]+se[1])//2) - else: - self.center_loc = (0, 0) + self.center_loc = (0, 0) def __hash__(self) -> int: return hash(self.id) @@ -157,20 +81,6 @@ class Region(ABC): } -class Shape(Enum): - SQUARE = "square" - RECTANGLE = "rectangle" - MEANDERING = "meandering" - - @classmethod - def from_str(cls, shape_str: str) -> 'Shape': - if not shape_str: return cls.SQUARE - for shape in cls: - if shape.value == shape_str: - return shape - return cls.SQUARE - - @dataclass class NormalRegion(Region): """普通区域""" diff --git a/src/classes/tile.py b/src/classes/tile.py index c4e8aa6..04891dc 100644 --- a/src/classes/tile.py +++ b/src/classes/tile.py @@ -24,6 +24,11 @@ class TileType(Enum): RUINS = "ruins" # 遗迹 FARM = "farm" # 农田 SECT = "sect" # 宗门 + ISLAND = "island" # 岛屿 + BAMBOO = "bamboo" # 竹林 + GOBI = "gobi" # 戈壁 + TUNDRA = "tundra" # 苔原 + MARSH = "marsh" # 湿地 @dataclass class Tile(): diff --git a/src/run/load_map.py b/src/run/load_map.py index 10e87fd..e6dccf9 100644 --- a/src/run/load_map.py +++ b/src/run/load_map.py @@ -2,10 +2,11 @@ import os import csv from src.classes.map import Map from src.classes.tile import TileType -from src.classes.region import Region, Shape, NormalRegion, CultivateRegion, CityRegion +from src.classes.region import Region, NormalRegion, CultivateRegion, CityRegion from src.classes.sect_region import SectRegion from src.utils.df import game_configs, get_str, get_int from src.classes.essence import EssenceType +from src.classes.sect import sects_by_id # 直接导入已加载的宗门数据 # 静态配置路径 CONFIG_DIR = os.path.join(os.path.dirname(__file__), "../../static/game_configs") @@ -36,13 +37,11 @@ def load_cultivation_world_map() -> Map: for x, tile_name in enumerate(row): if x < width: try: - # TileType 通常是大写,兼容 CSV 可能存的小写 t_type = TileType[tile_name.upper()] except KeyError: - # 兼容性处理:如果是 sect 名称,映射为山地或平原 - # 编辑器可能把 sect 名称也存进来了 - # 这里简单处理为 MOUNTAIN,或者根据需要扩展 TileType - t_type = TileType.MOUNTAIN if "宗" in tile_name else TileType.PLAIN + # 如果不是标准地形,则是宗门驻地名称 + # 这些名称直接对应 SECT 类型 + t_type = TileType.SECT game_map.create_tile(x, y, t_type) @@ -105,9 +104,16 @@ def _load_and_assign_regions(game_map: Map, region_coords: dict[int, list[tuple[ params["essence_type"] = EssenceType.from_str(get_str(row, "root_type")) params["essence_density"] = get_int(row, "root_density") elif type_tag == "sect": - params["sect_id"] = get_int(row, "sect_id") - params["sect_name"] = get_str(row, "name") # 假设驻地名即区域名 - # image_path 暂不处理或需要另寻来源 + sect_id = get_int(row, "sect_id") + params["sect_id"] = sect_id + + # 直接从已加载的 sects_by_id 中获取宗门对象 + # 如果找不到对应的 sect_id,默认使用驻地名称作为兜底(防止崩溃),但正常情况下应该能找到 + sect_obj = sects_by_id.get(sect_id) + if sect_obj: + params["sect_name"] = sect_obj.name + else: + params["sect_name"] = get_str(row, "name") # 实例化 try: @@ -137,4 +143,4 @@ def _parse_list(s: str) -> list[int]: try: return [int(x.strip()) for x in s.split(",") if x.strip()] except: - return [] \ No newline at end of file + return [] diff --git a/static/game_configs/region_map.csv b/static/game_configs/region_map.csv index a737690..b36a965 100644 --- a/static/game_configs/region_map.csv +++ b/static/game_configs/region_map.csv @@ -1,17 +1,17 @@ 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,116,116,116,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,116,116,116,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,10,10,10,104,104,104,116,116,116,116,116,116,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,12,12,12,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,10,10,10,104,104,104,116,116,116,116,116,116,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,12,12,12,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,10,10,10,104,104,116,116,116,116,116,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,108,108,12,12,12,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,-1,-1,-1,-1,5,5,5,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,108,108,108,108,108,108,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,-1,-1,-1,-1,5,5,5,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,-1,111,111,111,5,5,5,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,410,410,410,104,104,104,116,116,116,116,116,116,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,412,412,412,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,410,410,410,104,104,104,116,116,116,116,116,116,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,412,412,412,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,410,410,410,104,104,116,116,116,116,116,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,108,108,412,412,412,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,-1,-1,-1,-1,405,405,405,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,108,108,108,108,108,108,108,108,108,108,108,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,-1,-1,-1,-1,405,405,405,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,-1,111,111,111,405,405,405,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,-1,-1,-1,-1,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,116,111,111,111,111,111,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,-1,-1,-1,-1,-1,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,201,104,104,104,104,104,104,116,116,116,111,111,111,111,111,111,111,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,108,108,108,108,108,108,108,108,108,108,108,108,108,108,-1,-1,-1,-1,-1,-1,-1,-1,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,116,-1,111,111,111,111,111,111,111,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,106,108,108,108,108,108,108,108,108,106,-1,-1,-1,-1,-1,-1,-1,4,4,4,104,104,104,104,104,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,-1,111,111,111,111,111,111,111,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,106,106,106,106,108,108,108,108,106,106,-1,-1,-1,-1,-1,-1,-1,4,4,4,104,104,104,104,104,104,107,107,104,104,104,104,107,104,116,116,104,116,116,116,116,104,116,116,116,116,116,-1,-1,-1,111,111,111,111,111,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,109,109,109,109,106,108,108,106,106,-1,-1,-1,-1,-1,-1,-1,-1,4,4,4,-1,-1,104,104,104,104,104,107,107,104,107,104,107,116,116,116,116,116,116,116,116,116,116,116,116,116,-1,-1,-1,-1,204,111,111,111,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,106,108,108,108,108,108,108,108,108,106,-1,-1,-1,-1,-1,-1,-1,404,404,404,104,104,104,104,104,104,107,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,116,116,116,-1,111,111,111,111,111,111,111,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,106,106,106,106,108,108,108,108,106,106,-1,-1,-1,-1,-1,-1,-1,404,404,404,104,104,104,104,104,104,107,107,104,104,104,104,107,104,116,116,104,116,116,116,116,104,116,116,116,116,116,-1,-1,-1,111,111,111,111,111,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,109,109,109,109,106,108,108,106,106,-1,-1,-1,-1,-1,-1,-1,-1,404,404,404,-1,-1,104,104,104,104,104,107,107,104,107,104,107,116,116,116,116,116,116,116,116,116,116,116,116,116,-1,-1,-1,-1,204,111,111,111,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,109,109,109,109,106,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,104,104,104,104,104,104,107,107,107,107,107,116,116,116,116,116,116,116,116,116,116,116,116,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,109,109,109,109,109,109,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,107,107,107,107,107,116,116,116,116,116,116,116,116,116,116,116,116,-1,-1,-1,112,112,112,112,112,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,109,109,109,109,109,109,-1,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,107,107,107,107,107,107,116,116,116,116,116,116,116,116,116,116,116,-1,-1,112,112,112,112,112,112,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 @@ -22,28 +22,28 @@ 102,102,102,102,102,102,102,102,102,302,302,302,302,302,117,117,117,117,117,117,117,117,117,117,117,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,106,106,106,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,-1,112,112,112,112,112,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,302,302,302,302,302,117,117,117,117,117,117,117,117,117,117,117,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,106,106,106,106,-1,-1,-1,110,110,110,110,110,110,110,110,110,110,110,110,110,107,107,107,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,302,302,302,302,302,117,117,117,117,117,117,117,117,117,117,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,106,106,106,106,106,106,-1,-1,-1,-1,-1,110,110,110,110,110,110,110,110,107,107,107,107,107,107,107,-1,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,106,106,106,-1,-1,-1,-1,-1,202,110,110,110,110,110,107,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,9,9,9,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,-1,-1,-1,-1,-1,-1,110,110,110,110,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,9,9,9,105,105,105,105,105,105,105,207,105,105,105 -102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,11,11,11,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,-1,-1,301,301,301,301,301,106,106,-1,-1,-1,-1,-1,-1,110,110,110,110,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,9,9,9,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,11,11,11,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,301,301,301,301,301,106,106,106,106,-1,-1,-1,303,303,303,110,110,107,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,117 -102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,11,11,11,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,301,301,301,301,301,106,106,106,-1,-1,-1,-1,303,303,303,-1,110,110,107,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,106,106,106,-1,-1,-1,-1,-1,202,110,110,110,110,110,107,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,409,409,409,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,-1,-1,-1,-1,-1,-1,110,110,110,110,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,409,409,409,105,105,105,105,105,105,105,207,105,105,105 +102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,411,411,411,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,-1,-1,301,301,301,301,301,106,106,-1,-1,-1,-1,-1,-1,110,110,110,110,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,409,409,409,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,411,411,411,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,301,301,301,301,301,106,106,106,106,-1,-1,-1,303,303,303,110,110,107,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,117 +102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,117,-1,411,411,411,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,301,301,301,301,301,106,106,106,-1,-1,-1,-1,303,303,303,-1,110,110,107,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,301,301,301,301,301,106,106,-1,-1,-1,-1,-1,303,303,303,-1,-1,107,107,107,107,107,107,107,107,107,101,101,101,101,101,101,101,101,101,101,101,101,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,117,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,301,301,301,301,301,106,-1,-1,-1,-1,-1,-1,303,303,303,-1,-1,107,107,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,115,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,106,7,7,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,-1,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,-1,7,7,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,-1,-1,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,106,-1,7,7,7,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,-1,-1,107,107,107,107,107,107,107,1,1,1,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,-1,-1,109,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,-1,-1,-1,-1,107,-1,107,107,107,107,107,1,1,1,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,1,1,1,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,106,407,407,407,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,-1,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,117,117,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,-1,407,407,407,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,-1,-1,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,117,117,117,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,106,-1,407,407,407,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,107,107,107,107,107,107,107,-1,-1,-1,-1,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,117,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,-1,-1,107,107,107,107,107,107,107,401,401,401,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,117,117,117,-1,-1,109,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,-1,-1,-1,-1,107,-1,107,107,107,107,107,401,401,401,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,117,117,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,401,401,401,-1,115,115,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,107,-1,-1,-1,-1,115,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,107,-1,-1,-1,-1,-1,115,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,3,3,3,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,-1,-1,-1,-1,-1,-1,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,3,3,3,-1,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,14,14,14,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,3,3,3,-1,106,106,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,14,14,14,-1,-1,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,203,106,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,14,14,14,-1,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,-1,-1,-1,-1,-1,-1,13,13,13,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,109,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,109,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,-1,-1,-1,13,13,13,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,109,109,109,-1,-1,-1,-1,-1,-1,-1,109,109,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,-1,13,13,13,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,403,403,403,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,107,-1,-1,-1,-1,-1,-1,115,115,115,115,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,403,403,403,-1,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,414,414,414,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,403,403,403,-1,106,106,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,414,414,414,-1,-1,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,106,106,203,106,106,106,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,414,414,414,-1,-1,-1,-1,-1,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,-1,-1,-1,-1,-1,-1,413,413,413,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,109,-1,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,-1,109,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,-1,-1,-1,413,413,413,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,109,109,109,-1,-1,-1,-1,-1,-1,-1,109,109,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,-1,413,413,413,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,109,-1,-1,-1,-1,-1,114,114,-1,-1,109,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,106,-1,-1,106,106,-1,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,114,114,114,-1,-1,-1,-1,-1,-1,-1,114,-1,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,114,114,-1,-1,114,-1,114,114,114,114,114,114,114,114,114,114,114,-1,114,114,114,-1,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 @@ -52,16 +52,16 @@ 102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,118,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,205,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,118,118,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,118,118,118,118,118,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,8,8,8,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,103,114,114,114,114,103,114,114,114,114,103,103,114,114,114,114,114,114,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,118,118,118,105,105,105 -102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,8,8,-1,114,114,114,114,114,114,103,103,114,103,114,114,103,103,103,103,103,103,103,103,114,114,114,114,103,114,103,103,103,103,114,114,103,103,-1,-1,114,114,114,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,118,118,118,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,8,8,-1,114,114,113,113,113,103,103,103,103,103,114,103,103,103,103,103,103,103,103,103,114,103,103,114,103,103,103,103,103,103,103,114,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,408,408,408,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,103,114,114,114,114,103,114,114,114,114,103,103,114,114,114,114,114,114,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,118,118,118,105,105,105 +102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,408,408,408,-1,114,114,114,114,114,114,103,103,114,103,114,114,103,103,103,103,103,103,103,103,114,114,114,114,103,114,103,103,103,103,114,114,103,103,-1,-1,114,114,114,114,114,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,118,118,118,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,408,408,408,-1,114,114,113,113,113,103,103,103,103,103,114,103,103,103,103,103,103,103,103,103,114,103,103,114,103,103,103,103,103,103,103,114,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,106,106,106,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,114,113,-1,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,114,103,103,103,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,-1,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,113,-1,113,113,113,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,6,6,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,2,2,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,6,6,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,2,2,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,6,6,6,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 -102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,-1,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,2,2,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,113,-1,113,113,113,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,406,406,406,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,402,402,402,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,406,406,406,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,113,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,402,402,402,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,406,406,406,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 +102,102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,-1,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,402,402,402,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,-1,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,113,113,-1,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 102,102,102,102,102,102,102,102,102,102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,113,113,113,113,113,113,113,113,113,113,113,113,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,206,-1,-1,-1,103,103,103,103,103,103,103,-1,-1,-1,-1,-1,-1,-1,-1,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105 diff --git a/web/src/components/game/AnimatedAvatar.vue b/web/src/components/game/AnimatedAvatar.vue index 96d2401..275ef71 100644 --- a/web/src/components/game/AnimatedAvatar.vue +++ b/web/src/components/game/AnimatedAvatar.vue @@ -83,8 +83,8 @@ function getTexture() { function getScale() { const tex = getTexture() if (!tex) return 1 - // Scale up: 2.5x tile size (was 1.8x) - return (props.tileSize * 2.5) / Math.max(tex.width, tex.height) + // Scale up: 4.25x tile size (larger medium size) + return (props.tileSize * 4.25) / Math.max(tex.width, tex.height) } const drawFallback = (g: Graphics) => { @@ -96,10 +96,10 @@ const drawFallback = (g: Graphics) => { const nameStyle = { fontFamily: '"Microsoft YaHei", sans-serif', - fontSize: 42, // Increased from 36 + fontSize: 65, // Larger medium size fontWeight: 'bold', fill: '#ffffff', - stroke: { color: '#000000', width: 6 }, // Thicker stroke + stroke: { color: '#000000', width: 5.5 }, // Thicker stroke align: 'center', dropShadow: { color: '#000000', diff --git a/web/src/components/game/MapLayer.vue b/web/src/components/game/MapLayer.vue index 7be58f8..6d97e50 100644 --- a/web/src/components/game/MapLayer.vue +++ b/web/src/components/game/MapLayer.vue @@ -107,9 +107,9 @@ function getRegionStyle(type: string) { } const style = { fontFamily: '"Microsoft YaHei", sans-serif', - fontSize: type === 'sect' ? 48 : 64, + fontSize: type === 'sect' ? 85 : 100, fill: type === 'sect' ? '#ffcc00' : (type === 'city' ? '#ccffcc' : '#ffffff'), - stroke: { color: '#000000', width: 8, join: 'round' }, + stroke: { color: '#000000', width: 7, join: 'round' }, align: 'center', dropShadow: { color: '#000000', diff --git a/web/src/components/game/composables/useTextures.ts b/web/src/components/game/composables/useTextures.ts index 76c8ac5..44b84fb 100644 --- a/web/src/components/game/composables/useTextures.ts +++ b/web/src/components/game/composables/useTextures.ts @@ -45,7 +45,12 @@ export function useTextures() { 'SWAMP': '/assets/tiles/swamp.png', 'CAVE': '/assets/tiles/cave.png', 'RUINS': '/assets/tiles/ruins.png', - 'FARM': '/assets/tiles/farm.png' + 'FARM': '/assets/tiles/farm.png', + 'ISLAND': '/assets/tiles/island.png', + 'BAMBOO': '/assets/tiles/bamboo.png', + 'GOBI': '/assets/tiles/gobi.png', + 'TUNDRA': '/assets/tiles/tundra.png', + 'MARSH': '/assets/tiles/swamp.png' } const tilePromises = Object.entries(manifest).map(async ([key, url]) => { @@ -87,15 +92,25 @@ export function useTextures() { if (textures.value[key]) return // 已经加载过 // 假设图片路径规则:/assets/sects/宗门名.png - // 优先尝试 .png,如果需要支持 .jpg 可能需要额外逻辑,这里先定死 .png + // 使用 encodeURIComponent 处理中文路径 const url = `/assets/sects/${sectName}.png` + try { + // 尝试直接加载(Pixi v7+ Assets.load 通常能处理 URL) + // 为了兼容性,我们保留原始字符串,如果失败再尝试 encode const tex = await Assets.load(url) textures.value[key] = tex console.log(`Loaded sect texture: ${sectName}`) } catch (e) { - console.warn(`Failed to load sect texture for ${sectName}, using fallback.`) - // 加载失败时不占位,MapLayer 会 fallback 到 CITY + // 尝试 encode 再次加载 + try { + const encodedUrl = `/assets/sects/${encodeURIComponent(sectName)}.png` + const tex = await Assets.load(encodedUrl) + textures.value[key] = tex + console.log(`Loaded sect texture (encoded): ${sectName}`) + } catch (e2) { + console.warn(`Failed to load sect texture for ${sectName} (both raw and encoded), using fallback.`, e) + } } }