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