public IGameRules?TryGetRules(ApiGameType gameType) { return(gameType switch { ApiGameType.AttackDefense => new DefaultAttackDefenseGameRules(ThreadLocalRandom.Instance), _ when tutorials.TryGetValue(gameType, out var level) => level.CreateRules(), _ => null });
public TutorialGameRules( ApiGameType gameType, int maxTickCount, bool finishOnAttackerDeath, int?planetRadius, int?planetSafeRadius, ApiShip[] initialAttackerShips, ApiShip[] initialDefenderShips) { GameType = gameType; this.maxTickCount = maxTickCount; this.finishOnAttackerDeath = finishOnAttackerDeath; this.initialAttackerShips = initialAttackerShips; this.initialDefenderShips = initialDefenderShips; planet = planetRadius == null ? null : new Planet(planetRadius.Value, planetSafeRadius ?? throw new InvalidOperationException()); }