init
This commit is contained in:
73
game_server/handlers/DressRelicAvatarCsReq.py
Normal file
73
game_server/handlers/DressRelicAvatarCsReq.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import betterproto
|
||||
from game_server.net.session import PlayerSession
|
||||
from rail_proto.lib import (
|
||||
DressRelicAvatarCsReq,
|
||||
DressRelicAvatarScRsp
|
||||
)
|
||||
|
||||
async def handle(session: PlayerSession, msg: DressRelicAvatarCsReq) -> betterproto.Message:
|
||||
target_avatar = session.player.avatar_mananger.get(msg.avatar_id)
|
||||
if not target_avatar:
|
||||
return DressRelicAvatarScRsp()
|
||||
|
||||
for relic_data in msg.switch_list:
|
||||
relic = session.player.inventory_manager.get(relic_data.relic_unique_id)
|
||||
if not relic:
|
||||
continue
|
||||
|
||||
relic_sub_type = str(relic.sub_type)
|
||||
current_relic_id = target_avatar.relic_ids.get(relic_sub_type, 0)
|
||||
previous_avatar = session.player.avatar_mananger.get(relic.equip_avatar)
|
||||
|
||||
if previous_avatar:
|
||||
previous_relic_id = previous_avatar.relic_ids.get(relic_sub_type, 0)
|
||||
|
||||
if previous_relic_id > 0 and current_relic_id > 0:
|
||||
current_relic = session.player.inventory_manager.get(current_relic_id)
|
||||
previous_relic = session.player.inventory_manager.get(previous_relic_id)
|
||||
|
||||
if current_relic and previous_relic:
|
||||
previous_avatar.relic_ids[relic_sub_type] = current_relic.unique_id
|
||||
current_relic.equip_avatar = previous_avatar.avatar_id
|
||||
|
||||
target_avatar.relic_ids[relic_sub_type] = previous_relic.unique_id
|
||||
previous_relic.equip_avatar = target_avatar.avatar_id
|
||||
|
||||
#current_relic.save_item()
|
||||
#previous_relic.save_item()
|
||||
|
||||
elif previous_relic_id > 0:
|
||||
previous_relic = session.player.inventory_manager.get(previous_relic_id)
|
||||
if previous_relic:
|
||||
previous_relic.equip_avatar = 0
|
||||
#previous_relic.save_item()
|
||||
previous_avatar.relic_ids[relic_sub_type] = 0
|
||||
|
||||
elif current_relic_id > 0:
|
||||
current_relic = session.player.inventory_manager.get(current_relic_id)
|
||||
if current_relic:
|
||||
current_relic.equip_avatar = 0
|
||||
#current_relic.save_item()
|
||||
target_avatar.relic_ids[relic_sub_type] = 0
|
||||
|
||||
target_avatar.relic_ids[relic_sub_type] = relic.unique_id
|
||||
relic.equip_avatar = target_avatar.avatar_id
|
||||
#relic.save_item()
|
||||
#previous_avatar.save_avatar()
|
||||
|
||||
else:
|
||||
if current_relic_id > 0:
|
||||
current_relic = session.player.inventory_manager.get(current_relic_id)
|
||||
if current_relic:
|
||||
current_relic.equip_avatar = 0
|
||||
#current_relic.save_item()
|
||||
|
||||
target_avatar.relic_ids[relic_sub_type] = relic.unique_id
|
||||
relic.equip_avatar = target_avatar.avatar_id
|
||||
#relic.save_item()
|
||||
|
||||
#target_avatar.save_avatar()
|
||||
|
||||
await session.notify(session.player.PlayerSyncProto())
|
||||
|
||||
return DressRelicAvatarScRsp(retcode=0)
|
||||
Reference in New Issue
Block a user