Ejemplo n.º 1
0
        public void PrepareNewGame(List <UnityPlayer> players, int seed)
        {
            _players = players.Cast <Player>().ToList();
            var mapGenerator = new GameMapGenerator(_players);

            _gameMap = mapGenerator.GenerateGameMap(seed);
        }
Ejemplo n.º 2
0
        public void PrepareNewGame(List <UnityPlayer> players, int seed)
        {
            var mapGenerator = new GameMapGenerator <UnityPlayer>(players);

            _gameMap = mapGenerator.GenerateGameMap(seed);
            _players = players;
        }
Ejemplo n.º 3
0
        /// <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;
        }