using GeometryTD.Definition; namespace GeometryTD.CustomComponent { internal sealed class CombatSettlementContext { public CombatSettlementFlowState Flow { get; } = new(); public CombatSettlementResult Result { get; } = new(); public CombatSettlementSummary Summary { get; } = new(); } internal sealed class CombatSettlementFlowState { public bool ShouldOpenRewardSelection; public bool DidEnterRewardSelection; public bool IsCommitted; } internal sealed class CombatSettlementResult { public bool IsVictory; public int FinalCoin; public int FinalBaseHp; public int MaxBaseHp; public int DefeatedEnemyCount; public int GainedGold; public BackpackInventoryData RewardInventory; public string Reason; public CombatSettlementPenaltyResult Penalty { get; } = new(); } internal sealed class CombatSettlementPenaltyResult { public bool ShouldApplyLowBaseHpPenalty; public float LowBaseHpEndurancePenaltyValue; public int AffectedTowerCount; } internal sealed class CombatSettlementSummary { public int DefeatedEnemyCount; public int GainedGold; public BackpackInventoryData RewardInventory; } }