from dataclasses import dataclass from game_server.resource.base_resource import BaseResource, T from game_server.resource.decorators import GameResource from game_server.resource.configdb.avatar_skill_tree_config import AvatarSkillTreeConfig from game_server.resource.configdb.maze_buff_config import MazeBuffConfig @dataclass @GameResource("resources/ExcelOutput/AvatarConfig.json") class AvatarConfig(BaseResource): AvatarID: int AvatarSkills: dict[int, int] MazeBuffs: dict[int,int] # ID and LvMax def on_load(self: T) -> bool: from game_server.resource import ResourceManager self.AvatarSkills = {} self.MazeBuffs = {} skill_tree_config = ResourceManager.instance().find_all_by_index( AvatarSkillTreeConfig, self.AvatarID ) for data in ResourceManager.instance().values(MazeBuffConfig): if str(data.ID).startswith(str(self.AvatarID)): self.MazeBuffs[data.ID] = data.LvMax for skill in skill_tree_config: skill_id = skill.PointID skill_level = skill.MaxLevel skill = self.AvatarSkills.get(skill_id) if not skill: self.AvatarSkills[skill_id] = skill_level return True def get_index(self) -> str: return str(self.AvatarID)