using GeometryTD.Definition; namespace GeometryTD.CustomComponent { internal static class PhaseEndConditionFactory { private static readonly IPhaseEndCondition None = new NonePhaseEndCondition(); private static readonly IPhaseEndCondition TimeElapsed = new TimeElapsedPhaseEndCondition(); private static readonly IPhaseEndCondition EnemiesCleared = new EnemiesClearedPhaseEndCondition(); private static readonly IPhaseEndCondition BossDead = new BossDeadPhaseEndCondition(); public static IPhaseEndCondition Create(PhaseEndType endType) { return endType switch { PhaseEndType.TimeElapsed => TimeElapsed, PhaseEndType.EnemiesCleared => EnemiesCleared, PhaseEndType.BossDead => BossDead, PhaseEndType.None => None, _ => None }; } } }