geometry-tower-defense/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatFinishFormUseCase.cs

63 lines
1.8 KiB
C#

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
};
}
}
}