文件迁移
This commit is contained in:
parent
ab7c7172b8
commit
3badbe9212
|
|
@ -237,7 +237,6 @@ namespace GeometryTD.CustomComponent
|
|||
LastGainedCoin = _combatScheduler.GainedCoin;
|
||||
LastGainedGold = _combatScheduler.GainedGold;
|
||||
CurrentLevel = null;
|
||||
GameEntry.Event.Fire(this, NodeCompleteEventArgs.Create());
|
||||
}
|
||||
|
||||
public bool TryEndCombatByPlayer()
|
||||
|
|
|
|||
|
|
@ -387,7 +387,7 @@ namespace GeometryTD.CustomComponent
|
|||
GameEntry.UIRouter.CloseUI(UIFormType.RewardSelectForm);
|
||||
}
|
||||
|
||||
private void CompleteCombatAndNotify(bool succeeded)
|
||||
private void CompleteCombat(bool succeeded)
|
||||
{
|
||||
_isCompleted = true;
|
||||
_currentState = null;
|
||||
|
|
@ -395,6 +395,12 @@ namespace GeometryTD.CustomComponent
|
|||
GameEntry.CombatNode?.OnCombatEndedByScheduler(succeeded);
|
||||
}
|
||||
|
||||
private void CompleteNormalCombatAndNotify(bool succeeded)
|
||||
{
|
||||
CompleteCombat(succeeded);
|
||||
GameEntry.Event.Fire(this, NodeCompleteEventArgs.Create());
|
||||
}
|
||||
|
||||
private bool HandleStartFailure(string errorMessage)
|
||||
{
|
||||
Log.Warning("{0}", errorMessage);
|
||||
|
|
@ -497,7 +503,7 @@ namespace GeometryTD.CustomComponent
|
|||
|
||||
private void GameOverByFailure()
|
||||
{
|
||||
CompleteCombatAndNotify(false);
|
||||
CompleteCombat(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,10 +4,18 @@ namespace GeometryTD.CustomComponent
|
|||
{
|
||||
internal sealed class CombatSettlementContext
|
||||
{
|
||||
public bool IsVictory;
|
||||
public int FinalCoin;
|
||||
public int FinalBaseHp;
|
||||
public int MaxBaseHp;
|
||||
public int DefeatedEnemyCount;
|
||||
public int GainedGold;
|
||||
public BackpackInventoryData RewardInventory;
|
||||
public bool ShouldOpenRewardSelection;
|
||||
public bool DidEnterRewardSelection;
|
||||
public bool ShouldApplyLowBaseHpPenalty;
|
||||
public float LowBaseHpEndurancePenaltyValue;
|
||||
public int AffectedTowerCount;
|
||||
public bool IsCommitted;
|
||||
public string Reason;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,12 +39,20 @@ namespace GeometryTD.CustomComponent
|
|||
|
||||
CombatSettlementContext settlementContext = new CombatSettlementContext
|
||||
{
|
||||
IsVictory = isVictory,
|
||||
FinalCoin = Mathf.Max(0, resourceManager != null ? resourceManager.CurrentCoin : 0),
|
||||
FinalBaseHp = currentBaseHp,
|
||||
MaxBaseHp = maxBaseHp,
|
||||
DefeatedEnemyCount = Mathf.Max(0, defeatedEnemyCount),
|
||||
GainedGold = Mathf.Max(0, resourceManager != null ? resourceManager.GainedGold : 0),
|
||||
RewardInventory = resourceManager != null
|
||||
? resourceManager.GetRewardInventorySnapshot()
|
||||
: new BackpackInventoryData(),
|
||||
ShouldOpenRewardSelection = shouldOpenFullBaseHpRewardSelect,
|
||||
DidEnterRewardSelection = false,
|
||||
ShouldApplyLowBaseHpPenalty = appliedLowBaseHpPenalty,
|
||||
LowBaseHpEndurancePenaltyValue = appliedLowBaseHpPenalty ? LowBaseHpTowerEndurancePenalty : 0f,
|
||||
AffectedTowerCount = 0,
|
||||
Reason = reason
|
||||
};
|
||||
|
||||
|
|
@ -72,6 +80,7 @@ namespace GeometryTD.CustomComponent
|
|||
BackpackInventoryData rewardInventory = settlementContext.RewardInventory ?? new BackpackInventoryData();
|
||||
GameEntry.PlayerInventory?.MergeInventory(rewardInventory);
|
||||
settlementContext.RewardInventory = rewardInventory;
|
||||
settlementContext.AffectedTowerCount = ApplyDeferredSettlementPenalty(settlementContext);
|
||||
settlementContext.IsCommitted = true;
|
||||
}
|
||||
|
||||
|
|
@ -133,6 +142,7 @@ namespace GeometryTD.CustomComponent
|
|||
return false;
|
||||
}
|
||||
|
||||
settlementContext.DidEnterRewardSelection = true;
|
||||
GameEntry.UIRouter.OpenUI(UIFormType.RewardSelectForm, rawData);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -149,7 +159,6 @@ namespace GeometryTD.CustomComponent
|
|||
|
||||
public void OpenCombatFinishForm(
|
||||
CombatSettlementContext settlementContext,
|
||||
CombatInRunResourceManager resourceManager,
|
||||
CombatFinishFormUseCase combatFinishFormUseCase)
|
||||
{
|
||||
if (settlementContext == null || combatFinishFormUseCase == null)
|
||||
|
|
@ -157,11 +166,7 @@ namespace GeometryTD.CustomComponent
|
|||
return;
|
||||
}
|
||||
|
||||
settlementContext.GainedGold = Mathf.Max(0, resourceManager != null ? resourceManager.GainedGold : settlementContext.GainedGold);
|
||||
combatFinishFormUseCase.SetSummary(
|
||||
settlementContext.DefeatedEnemyCount,
|
||||
settlementContext.GainedGold,
|
||||
settlementContext.RewardInventory);
|
||||
combatFinishFormUseCase.SetSummary(settlementContext);
|
||||
GameEntry.UIRouter.OpenUI(UIFormType.CombatFinishForm);
|
||||
}
|
||||
|
||||
|
|
@ -209,7 +214,7 @@ namespace GeometryTD.CustomComponent
|
|||
}
|
||||
else if (hpRate < MidBaseHpThreshold)
|
||||
{
|
||||
appliedLowBaseHpPenalty = ApplyLowBaseHpPenalty();
|
||||
appliedLowBaseHpPenalty = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -219,16 +224,22 @@ namespace GeometryTD.CustomComponent
|
|||
resourceManager.AddSettlementGold(settlementGold);
|
||||
}
|
||||
|
||||
private static bool ApplyLowBaseHpPenalty()
|
||||
private static int ApplyDeferredSettlementPenalty(CombatSettlementContext settlementContext)
|
||||
{
|
||||
if (settlementContext == null ||
|
||||
!settlementContext.ShouldApplyLowBaseHpPenalty ||
|
||||
settlementContext.LowBaseHpEndurancePenaltyValue <= 0f)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
PlayerInventoryComponent inventory = GameEntry.PlayerInventory;
|
||||
if (inventory == null)
|
||||
{
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int affectedTowerCount = inventory.ReduceAllTowerEndurance(LowBaseHpTowerEndurancePenalty);
|
||||
return affectedTowerCount > 0;
|
||||
return inventory.ReduceAllTowerEndurance(settlementContext.LowBaseHpEndurancePenaltyValue);
|
||||
}
|
||||
|
||||
private static bool TryAppendRewardComponent(BackpackInventoryData rewardInventory, TowerCompItemData selectedItem)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ namespace GeometryTD.CustomComponent
|
|||
Scheduler.EnsureCombatFinishFormUseCaseBound();
|
||||
Scheduler._settlementFlowService.OpenCombatFinishForm(
|
||||
Scheduler._settlementContext,
|
||||
Scheduler._combatInRunResourceManager,
|
||||
Scheduler._combatFinishFormUseCase);
|
||||
Scheduler.ChangeState(new CombatWaitingForReturnState(Scheduler));
|
||||
}
|
||||
|
|
@ -28,7 +28,7 @@ namespace GeometryTD.CustomComponent
|
|||
Scheduler._loadSession.Cleanup();
|
||||
Scheduler.CloseCombatFinishForm();
|
||||
Scheduler.CloseRewardSelectForm();
|
||||
Scheduler.CompleteCombatAndNotify(Scheduler._isFinishAsVictory);
|
||||
Scheduler.CompleteNormalCombatAndNotify(Scheduler._isFinishAsVictory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5f2ff98d705436042b48a4c56d982411
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -8,9 +8,7 @@ namespace GeometryTD.UI
|
|||
public class CombatFinishFormUseCase : IUIUseCase
|
||||
{
|
||||
private CombatScheduler _combatScheduler;
|
||||
private int _defeatedEnemyCount;
|
||||
private int _gainedGold;
|
||||
private BackpackInventoryData _rewardInventory;
|
||||
private CombatSettlementContext _settlementContext;
|
||||
private bool _isSummaryPrepared;
|
||||
|
||||
public CombatFinishFormRawData CreateInitialModel()
|
||||
|
|
@ -23,11 +21,9 @@ namespace GeometryTD.UI
|
|||
return BuildModel();
|
||||
}
|
||||
|
||||
public void SetSummary(int defeatedEnemyCount, int gainedGold, BackpackInventoryData rewardInventory = null)
|
||||
internal void SetSummary(CombatSettlementContext settlementContext)
|
||||
{
|
||||
_defeatedEnemyCount = Mathf.Max(0, defeatedEnemyCount);
|
||||
_gainedGold = Mathf.Max(0, gainedGold);
|
||||
_rewardInventory = rewardInventory;
|
||||
_settlementContext = settlementContext;
|
||||
_isSummaryPrepared = true;
|
||||
}
|
||||
|
||||
|
|
@ -45,12 +41,10 @@ namespace GeometryTD.UI
|
|||
{
|
||||
if (!_isSummaryPrepared)
|
||||
{
|
||||
_defeatedEnemyCount = 0;
|
||||
_gainedGold = 0;
|
||||
_rewardInventory = null;
|
||||
_settlementContext = null;
|
||||
}
|
||||
|
||||
BackpackInventoryData rewardInventory = _rewardInventory;
|
||||
BackpackInventoryData rewardInventory = _settlementContext?.RewardInventory;
|
||||
if (rewardInventory == null)
|
||||
{
|
||||
rewardInventory = InventorySeedUtility.CreateSampleInventory();
|
||||
|
|
@ -58,8 +52,8 @@ namespace GeometryTD.UI
|
|||
|
||||
return new CombatFinishFormRawData
|
||||
{
|
||||
DefeatedEnemyCount = _defeatedEnemyCount,
|
||||
GainedGold = _gainedGold,
|
||||
DefeatedEnemyCount = Mathf.Max(0, _settlementContext?.DefeatedEnemyCount ?? 0),
|
||||
GainedGold = Mathf.Max(0, _settlementContext?.GainedGold ?? 0),
|
||||
RewardInventory = rewardInventory,
|
||||
CanReturn = true
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue