protected GameLogic NewLogic(params LambdaRobot[] robots) { var game = NewGame(); game.Robots.AddRange(robots); for (var i = 0; i < game.Robots.Count; ++i) { game.Robots[i].Index = i; } _provider = new GameDependencyProvider( game, new Random(100), async robot => new LambdaRobotBuild { Name = robot.Id }, async robot => { // destructively fetch next action from dictionary or null if none exist if (_robotActions.TryGetValue(robot.Id, out var actions) && (actions?.Any() ?? false)) { var action = actions.First(); actions.RemoveAt(0); return(action()); } return(new LambdaRobotAction()); } ); return(new GameLogic(_provider)); }
protected GameLogic NewLogic(params BotInfo[] bots) { var game = NewGameSession(); game.Bots.AddRange(bots); for (var i = 0; i < game.Bots.Count; ++i) { game.Bots[i].Index = i; } _provider = this; return(new GameLogic(game, _provider)); }
//--- Constructors --- public GameLogic(IGameDependencyProvider provider) { _provider = provider ?? throw new ArgumentNullException(nameof(provider)); }
//--- Constructors --- public GameLogic(GameSession gameSession, IGameDependencyProvider provider) { GameSession = gameSession ?? throw new ArgumentNullException(nameof(gameSession)); _provider = provider ?? throw new ArgumentNullException(nameof(provider)); }