diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatNodeComponent.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatNodeComponent.cs index 9ca3a80..ca183b8 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatNodeComponent.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatNodeComponent.cs @@ -237,7 +237,6 @@ namespace GeometryTD.CustomComponent LastGainedCoin = _combatScheduler.GainedCoin; LastGainedGold = _combatScheduler.GainedGold; CurrentLevel = null; - GameEntry.Event.Fire(this, NodeCompleteEventArgs.Create()); } public bool TryEndCombatByPlayer() diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs index 586237b..e29e776 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs @@ -387,7 +387,7 @@ namespace GeometryTD.CustomComponent GameEntry.UIRouter.CloseUI(UIFormType.RewardSelectForm); } - private void CompleteCombatAndNotify(bool succeeded) + private void CompleteCombat(bool succeeded) { _isCompleted = true; _currentState = null; @@ -395,6 +395,12 @@ namespace GeometryTD.CustomComponent GameEntry.CombatNode?.OnCombatEndedByScheduler(succeeded); } + private void CompleteNormalCombatAndNotify(bool succeeded) + { + CompleteCombat(succeeded); + GameEntry.Event.Fire(this, NodeCompleteEventArgs.Create()); + } + private bool HandleStartFailure(string errorMessage) { Log.Warning("{0}", errorMessage); @@ -497,7 +503,7 @@ namespace GeometryTD.CustomComponent private void GameOverByFailure() { - CompleteCombatAndNotify(false); + CompleteCombat(false); } } diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementContext.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementContext.cs index e5a9f54..286f7bf 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementContext.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementContext.cs @@ -4,10 +4,18 @@ namespace GeometryTD.CustomComponent { internal sealed class CombatSettlementContext { + public bool IsVictory; + public int FinalCoin; + public int FinalBaseHp; + public int MaxBaseHp; public int DefeatedEnemyCount; public int GainedGold; public BackpackInventoryData RewardInventory; public bool ShouldOpenRewardSelection; + public bool DidEnterRewardSelection; + public bool ShouldApplyLowBaseHpPenalty; + public float LowBaseHpEndurancePenaltyValue; + public int AffectedTowerCount; public bool IsCommitted; public string Reason; } diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementFlowService.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementFlowService.cs index bffdf6c..f1a1a46 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementFlowService.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementFlowService.cs @@ -39,12 +39,20 @@ namespace GeometryTD.CustomComponent CombatSettlementContext settlementContext = new CombatSettlementContext { + IsVictory = isVictory, + FinalCoin = Mathf.Max(0, resourceManager != null ? resourceManager.CurrentCoin : 0), + FinalBaseHp = currentBaseHp, + MaxBaseHp = maxBaseHp, DefeatedEnemyCount = Mathf.Max(0, defeatedEnemyCount), GainedGold = Mathf.Max(0, resourceManager != null ? resourceManager.GainedGold : 0), RewardInventory = resourceManager != null ? resourceManager.GetRewardInventorySnapshot() : new BackpackInventoryData(), ShouldOpenRewardSelection = shouldOpenFullBaseHpRewardSelect, + DidEnterRewardSelection = false, + ShouldApplyLowBaseHpPenalty = appliedLowBaseHpPenalty, + LowBaseHpEndurancePenaltyValue = appliedLowBaseHpPenalty ? LowBaseHpTowerEndurancePenalty : 0f, + AffectedTowerCount = 0, Reason = reason }; @@ -72,6 +80,7 @@ namespace GeometryTD.CustomComponent BackpackInventoryData rewardInventory = settlementContext.RewardInventory ?? new BackpackInventoryData(); GameEntry.PlayerInventory?.MergeInventory(rewardInventory); settlementContext.RewardInventory = rewardInventory; + settlementContext.AffectedTowerCount = ApplyDeferredSettlementPenalty(settlementContext); settlementContext.IsCommitted = true; } @@ -133,6 +142,7 @@ namespace GeometryTD.CustomComponent return false; } + settlementContext.DidEnterRewardSelection = true; GameEntry.UIRouter.OpenUI(UIFormType.RewardSelectForm, rawData); return true; } @@ -149,7 +159,6 @@ namespace GeometryTD.CustomComponent public void OpenCombatFinishForm( CombatSettlementContext settlementContext, - CombatInRunResourceManager resourceManager, CombatFinishFormUseCase combatFinishFormUseCase) { if (settlementContext == null || combatFinishFormUseCase == null) @@ -157,11 +166,7 @@ namespace GeometryTD.CustomComponent return; } - settlementContext.GainedGold = Mathf.Max(0, resourceManager != null ? resourceManager.GainedGold : settlementContext.GainedGold); - combatFinishFormUseCase.SetSummary( - settlementContext.DefeatedEnemyCount, - settlementContext.GainedGold, - settlementContext.RewardInventory); + combatFinishFormUseCase.SetSummary(settlementContext); GameEntry.UIRouter.OpenUI(UIFormType.CombatFinishForm); } @@ -209,7 +214,7 @@ namespace GeometryTD.CustomComponent } else if (hpRate < MidBaseHpThreshold) { - appliedLowBaseHpPenalty = ApplyLowBaseHpPenalty(); + appliedLowBaseHpPenalty = true; } } @@ -219,16 +224,22 @@ namespace GeometryTD.CustomComponent resourceManager.AddSettlementGold(settlementGold); } - private static bool ApplyLowBaseHpPenalty() + private static int ApplyDeferredSettlementPenalty(CombatSettlementContext settlementContext) { + if (settlementContext == null || + !settlementContext.ShouldApplyLowBaseHpPenalty || + settlementContext.LowBaseHpEndurancePenaltyValue <= 0f) + { + return 0; + } + PlayerInventoryComponent inventory = GameEntry.PlayerInventory; if (inventory == null) { - return false; + return 0; } - int affectedTowerCount = inventory.ReduceAllTowerEndurance(LowBaseHpTowerEndurancePenalty); - return affectedTowerCount > 0; + return inventory.ReduceAllTowerEndurance(settlementContext.LowBaseHpEndurancePenaltyValue); } private static bool TryAppendRewardComponent(BackpackInventoryData rewardInventory, TowerCompItemData selectedItem) diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFailedState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFailedState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFailedState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFailedState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFinishFormState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFinishFormState.cs similarity index 94% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFinishFormState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFinishFormState.cs index 07d6985..c455e96 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFinishFormState.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFinishFormState.cs @@ -20,7 +20,6 @@ namespace GeometryTD.CustomComponent Scheduler.EnsureCombatFinishFormUseCaseBound(); Scheduler._settlementFlowService.OpenCombatFinishForm( Scheduler._settlementContext, - Scheduler._combatInRunResourceManager, Scheduler._combatFinishFormUseCase); Scheduler.ChangeState(new CombatWaitingForReturnState(Scheduler)); } diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFinishFormState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFinishFormState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatFinishFormState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFinishFormState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatLoadingState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatLoadingState.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatLoadingState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatLoadingState.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatLoadingState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatLoadingState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatLoadingState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatLoadingState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRewardSelectionState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRewardSelectionState.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRewardSelectionState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRewardSelectionState.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRewardSelectionState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRewardSelectionState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRewardSelectionState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRewardSelectionState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRunningPhaseState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRunningPhaseState.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRunningPhaseState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRunningPhaseState.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRunningPhaseState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRunningPhaseState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatRunningPhaseState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatRunningPhaseState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatSettlementState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatSettlementState.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatSettlementState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatSettlementState.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatSettlementState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatSettlementState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatSettlementState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatSettlementState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatStateBase.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatStateBase.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatStateBase.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatStateBase.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatStateBase.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatStateBase.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatStateBase.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatStateBase.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForPhaseEndState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForPhaseEndState.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForPhaseEndState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForPhaseEndState.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForPhaseEndState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForPhaseEndState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForPhaseEndState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForPhaseEndState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForReturnState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForReturnState.cs similarity index 91% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForReturnState.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForReturnState.cs index f6cf190..eef5d28 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForReturnState.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForReturnState.cs @@ -28,7 +28,7 @@ namespace GeometryTD.CustomComponent Scheduler._loadSession.Cleanup(); Scheduler.CloseCombatFinishForm(); Scheduler.CloseRewardSelectForm(); - Scheduler.CompleteCombatAndNotify(Scheduler._isFinishAsVictory); + Scheduler.CompleteNormalCombatAndNotify(Scheduler._isFinishAsVictory); } } } diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForReturnState.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForReturnState.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatStates/CombatWaitingForReturnState.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatWaitingForReturnState.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop.meta new file mode 100644 index 0000000..2c802d4 --- /dev/null +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f2ff98d705436042b48a4c56d982411 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveContext.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveContext.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveContext.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveContext.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveContext.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveContext.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveContext.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveContext.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveResult.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveResult.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveResult.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveResult.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveResult.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveResult.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolveResult.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolveResult.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolver.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolver.cs similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolver.cs rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolver.cs diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolver.cs.meta b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolver.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDropResolver.cs.meta rename to Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolver.cs.meta diff --git a/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatFinishFormUseCase.cs b/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatFinishFormUseCase.cs index 55eb122..22c81fc 100644 --- a/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatFinishFormUseCase.cs +++ b/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatFinishFormUseCase.cs @@ -8,9 +8,7 @@ namespace GeometryTD.UI public class CombatFinishFormUseCase : IUIUseCase { private CombatScheduler _combatScheduler; - private int _defeatedEnemyCount; - private int _gainedGold; - private BackpackInventoryData _rewardInventory; + private CombatSettlementContext _settlementContext; private bool _isSummaryPrepared; public CombatFinishFormRawData CreateInitialModel() @@ -23,11 +21,9 @@ namespace GeometryTD.UI return BuildModel(); } - public void SetSummary(int defeatedEnemyCount, int gainedGold, BackpackInventoryData rewardInventory = null) + internal void SetSummary(CombatSettlementContext settlementContext) { - _defeatedEnemyCount = Mathf.Max(0, defeatedEnemyCount); - _gainedGold = Mathf.Max(0, gainedGold); - _rewardInventory = rewardInventory; + _settlementContext = settlementContext; _isSummaryPrepared = true; } @@ -45,12 +41,10 @@ namespace GeometryTD.UI { if (!_isSummaryPrepared) { - _defeatedEnemyCount = 0; - _gainedGold = 0; - _rewardInventory = null; + _settlementContext = null; } - BackpackInventoryData rewardInventory = _rewardInventory; + BackpackInventoryData rewardInventory = _settlementContext?.RewardInventory; if (rewardInventory == null) { rewardInventory = InventorySeedUtility.CreateSampleInventory(); @@ -58,8 +52,8 @@ namespace GeometryTD.UI return new CombatFinishFormRawData { - DefeatedEnemyCount = _defeatedEnemyCount, - GainedGold = _gainedGold, + DefeatedEnemyCount = Mathf.Max(0, _settlementContext?.DefeatedEnemyCount ?? 0), + GainedGold = Mathf.Max(0, _settlementContext?.GainedGold ?? 0), RewardInventory = rewardInventory, CanReturn = true };