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