using GeometryTD.CustomComponent; using GeometryTD.CustomUtility; using GeometryTD.Definition; using UnityEngine; namespace GeometryTD.UI { public class CombatFinishFormUseCase : IUIUseCase { private ICombatSchedulerHost _combatSchedulerHost; 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; } internal CombatFinishFormUseCase(ICombatSchedulerHost combatSchedulerHost) { _combatSchedulerHost = combatSchedulerHost; } public bool TryReturnToMenu() { return _combatSchedulerHost != null && _combatSchedulerHost.OnCombatFinishReturnRequested(); } private CombatFinishFormRawData BuildModel() { if (!_isSummaryPrepared) { _settlementContext = null; } BackpackInventoryData rewardInventory = _settlementContext?.Summary.RewardInventory; if (rewardInventory == null) { rewardInventory = InventorySeedUtility.CreateSampleInventory(); } return new CombatFinishFormRawData { DefeatedEnemyCount = Mathf.Max(0, _settlementContext?.Summary.DefeatedEnemyCount ?? 0), GainedGold = Mathf.Max(0, _settlementContext?.Summary.GainedGold ?? 0), RewardInventory = rewardInventory, CanReturn = true }; } } }