Files
KianaBH3/game_server/packet/handlers/GetAvatarDataReq.py
2024-11-07 23:25:15 +08:00

84 lines
3.4 KiB
Python

import betterproto
from game_server.net.session import Session
from lib.proto import (
GetAvatarDataReq,
GetAvatarDataRsp,
Avatar,
AvatarSkill,
AvatarSubSkill
)
async def handle(session: Session, msg: GetAvatarDataReq) -> betterproto.Message:
rsp = GetAvatarDataRsp(retcode=0)
if len(msg.avatar_id_list) == 1 and int(msg.avatar_id_list[0]) == 0 :
rsp.is_all = True
rsp.avatar_list=[
Avatar(
avatar_id=avatar.avatar_id,
star=avatar.star,
level=avatar.level,
exp=avatar.exp,
fragment=avatar.fragment,
weapon_unique_id=avatar.weapon_id,
stigmata_unique_id_1=avatar.stigmata_ids.get(1,0),
stigmata_unique_id_2=avatar.stigmata_ids.get(2,0),
stigmata_unique_id_3=avatar.stigmata_ids.get(3,0),
skill_list=[
AvatarSkill(
skill_id=skill_id,
sub_skill_list=[
AvatarSubSkill(
sub_skill_id=sub_skill.sub_skill_id,
level=sub_skill.level
)
for sub_id, sub_skill in skill.sub_skill_lists.items()
]
)
for skill_id,skill in avatar.skill_lists.items()
],
touch_goodfeel=avatar.touch_good_feel,
today_has_add_goodfeel=avatar.today_has_add_good_feel,
dress_list=avatar.dress_lists,
dress_id=avatar.dress_id,
sub_star=avatar.sub_star
)
for id, avatar in session.player.avatars.items()
]
else:
avatar_list = []
for id in msg.avatar_id_list:
avatar = session.player.avatars.get(id)
avatar_list.append(
Avatar(
avatar_id=avatar.avatar_id,
star=avatar.star,
level=avatar.level,
exp=avatar.exp,
fragment=avatar.fragment,
weapon_unique_id=avatar.weapon_id,
stigmata_unique_id_1=avatar.stigmata_ids.get(1,0),
stigmata_unique_id_2=avatar.stigmata_ids.get(2,0),
stigmata_unique_id_3=avatar.stigmata_ids.get(3,0),
skill_list=[
AvatarSkill(
skill_id=skill_id,
sub_skill_list=[
AvatarSubSkill(
sub_skill_id=sub_skill.sub_skill_id,
level=sub_skill.level
)
for sub_id, sub_skill in skill.sub_skill_lists.items()
]
)
for skill_id,skill in avatar.skill_lists.items()
],
touch_goodfeel=avatar.touch_good_feel,
today_has_add_goodfeel=avatar.today_has_add_good_feel,
dress_list=avatar.dress_lists,
dress_id=avatar.dress_id,
sub_star=avatar.sub_star
)
)
rsp.is_all = False
rsp.avatar_list=avatar_list
return rsp