39 lines
1.5 KiB
Python
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
|
|
) |