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