74 lines
2.3 KiB
C#
74 lines
2.3 KiB
C#
using GeometryTD.CustomComponent;
|
|
using GeometryTD.Definition;
|
|
using UnityEngine;
|
|
|
|
namespace GeometryTD.UI
|
|
{
|
|
public class CombatFinishFormUseCase : IUIUseCase
|
|
{
|
|
private readonly RepoFormUseCase _repoFormUseCase = new RepoFormUseCase();
|
|
private CombatScheduler _combatScheduler;
|
|
private int _defeatedEnemyCount;
|
|
private int _gainedGold;
|
|
private BackpackInventoryData _rewardInventory;
|
|
private bool _isSummaryPrepared;
|
|
|
|
public CombatFinishFormRawData CreateInitialModel()
|
|
{
|
|
return BuildModel();
|
|
}
|
|
|
|
public CombatFinishFormRawData TryRefresh()
|
|
{
|
|
return BuildModel();
|
|
}
|
|
|
|
public void SetSummary(int defeatedEnemyCount, int gainedGold, BackpackInventoryData rewardInventory = null)
|
|
{
|
|
_defeatedEnemyCount = Mathf.Max(0, defeatedEnemyCount);
|
|
_gainedGold = Mathf.Max(0, gainedGold);
|
|
_rewardInventory = rewardInventory;
|
|
_isSummaryPrepared = true;
|
|
}
|
|
|
|
public CombatFinishFormUseCase(CombatScheduler combatScheduler)
|
|
{
|
|
this._combatScheduler = combatScheduler;
|
|
}
|
|
|
|
public bool TryReturnToMenu()
|
|
{
|
|
return _combatScheduler.OnCombatFinishReturnRequested();
|
|
}
|
|
|
|
private CombatFinishFormRawData BuildModel()
|
|
{
|
|
if (!_isSummaryPrepared)
|
|
{
|
|
_defeatedEnemyCount = GameEntry.CombatNode != null
|
|
? Mathf.Max(0, GameEntry.CombatNode.LastDefeatedEnemyCount)
|
|
: 0;
|
|
_gainedGold = GameEntry.CombatNode != null
|
|
? Mathf.Max(0, GameEntry.CombatNode.LastGainedGold)
|
|
: 0;
|
|
_rewardInventory = null;
|
|
}
|
|
|
|
BackpackInventoryData rewardInventory = _rewardInventory;
|
|
if (rewardInventory == null)
|
|
{
|
|
RepoFormRawData repoRawData = _repoFormUseCase.CreateInitialModel();
|
|
rewardInventory = repoRawData != null ? repoRawData.Inventory : null;
|
|
}
|
|
|
|
return new CombatFinishFormRawData
|
|
{
|
|
DefeatedEnemyCount = _defeatedEnemyCount,
|
|
GainedGold = _gainedGold,
|
|
RewardInventory = rewardInventory,
|
|
CanReturn = true
|
|
};
|
|
}
|
|
}
|
|
}
|