refactor: use event instead of multiple call back

This commit is contained in:
StopWuyu
2025-11-01 11:56:39 +08:00
parent 48c8fd2314
commit 77ce937bf1
8 changed files with 15 additions and 13 deletions

View File

@@ -314,6 +314,7 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
GridFightOptions = new BattleGridFightOptions(curSection, inst, Player)
};
battleInstance.OnBattleEnd += inst.EndBattle;
Player.BattleInstance = battleInstance;
Player.QuestManager!.OnBattleStart(battleInstance);
@@ -404,22 +405,12 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
Player.BattleInstance = null;
await Player.MissionManager!.OnBattleFinish(req, battle);
if (Player.RogueManager?.GetRogueInstance() != null)
await Player.RogueManager!.GetRogueInstance()!.OnBattleEnd(battle, req);
if (Player.ChallengeManager?.ChallengeInstance != null)
await Player.ChallengeManager!.ChallengeInstance.OnBattleEnd(battle, req);
battle.OnBattleEnd += Player.MissionManager!.OnBattleFinish;
await battle.TriggerOnBattleEnd();
if (Player.ActivityManager!.TrialActivityInstance != null && req.EndStatus == BattleEndStatus.BattleEndWin)
await Player.ActivityManager.TrialActivityInstance.EndActivity(TrialActivityStatus.Finish);
if (Player.GridFightManager?.GridFightInstance != null &&
battle.GridFightOptions != null)
{
await Player.GridFightManager!.GridFightInstance!.EndBattle(battle);
}
await Player.SendPacket(new PacketPVEBattleResultScRsp(req, Player, battle));
}
}

View File

@@ -13,6 +13,7 @@ public abstract class BaseChallengeInstance(PlayerInstance player, ChallengeData
public virtual void OnBattleStart(BattleInstance battle)
{
battle.OnBattleEnd += OnBattleEnd;
}
public virtual async ValueTask OnBattleEnd(BattleInstance battle, PVEBattleResultCsReq req)

View File

@@ -178,6 +178,8 @@ public class ChallengeBossInstance(PlayerInstance player, ChallengeDataPb data)
public override void OnBattleStart(BattleInstance battle)
{
base.OnBattleStart(battle);
battle.RoundLimit = Config.ChallengeCountDown;
battle.Buffs.Add(new MazeBuff(Config.MazeBuffID, 1, -1)

View File

@@ -84,6 +84,8 @@ public class ChallengeMemoryInstance(PlayerInstance player, ChallengeDataPb data
public override void OnBattleStart(BattleInstance battle)
{
base.OnBattleStart(battle);
battle.RoundLimit = (int)Data.Memory.RoundsLeft;
battle.Buffs.Add(new MazeBuff(Config.MazeBuffID, 1, -1)

View File

@@ -68,6 +68,8 @@ public class ChallengePeakInstance(PlayerInstance player, ChallengeDataPb data)
public override void OnBattleStart(BattleInstance battle)
{
base.OnBattleStart(battle);
foreach (var peakBuff in Data.Peak.Buffs)
battle.Buffs.Add(new MazeBuff((int)peakBuff, 1, -1)
{

View File

@@ -108,6 +108,8 @@ public class ChallengeStoryInstance(PlayerInstance player, ChallengeDataPb data)
public override void OnBattleStart(BattleInstance battle)
{
base.OnBattleStart(battle);
battle.RoundLimit = Config.ChallengeCountDown;
battle.Buffs.Add(new MazeBuff(Config.MazeBuffID, 1, -1)

View File

@@ -596,7 +596,7 @@ public class MissionManager(PlayerInstance player) : BasePlayerManager(player)
#region Handlers
public async ValueTask OnBattleFinish(PVEBattleResultCsReq req, BattleInstance instance)
public async ValueTask OnBattleFinish(BattleInstance instance, PVEBattleResultCsReq req)
{
foreach (var mission in GetRunningSubMissionIdList())
{

View File

@@ -495,6 +495,8 @@ public abstract class BaseRogueInstance(PlayerInstance player, RogueSubModeEnum
foreach (var miracle in RogueMiracles.Values) miracle.OnStartBattle(battle);
foreach (var buff in RogueBuffs) buff.OnStartBattle(battle);
battle.OnBattleEnd += OnBattleEnd;
}
public abstract ValueTask OnBattleEnd(BattleInstance battle, PVEBattleResultCsReq req);