예제 #1
0
        public void Start(bool shufflePlayers = false)
        {
            if (PlayerCount < GameConfig.MinPlayer || PlayerCount > GameConfig.MaxPlayer)
            {
                throw new InvalidOperationException("Invalid player count");
            }

            if (shufflePlayers)
            {
                Players = ShufflePlayers(Players);
            }
            _governor = Players.First();
            CurrentRoleOwnerPlayer = _governor;

            PlantationDeck = new PlantationDeck(PlayerCount, RandomSeed);

            var colonistCount = GameConfig.ColonistCount[PlayerCount];

            Colonists = new Stack <Colonist>(colonistCount);
            for (var i = 0; i < colonistCount; i++)
            {
                Colonists.Push(new Colonist());
            }

            Quarries = new Stack <Quarry>(GameConfig.QuarryCount);
            for (var i = 0; i < GameConfig.QuarryCount; i++)
            {
                Quarries.Push(new Quarry());
            }

            Buildings         = InitializeBuildings();
            ColonistShip      = new ColonistShip(this);
            Goods             = InitializeGoods();
            CargoShips        = InitializeCargoShips(PlayerCount);
            VictoryPointChips = InitializeVictoryPointChips(PlayerCount);
            Roles             = InitializeRoles(PlayerCount, this);

            InitializePlayerDoubloons(Players);
            InitializePlayerPlantations(Players, PlantationDeck);

            Status = GameStatus.RUNNING;
        }
 public static ColonistShipDto Create(ColonistShip colonistShip)
 {
     return(new ColonistShipDto {
         ColonistCount = colonistShip.ColonistCount
     });
 }