public GameProcessorTests() { var collisionMapProcessor = new Mock <ICollisionMapProcessor>(); _gameProcessor = new GameProcessor(new FrameProcessor(new OutcomeProcessor(new OutcomeScoreProcessor()), collisionMapProcessor.Object)); _sourceGame = new Game(); _sourceGame.Id = "test123"; var snake = new Snake { Ang = 0 }; _sourceGame.Frames = new List <SlitherFrame>(); _sourceGame.Frames.Add(new SlitherFrame { Kills = 0, SnakeLength = 10, Time = DateTimeOffset.Now.ToUnixTimeMilliseconds() - 60000, Snake = snake }); _sourceGame.Frames.Add(new SlitherFrame { Kills = 0, SnakeLength = 50, Time = DateTimeOffset.Now.ToUnixTimeMilliseconds() - 30000, Snake = snake }); _sourceGame.Frames.Add(new SlitherFrame { Kills = 2, SnakeLength = 105, Time = DateTimeOffset.Now.ToUnixTimeMilliseconds(), Snake = snake }); _processedGame = _gameProcessor.ProcessGame(_sourceGame); }
public static void AddGame(ProcessedGame processedGame) { Games.Add(processedGame); string json = JsonConvert.SerializeObject(processedGame, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto, NullValueHandling = NullValueHandling.Ignore, }); File.WriteAllText(DatabaseFolder + "\\" + processedGame.SourceId + ".json", json, Encoding.UTF8); }
private ActionResult GetActionResult(int millisecondsToAction, ProcessedGame game, int frameIndex) { int framesAhead = 1; var angle = game.Frames[frameIndex + framesAhead].SnakeAngle; var sprint = game.Frames[frameIndex + framesAhead].SnakeSprinting; while (game.Frames.Count > frameIndex + framesAhead && game.Frames[frameIndex + framesAhead].Time - game.Frames[frameIndex].Time < millisecondsToAction) { angle = game.Frames[frameIndex + framesAhead].SnakeAngle; sprint = game.Frames[frameIndex + framesAhead].SnakeSprinting; framesAhead++; } return(new ActionResult { Angle = game.Frames[frameIndex].SnakeAngle - angle, Sprinting = sprint }); }
public ProcessedGame ProcessGame(Game game) { var processedGame = new ProcessedGame(); processedGame.SourceId = game.Id; var lastFrame = game.Frames.Last(); processedGame.SnakeKills = lastFrame.Kills; processedGame.SnakeLength = lastFrame.SnakeLength; processedGame.GameLength = lastFrame.Time - game.Frames.First().Time; processedGame.Frames = new List <ProcessedFrame>(); for (int index = 0; index < game.Frames.Count; index++) { processedGame.Frames.Add(_frameProcessor.ProcessFrame(game.Frames, index)); } return(processedGame); }