예제 #1
0
        public override int CalculateEndGameBonus(PlayerBoard playerBoard)
        {
            if (Occupation.All(p => p != true))
            {
                return(0);
            }

            return(playerBoard.VictoryPoints % 4);
        }
예제 #2
0
        public override int CalculateEndGameBonus(PlayerBoard playerBoard)
        {
            if (Occupation.All(p => p != true))
            {
                return(0);
            }

            return(playerBoard.CitySpaces.Count(p => p is SpecialBuildingTile || p is LargeBuildingTile));
        }
예제 #3
0
        public override int CalculateEndGameBonus(PlayerBoard playerBoard)
        {
            if (Occupation.All(p => p != true))
            {
                return(0);
            }

            var colonistsOnBuildingTilesCount = playerBoard.CitySpaces.Sum(p => p.Occupation.Count(c => c));
            var colonistsOnIslandTilesCount   = playerBoard.IslandSpaces.Count(p => p.Occupied);
            var totalColonistsCount           = colonistsOnIslandTilesCount + colonistsOnBuildingTilesCount +
                                                playerBoard.Colonists;

            return(totalColonistsCount % 3);
        }
예제 #4
0
        public override int CalculateEndGameBonus(PlayerBoard playerBoard)
        {
            if (Occupation.All(p => p != true))
            {
                return(0);
            }

            var smallProductionBuildingBonus =
                playerBoard.CitySpaces.Count(p => p is SmallIndigoPlant || p is SmallSugarMill);
            var largeProductionBuildingBonus =
                playerBoard.CitySpaces.Count(
                    p => p is LargeIndigoPlant || p is LargeSugarMill || p is TobaccoStorage || p is CoffeeRoaster) * 2;

            return(smallProductionBuildingBonus + largeProductionBuildingBonus);
        }