Example #1
0
        //Validates that the player can afford the requested advancements
        public bool CheckPlayerCanAffordAdvancements(int[] advancements)
        {
            //Gather discount information
            int artDiscount      = ActiveCiv.GetTotalArtCredit();
            int civicDiscount    = ActiveCiv.GetTotalCivicCredit();
            int craftDiscount    = ActiveCiv.GetTotalCraftCredit();
            int religionDiscount = ActiveCiv.GetTotalReligionCredit();
            int scienceDiscount  = ActiveCiv.GetTotalScienceCredit();
            int specificDiscount = 0;

            int totalPrice = 0;

            //For each advancement the player wishes to buy...
            foreach (int advancementId in advancements)
            {
                Advancement candidateAdvance = GameContext.Advancements.Find(advancementId);

                //Get any discounts for specifically this advance
                specificDiscount = ActiveCiv.GetDiscountForAdvancement(candidateAdvance);

                totalPrice += candidateAdvance.GetDiscountedPrice(
                    artDiscount,
                    civicDiscount,
                    craftDiscount,
                    religionDiscount,
                    scienceDiscount,
                    specificDiscount
                    );
            }

            //Return whether the total price is less than or equal to the spending limit
            return(totalPrice <= ActiveCiv.SpendLimit);
        }
        public void CanGetDiscountedPrice(int baseCost, bool[] categories, int[] discounts, int expectedPrice)
        {
            Advancement advancement = new Advancement
            {
                BaseCost   = baseCost,
                IsArt      = categories[0],
                IsCivic    = categories[1],
                IsCraft    = categories[2],
                IsReligion = categories[3],
                IsScience  = categories[4],
            };

            int actualPrice = advancement.GetDiscountedPrice(
                discounts[0],
                discounts[1],
                discounts[2],
                discounts[3],
                discounts[4],
                discounts[5]
                );

            Assert.Equal(expectedPrice, actualPrice);
        }