Files
neonsr/game_server/handlers/PVEBattleResultCsReq.py
2025-04-16 16:25:31 +08:00

39 lines
1.5 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:
if session.player.battle_manager:
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.battle_manager.entity_monster
],
floor_id=session.player.data.floor_id
)
)
for monster in session.player.battle_manager.entity_monster:
session.player.scene_manager.entities.pop(monster.entity_id, None)
session.player.battle_manager = None
return PVEBattleResultScRsp(
retcode=0,
end_status=msg.end_status,
battle_id=msg.battle_id
)