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 ICombatSchedulerPort _combatSchedulerPort;
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(ICombatSchedulerPort combatSchedulerPort)
{
_combatSchedulerPort = combatSchedulerPort;
}
public bool TryReturnToMenu()
{
return _combatSchedulerPort != null && _combatSchedulerPort.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
};
}
}
}