using GeometryTD.CustomComponent; using GeometryTD.CustomUtility; using GeometryTD.Definition; using UnityEngine; namespace GeometryTD.UI { public class CombatFinishFormUseCase : IUIUseCase { private CombatScheduler _combatScheduler; private int _defeatedEnemyCount; private int _gainedGold; private BackpackInventoryData _rewardInventory; private bool _isSummaryPrepared; public CombatFinishFormRawData CreateInitialModel() { return BuildModel(); } public CombatFinishFormRawData TryRefresh() { return BuildModel(); } public void SetSummary(int defeatedEnemyCount, int gainedGold, BackpackInventoryData rewardInventory = null) { _defeatedEnemyCount = Mathf.Max(0, defeatedEnemyCount); _gainedGold = Mathf.Max(0, gainedGold); _rewardInventory = rewardInventory; _isSummaryPrepared = true; } public CombatFinishFormUseCase(CombatScheduler combatScheduler) { this._combatScheduler = combatScheduler; } public bool TryReturnToMenu() { return _combatScheduler.OnCombatFinishReturnRequested(); } private CombatFinishFormRawData BuildModel() { if (!_isSummaryPrepared) { _defeatedEnemyCount = 0; _gainedGold = 0; _rewardInventory = null; } BackpackInventoryData rewardInventory = _rewardInventory; if (rewardInventory == null) { rewardInventory = InventorySeedUtility.CreateSampleInventory(); } return new CombatFinishFormRawData { DefeatedEnemyCount = _defeatedEnemyCount, GainedGold = _gainedGold, RewardInventory = rewardInventory, CanReturn = true }; } } }