63 lines
1.8 KiB
C#
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
|
|
};
|
|
}
|
|
}
|
|
}
|