diff --git a/src/classes/map.py b/src/classes/map.py index 1612a13..919b8fc 100644 --- a/src/classes/map.py +++ b/src/classes/map.py @@ -85,28 +85,22 @@ class Map(): """ return self.tiles[(x, y)].region - def get_info(self) -> str: - """返回地图的简要信息,按类型分组罗列区域并说明用途。""" - parts: list[str] = [] + def get_info(self, detailed: bool = False) -> dict: + """ + 返回地图信息(dict)。 + - detailed=False:各类区域返回名称列表 + - detailed=True:各类区域返回详细信息字符串列表 + """ + def build_regions_info(regions_dict) -> list[str]: + if detailed: + return [r.get_detailed_info() for r in regions_dict.values()] + return [r.get_info() for r in regions_dict.values()] - # 修炼区域 - parts.append("修炼区域(可以修炼以增进修为):") - parts.extend([f"- {str(region)}" for region in self.cultivate_regions.values()]) - parts.append("") - - # 普通区域 - parts.append("普通区域(可以狩猎或采集):") - parts.extend([f"- {str(region)}" for region in self.normal_regions.values()]) - parts.append("") - - # 城市区域 - parts.append("城市区域(可以交易):") - parts.extend([f"- {str(region)}" for region in self.city_regions.values()]) - parts.append("") - - # 宗门总部区域(使用维护的缓存) - parts.append("宗门总部(宗门弟子可在此进行疗伤等操作):") - parts.extend([f"- {region.name} - {region.desc}" for region in self.sect_regions.values()]) - return "\n".join(parts) + return { + "修炼区域(可以修炼以增进修为)": build_regions_info(self.cultivate_regions), + "普通区域(可以狩猎或采集)": build_regions_info(self.normal_regions), + "城市区域(可以交易)": build_regions_info(self.city_regions), + "宗门总部(宗门弟子可在此进行疗伤等操作)": build_regions_info(self.sect_regions), + } diff --git a/src/classes/world.py b/src/classes/world.py index ad03657..8088c93 100644 --- a/src/classes/world.py +++ b/src/classes/world.py @@ -15,11 +15,12 @@ class World(): month_stamp: MonthStamp avatar_manager: AvatarManager = field(default_factory=AvatarManager) - def get_info(self) -> str: - map_intro = "世界上的区域为:" - map_info = self.map.get_info() - info = f"{map_intro}\n{map_info}" - return info + def get_info(self, detailed: bool = False) -> dict: + """ + 返回世界信息(dict),其中包含地图信息(dict)。 + """ + map_info = self.map.get_info(detailed=detailed) + return map_info def get_avatars_in_same_region(self, avatar: "Avatar"): return self.avatar_manager.get_avatars_in_same_region(avatar) diff --git a/src/utils/strings.py b/src/utils/strings.py index edc3527..1a1bb27 100644 --- a/src/utils/strings.py +++ b/src/utils/strings.py @@ -16,6 +16,8 @@ def intentify_prompt_infos(infos: dict) -> dict: processed: dict = dict(infos or {}) if "avatar_infos" in processed: processed["avatar_infos"] = to_json_str_with_intent(processed["avatar_infos"]) + if "global_info" in processed: + processed["global_info"] = to_json_str_with_intent(processed["global_info"]) if "general_action_infos" in processed: processed["general_action_infos"] = to_json_str_with_intent(processed["general_action_infos"]) return processed