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

53 lines
2.1 KiB
Python

import betterproto
from game_server.net.session import Session
from game_server.game.enum.data_type import DataType
from database import mongo
from lib.proto import (
DressEquipmentReq,
DressEquipmentRsp,
EquipmentSlot,
GetAvatarDataReq
)
async def handle(session: Session, msg: DressEquipmentReq) -> betterproto.Message:
avatar_data = session.player.avatars.get(msg.avatar_id)
if avatar_data:
replace_id = 0
match msg.slot:
case EquipmentSlot.EQUIPMENT_SLOT_WEAPON_1.value:
if avatar_data.weapon_id > 0:
replace_id = avatar_data.weapon_id
replace_weapon = session.player.inventory.weapon_items.get(avatar_data.weapon_id)
replace_weapon.equip_avatar_id = 0
avatar_data.weapon_id = msg.unique_id
weapon = session.player.inventory.weapon_items.get(msg.unique_id)
weapon.equip_avatar_id = msg.avatar_id
mongo.save(session,DataType.WEAPON,[msg.unique_id,replace_id])
case EquipmentSlot.EQUIPMENT_SLOT_STIGMATA_1.value | \
EquipmentSlot.EQUIPMENT_SLOT_STIGMATA_2.value | \
EquipmentSlot.EQUIPMENT_SLOT_STIGMATA_3.value:
slot_num = msg.slot-1
replace_id = avatar_data.stigmata_ids.get(slot_num,0)
if replace_id > 0:
replace_stigmata = session.player.inventory.stigmata_items.get(replace_id)
replace_stigmata.equip_avatar_id = 0
avatar_data.stigmata_ids[slot_num] = msg.unique_id
stigmata = session.player.inventory.stigmata_items.get(msg.unique_id)
stigmata.equip_avatar_id = msg.avatar_id
stigmata.slot_num = slot_num
mongo.save(session,DataType.STIGMATA,[msg.unique_id,replace_id])
await session.process_packet(session.create_packet(GetAvatarDataReq(avatar_id_list=[msg.avatar_id])))
return DressEquipmentRsp(
retcode=0,
unique_id=msg.unique_id,
slot=msg.slot
)