Files
neonsr/game_server/handlers/PVEBattleResultCsReq.py
Naruse ec8972d5d6 init
2025-04-15 19:36:05 +08:00

37 lines
1.4 KiB
Python

import betterproto
from game_server.net.session import PlayerSession
from rail_proto.lib import (
PVEBattleResultCsReq,
PVEBattleResultScRsp,
BattleEndStatus,
SceneGroupRefreshScNotify,
GroupRefreshInfo,
SceneGroupRefreshType,
SceneEntityRefreshInfo
)
async def handle(session: PlayerSession, msg: PVEBattleResultCsReq) -> betterproto.Message:
if msg.end_status == BattleEndStatus.BATTLE_END_WIN.value:
await session.notify(
SceneGroupRefreshScNotify(
group_refresh_list=[
GroupRefreshInfo(
refresh_type=SceneGroupRefreshType.SCENE_GROUP_REFRESH_TYPE_LOADED.value,
refresh_entity=[
SceneEntityRefreshInfo(
delete_entity=monster.entity_id
)
],
group_id=monster.group_id
) for monster in session.player.scene_manager.battle_monster
],
floor_id=session.player.data.floor_id
)
)
for monster in session.player.scene_manager.battle_monster:
session.player.scene_manager.entities.pop(monster.entity_id, None)
return PVEBattleResultScRsp(
retcode=0,
end_status=msg.end_status,
battle_id=msg.battle_id
)