From 0cfbb3716da720154d7e3065d58617f2a15e7454 Mon Sep 17 00:00:00 2001 From: WatchAndyTW Date: Sat, 3 Aug 2024 11:29:43 +0800 Subject: [PATCH] Improve activity battle end calculation --- Common/Data/Excel/FinishWayExcel.cs | 2 +- .../Game/Activity/Activities/TrialActivityInstance.cs | 1 - GameServer/Game/Battle/BattleManager.cs | 3 +++ .../Recv/Activity/HandlerLeaveTrialActivityCsReq.cs | 2 ++ .../Packet/Recv/Battle/HandlerPVEBattleResultCsReq.cs | 4 +--- .../Send/Challenge/PacketStartChallengeScRsp.cs | 11 ++++++----- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Common/Data/Excel/FinishWayExcel.cs b/Common/Data/Excel/FinishWayExcel.cs index 5b7e0980..15699f8a 100644 --- a/Common/Data/Excel/FinishWayExcel.cs +++ b/Common/Data/Excel/FinishWayExcel.cs @@ -36,6 +36,6 @@ public class FinishWayExcel : ExcelResource public override void Loaded() { - GameData.FinishWayData.Add(ID, this); + GameData.FinishWayData.TryAdd(ID, this); } } \ No newline at end of file diff --git a/GameServer/Game/Activity/Activities/TrialActivityInstance.cs b/GameServer/Game/Activity/Activities/TrialActivityInstance.cs index c940b586..b79d3241 100644 --- a/GameServer/Game/Activity/Activities/TrialActivityInstance.cs +++ b/GameServer/Game/Activity/Activities/TrialActivityInstance.cs @@ -47,7 +47,6 @@ public class TrialActivityInstance : BaseActivityInstance { StageId = Data.CurTrialStageId }); - // player.SendPacket(new PacketTrialActivityDataChangeScNotify((uint)Data.CurTrialStageId)); await player.SendPacket(new PacketCurTrialActivityScNotify((uint)Data.CurTrialStageId, status)); } diff --git a/GameServer/Game/Battle/BattleManager.cs b/GameServer/Game/Battle/BattleManager.cs index b3636a30..0fc0e5cc 100644 --- a/GameServer/Game/Battle/BattleManager.cs +++ b/GameServer/Game/Battle/BattleManager.cs @@ -372,6 +372,9 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player) if (Player.ChallengeManager?.ChallengeInstance != null) await Player.ChallengeManager!.ChallengeInstance.OnBattleEnd(battle, req); + if (player.ActivityManager!.TrialActivityInstance != null && req.EndStatus == BattleEndStatus.BattleEndWin) + await player.ActivityManager.TrialActivityInstance.EndActivity(TrialActivityStatus.Finish); + await Player.SendPacket(new PacketPVEBattleResultScRsp(req, Player, battle)); } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/Activity/HandlerLeaveTrialActivityCsReq.cs b/GameServer/Server/Packet/Recv/Activity/HandlerLeaveTrialActivityCsReq.cs index 655aacc0..a3168dc5 100644 --- a/GameServer/Server/Packet/Recv/Activity/HandlerLeaveTrialActivityCsReq.cs +++ b/GameServer/Server/Packet/Recv/Activity/HandlerLeaveTrialActivityCsReq.cs @@ -16,6 +16,8 @@ public class HandlerLeaveTrialActivityCsReq : Handler await manager.TrialActivityInstance.EndActivity(); } + connection.Player!.ActivityManager!.TrialActivityInstance = null; + await connection.SendPacket(CmdIds.LeaveTrialActivityScRsp); } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/Battle/HandlerPVEBattleResultCsReq.cs b/GameServer/Server/Packet/Recv/Battle/HandlerPVEBattleResultCsReq.cs index a402dcaf..d66ae6f5 100644 --- a/GameServer/Server/Packet/Recv/Battle/HandlerPVEBattleResultCsReq.cs +++ b/GameServer/Server/Packet/Recv/Battle/HandlerPVEBattleResultCsReq.cs @@ -10,8 +10,6 @@ public class HandlerPVEBattleResultCsReq : Handler { var req = PVEBattleResultCsReq.Parser.ParseFrom(data); var player = connection.Player!; - player.BattleManager?.EndBattle(req); - if (player.ActivityManager!.TrialActivityInstance != null && req.EndStatus == BattleEndStatus.BattleEndWin) - await player.ActivityManager.TrialActivityInstance.EndActivity(TrialActivityStatus.Finish); + await player.BattleManager!.EndBattle(req); } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Send/Challenge/PacketStartChallengeScRsp.cs b/GameServer/Server/Packet/Send/Challenge/PacketStartChallengeScRsp.cs index 9165ec4e..c5751ad7 100644 --- a/GameServer/Server/Packet/Send/Challenge/PacketStartChallengeScRsp.cs +++ b/GameServer/Server/Packet/Send/Challenge/PacketStartChallengeScRsp.cs @@ -16,18 +16,19 @@ public class PacketStartChallengeScRsp : BasePacket SetData(proto); } - public PacketStartChallengeScRsp(PlayerInstance player) : base(CmdIds.StartChallengeScRsp) + public PacketStartChallengeScRsp(PlayerInstance player, bool sendScene = true) : base(CmdIds.StartChallengeScRsp) { - StartChallengeScRsp proto = new() - { - Scene = player.SceneInstance!.ToProto() - }; + StartChallengeScRsp proto = new(); if (player.ChallengeManager!.ChallengeInstance != null) { proto.CurChallenge = player.ChallengeManager.ChallengeInstance.ToProto(); proto.LineupList.Add(player.LineupManager!.GetExtraLineup(ExtraLineupType.LineupChallenge)!.ToProto()); proto.LineupList.Add(player.LineupManager!.GetExtraLineup(ExtraLineupType.LineupChallenge2)!.ToProto()); + if (sendScene) + { + proto.Scene = player.SceneInstance!.ToProto(); + } } else {