refactor 5:
- CombatSettlementFlowService.cs 负责结算上下文构建、基地血量奖励修正、奖励选择准备、奖励追加、结算背包提交、FinishForm 摘要准备。
- CombatSettlementContext.cs 变成独立共享上下文,不再作为 CombatScheduler 内部私有类。
- 状态链改成各司其职:
- CombatSettlementState.cs 负责结束战斗现场并构建结算上下文。
- CombatRewardSelectionState.cs 只负责进入奖励选择流程。
- CombatFinishFormState.cs 只负责提交结算背包并打开 FinishForm。
- CombatScheduler.cs 删除了大块结算/奖励构建细节,保留状态切换、共享运行时和少量桥接回调。
This commit is contained in:
+6
-5
@@ -1,5 +1,3 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace GeometryTD.CustomComponent
|
||||
{
|
||||
public partial class CombatScheduler
|
||||
@@ -18,9 +16,12 @@ namespace GeometryTD.CustomComponent
|
||||
return;
|
||||
}
|
||||
|
||||
Scheduler.CommitSettlementInventory(Scheduler._settlementContext);
|
||||
Scheduler._settlementContext.GainedGold = Mathf.Max(0, Scheduler._combatInRunResourceManager.GainedGold);
|
||||
Scheduler.OpenCombatFinishForm(Scheduler._settlementContext);
|
||||
Scheduler._settlementFlowService.CommitSettlementInventory(Scheduler._settlementContext);
|
||||
Scheduler.EnsureCombatFinishFormUseCaseBound();
|
||||
Scheduler._settlementFlowService.OpenCombatFinishForm(
|
||||
Scheduler._settlementContext,
|
||||
Scheduler._combatInRunResourceManager,
|
||||
Scheduler._combatFinishFormUseCase);
|
||||
Scheduler.ChangeState(new CombatWaitingForReturnState(Scheduler));
|
||||
}
|
||||
}
|
||||
|
||||
+9
-1
@@ -16,7 +16,15 @@ namespace GeometryTD.CustomComponent
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Scheduler.TryPrepareRewardSelection(Scheduler._settlementContext))
|
||||
Scheduler.EnsureRewardSelectFormUseCaseBound();
|
||||
if (!Scheduler._settlementFlowService.TryPrepareRewardSelection(
|
||||
Scheduler._settlementContext,
|
||||
Scheduler._combatInRunResourceManager,
|
||||
Scheduler._phaseLoopRuntime.DisplayPhaseIndex,
|
||||
Scheduler.ResolveCurrentThemeType(),
|
||||
Scheduler._rewardSelectFormUseCase,
|
||||
Scheduler.OnFullBaseHpRewardSelected,
|
||||
Scheduler.OnFullBaseHpRewardGiveUp))
|
||||
{
|
||||
Scheduler.ChangeState(new CombatFinishFormState(Scheduler));
|
||||
}
|
||||
|
||||
+9
-1
@@ -15,7 +15,15 @@ namespace GeometryTD.CustomComponent
|
||||
|
||||
public override void OnEnter()
|
||||
{
|
||||
Scheduler._settlementContext = Scheduler.BuildSettlementContext(_reason, _isVictory);
|
||||
Scheduler._enemyManager.EndPhase();
|
||||
Scheduler._enemyManager.CleanupTrackedEnemies();
|
||||
Scheduler._isFinishAsVictory = _isVictory;
|
||||
Scheduler._settlementContext = Scheduler._settlementFlowService.BuildSettlementContext(
|
||||
_reason,
|
||||
_isVictory,
|
||||
Scheduler._currentLevel,
|
||||
Scheduler._enemyManager.DefeatedEnemyCount,
|
||||
Scheduler._combatInRunResourceManager);
|
||||
if (Scheduler._settlementContext.ShouldOpenRewardSelection)
|
||||
{
|
||||
Scheduler.ChangeState(new CombatRewardSelectionState(Scheduler));
|
||||
|
||||
Reference in New Issue
Block a user