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