public async Task <ActionResult> CreateGameMap(GameMapDto gameMap) { var gameMapEntity = _mapper.Map <GameMap>(gameMap); var lines = gameMap.Map.Length; var columns = gameMap.Map[0].Length; gameMapEntity.IsActive = true; gameMapEntity.CreatedTime = DateTime.Now; gameMapEntity.Height = lines; gameMapEntity.Width = columns; var noObstacles = 0; for (var i = 0; i < lines; i++) { for (var j = 0; j < columns; ++j) { if (gameMap.Map[i][j] == 1) { noObstacles++; } } } gameMapEntity.NoObstacles = noObstacles; var newGameMap = await _gameMapRepository.Add(gameMapEntity); if (newGameMap == null) { return(BadRequest("Unable to insert game map")); } return(CreatedAtRoute("GetMap", new { gameMapId = newGameMap.GameMapId }, newGameMap)); }
public async Task <ActionResult> UpdateGameMap(int gameMapId, [FromBody] GameMapDto gameMap) { var dbGameMap = _mapper.Map <GameMap>(gameMap); var updated = await _gameMapRepository.UpdateAsync(dbGameMap, gameMapId); if (updated == null) { return(NotFound()); } return(CreatedAtRoute("GetMap", new { gameMapId = updated.GameMapId }, updated)); }
public async Task <ActionResult> GenerateGameMap(int lines, int columns, int obstacles) { if (obstacles > lines * columns) { return(BadRequest("Unable to generate game map, too many obstacles")); } if (lines <= 0 || columns <= 0) { return(BadRequest("Unable to generate game map, lines and columns must be > 0")); } var gameMap = new GameMapDto { Map = new int[lines][], NoObstacles = obstacles, Height = lines, Width = columns }; for (var i = 0; i < lines; ++i) { gameMap.Map[i] = new int[columns]; } var generatedObstacles = 0; while (generatedObstacles < obstacles) { var random = new Random(); var x = random.Next(lines); var y = random.Next(columns); if (gameMap.Map[x][y] == 1) { continue; } gameMap.Map[x][y] = 1; ++generatedObstacles; } var gameMapEntity = _mapper.Map <GameMap>(gameMap); gameMapEntity.IsActive = true; gameMapEntity.CreatedTime = DateTime.Now; var newGameMap = await _gameMapRepository.Add(gameMapEntity); if (newGameMap == null) { return(BadRequest("Unable to generate game map")); } return(CreatedAtRoute("GetMap", new { gameMapId = newGameMap.GameMapId }, newGameMap)); }