Пример #1
0
        private void ExecuteBonusProduction(BonusProduction bonusProduction, IPlayer player)
        {
            if (!_isProducedByRoleOwner[bonusProduction.GoodType])
            {
                throw new GameException($"{bonusProduction.GoodType} was not produced");
            }

            var zeroOrOneGoodList = Game.Goods.Where(g => g.Type == bonusProduction.GoodType).Take(1).ToList();

            Game.Goods.RemoveAll(zeroOrOneGoodList.Contains);
            player.AddGoods(zeroOrOneGoodList);
            SetPlayerPhase(player, EndedPhase);
        }
Пример #2
0
        private int Produce <TGood>(IPlayer player) where TGood : IGood
        {
            var countOfWorkingPlantation = GetCountOfWorkingPlantationOfType <TGood>(player);
            var sumOfBuildingWorkers     = typeof(TGood) == typeof(Corn)
                ? countOfWorkingPlantation
                : GetSumOfBuildingWorkersOfType <TGood>(player);

            var producedBarrels =
                Game.Goods.OfType <TGood>().Take(Math.Min(sumOfBuildingWorkers, countOfWorkingPlantation))
                .Select(g => g as IGood).ToList();

            Game.Goods.RemoveAll(producedBarrels.Contains);
            player.AddGoods(producedBarrels);
            return(producedBarrels.Count);
        }