40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
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)
|