public void PrepareNewGame(List <UnityPlayer> players, int seed) { _players = players.Cast <Player>().ToList(); var mapGenerator = new GameMapGenerator(_players); _gameMap = mapGenerator.GenerateGameMap(seed); }
public void PrepareNewGame(List <UnityPlayer> players, int seed) { var mapGenerator = new GameMapGenerator <UnityPlayer>(players); _gameMap = mapGenerator.GenerateGameMap(seed); _players = players; }
/// <summary> /// Prepares a new game. This will generate a new game map with the provided seed, and register all of the players on the game map /// </summary> /// <param name="players">The players to register</param> /// <param name="seed">The seed for this map</param> /// <exception cref="MapUnsuitableException">Will throw an exception if the seed produces an unsuitable map</exception> public void PrepareGame(List <Player> players, int seed) { var seedGenerator = new Random(seed); var randomSeed = seedGenerator.Next(); var generationOk = false; while (!generationOk) { Logger.LogInfo("Trying seed " + randomSeed + "..."); try { var mapGenerator = new GameMapGenerator <Player>(players); _gameMap = mapGenerator.GenerateGameMap(randomSeed); generationOk = true; } catch (MapUnsuitableException ex) { Logger.LogException("Map not suitable with seed, trying a new one.", ex); randomSeed = seedGenerator.Next(); } } _players = players; _currentRound = 0; foreach (var player in _players) { player.CommandListener += player_CommandListener; } Logger.LogInfo("\tOK!"); using (var enumerator = _gameMap.GetEnumerator()) { while (enumerator.MoveNext()) { if (enumerator.Current == null) { continue; } var block = enumerator.Current.Entity as DestructibleWallEntity; if (block != null) { _playerKillPoints += Settings.Default.PointsWall; } } } //Players should only get slightly more points vs points obtained from destroying walls _playerKillPoints /= players.Count; }