private GameState UpdateGameState(GameState currState) { Log("Updating the stats"); var gameState = currState ?? new GameState((o) => Log(o)); string[] inputs = null; for (int i = 0; i < 2; i++) { LifeBot botToWorkOn = i == 0 ? gameState.MyLifeBot : gameState.EnemyLifeBot; inputs = ReadLine().Split(' '); botToWorkOn.Target = inputs[0]; botToWorkOn.ETA = int.Parse(inputs[1]); botToWorkOn.Score = int.Parse(inputs[2]); botToWorkOn.StorageA = int.Parse(inputs[3]); botToWorkOn.StorageB = int.Parse(inputs[4]); botToWorkOn.StorageC = int.Parse(inputs[5]); botToWorkOn.StorageD = int.Parse(inputs[6]); botToWorkOn.StorageE = int.Parse(inputs[7]); botToWorkOn.ExpertiseA = int.Parse(inputs[8]); botToWorkOn.ExpertiseB = int.Parse(inputs[9]); botToWorkOn.ExpertiseC = int.Parse(inputs[10]); botToWorkOn.ExpertiseD = int.Parse(inputs[11]); botToWorkOn.ExpertiseE = int.Parse(inputs[12]); } inputs = ReadLine().Split(' '); gameState.AvailableA = int.Parse(inputs[0]); gameState.AvailableB = int.Parse(inputs[1]); gameState.AvailableC = int.Parse(inputs[2]); gameState.AvailableD = int.Parse(inputs[3]); gameState.AvailableE = int.Parse(inputs[4]); int sampleCount = int.Parse(Console.ReadLine()); Log($"Reading {sampleCount} samples"); gameState.Samples.Clear(); //Purge old stuff for (int i = 0; i < sampleCount; i++) { gameState.Samples.Add(ReadSample(ReadLine())); } //Update samples held by my bot gameState.MyLifeBot.SamplesWorkingOn = gameState.Samples.Where(s => s.Mine && s.Diagnosed).ToList(); gameState.MyLifeBot.SamplesAnalyzing = gameState.Samples.Where(s => s.Mine && !s.Diagnosed).ToList(); Log("Retrieved gamestate"); return(gameState); }
public GameState(Action <object> log) : base(log) { MyLifeBot = new ControllableLifeBot(log); EnemyLifeBot = new LifeBot(log); }