mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-14 05:44:34 +01:00
138 lines
5.4 KiB
Python
138 lines
5.4 KiB
Python
import dataclasses
|
|
from database import mongo
|
|
from game_server.game.avatar.avatar_manager import AvatarManager,Skill,AvatarSubSkill,AvatarTeamManager
|
|
from game_server.game.inventory.inventory_manager import InventoryManager,Material,Weapon,Stigmata,RuneList,RuneGroup
|
|
from game_server.game.elf.elf_manager import ElfManager,ElfSkill
|
|
from game_server.game.enum.item_type import MainType
|
|
|
|
@dataclasses.dataclass
|
|
class WarshipAvatar:
|
|
warship_first_avatar_id: int
|
|
warship_second_avatar_id: int
|
|
|
|
@dataclasses.dataclass
|
|
class Player:
|
|
uid: int
|
|
name: str
|
|
level: int
|
|
exp: int
|
|
hcoin: int
|
|
stamina: int
|
|
signature: str
|
|
head_photo: int
|
|
head_frame: int
|
|
warship_id: int
|
|
assistant_avatar_id: int
|
|
birth_date: int
|
|
warship_avatar: WarshipAvatar
|
|
|
|
# Player managers
|
|
avatars: dict[int, AvatarManager] = dataclasses.field(default_factory=dict)
|
|
inventory: InventoryManager = dataclasses.field(default_factory=InventoryManager)
|
|
elfs: dict[int,ElfManager] = dataclasses.field(default_factory=dict)
|
|
custom_avatar_team_list: dict[int,AvatarTeamManager] = dataclasses.field(default_factory=dict)
|
|
|
|
|
|
def init_default(self):
|
|
self.add_all_avatar()
|
|
self.add_all_items()
|
|
self.add_all_elfs()
|
|
|
|
def add_all_avatar(self):
|
|
avatars = mongo.find_documents("avatars")
|
|
for avatar in avatars:
|
|
data = AvatarManager(
|
|
avatar_id=avatar['AvatarID'],
|
|
star=avatar['Star'],
|
|
level=avatar['Level'],
|
|
exp=avatar['Exp'],
|
|
fragment=avatar['Fragment'],
|
|
touch_good_feel=avatar['TouchGoodFeel'],
|
|
today_has_add_good_feel=avatar['TodayHasAddGoodFeel'],
|
|
dress_id=avatar['DressID'],
|
|
dress_lists=avatar['DressLists'],
|
|
sub_star=avatar['SubStar'],
|
|
skill_lists={
|
|
skill['SkillId']:
|
|
Skill(
|
|
skill_id=skill['SkillId'],
|
|
sub_skill_lists={
|
|
sub_skill['subSkillId']:
|
|
AvatarSubSkill(
|
|
sub_skill_id=sub_skill['subSkillId'],
|
|
level=sub_skill['level']
|
|
)
|
|
for sub_id,sub_skill in skill['SubSkillLists'].items()
|
|
}
|
|
)
|
|
for id,skill in avatar['SkillLists'].items()
|
|
}
|
|
)
|
|
weapon = list(mongo.find_documents_by_key_values("items", {"EquipAvatarID": avatar['AvatarID'], "MainType":MainType.WEAPON.value}))
|
|
stigmata = list(mongo.find_documents_by_key_values("items", {"EquipAvatarID": avatar['AvatarID'], "MainType":MainType.STIGMATA.value}))
|
|
if any(weapon):
|
|
data.weapon_id = weapon[0]['UniqueID']
|
|
if any(stigmata):
|
|
for stigma in stigmata:
|
|
data.stigmata_ids[stigma['SlotNum']] = stigma['UniqueID']
|
|
self.avatars[avatar['AvatarID']] = data
|
|
|
|
def add_all_items(self):
|
|
get_items = mongo.find_documents("items")
|
|
for item in get_items:
|
|
if item['MainType'] == MainType.MATERIAL.value:
|
|
normal_item = Material(
|
|
item_id=item['ItemID'],
|
|
num=item['ItemNum']
|
|
)
|
|
self.inventory.material_items[item['ItemID']] = normal_item
|
|
|
|
if item['MainType'] == MainType.WEAPON.value:
|
|
weapon = Weapon(
|
|
item_id=item['ItemID'],
|
|
level=item['Level'],
|
|
exp=item['Exp'],
|
|
is_locked=item['IsLocked'],
|
|
is_extracted=item['IsExtracted'],
|
|
equip_avatar_id=item['EquipAvatarID']
|
|
)
|
|
self.inventory.weapon_items[item['UniqueID']] = weapon
|
|
|
|
if item['MainType'] == MainType.STIGMATA.value:
|
|
stigmata = Stigmata(
|
|
item_id=item['ItemID'],
|
|
level=item['Level'],
|
|
exp=item['Exp'],
|
|
slot_num=item['SlotNum'],
|
|
refine_value=item['RefineValue'],
|
|
promote_times=item['PromoteTimes'],
|
|
is_locked=item['IsLocked'],
|
|
equip_avatar_id=item['EquipAvatarID'],
|
|
rune_list=[
|
|
RuneList(
|
|
rune_id=rune['RuneId'],
|
|
strength_percent=rune['strengthPercent']
|
|
)
|
|
for rune in item['RuneLists']
|
|
]
|
|
)
|
|
self.inventory.stigmata_items[item['UniqueID']] = stigmata
|
|
|
|
def add_all_elfs(self):
|
|
get_elfs = mongo.find_documents("elfs")
|
|
for elf in get_elfs:
|
|
data = ElfManager(
|
|
elf_id=elf['ElfId'],
|
|
level=elf['Level'],
|
|
star=elf['Star'],
|
|
exp=elf['Exp'],
|
|
skill_list={
|
|
skill['SkillId']:
|
|
ElfSkill(
|
|
skill_id=skill['SkillId'],
|
|
level=skill['Level']
|
|
)
|
|
for id,skill in elf['SkillLists'].items()
|
|
}
|
|
)
|
|
self.elfs[elf['ElfId']] = data |