Esempio n. 1
0
        public static void LogFinancialStatus(GameEntity company, GameContext gameContext)
        {
            var balance = Economy.BalanceOf(company);
            var profit  = Economy.GetProfit(gameContext, company);

            Log(company, $"Financial report: balance={Format.Money(balance)}, profit={Format.Money(profit)}");
        }
Esempio n. 2
0
        public static void PayDividends(GameContext gameContext, GameEntity company)
        {
            int dividendSize = 33;
            var balance      = Economy.BalanceOf(company);

            var dividends = balance * dividendSize / 100;

            PayDividends(gameContext, company, dividends);
        }
Esempio n. 3
0
        public static IEnumerable <ChannelInfo> GetMaintainableMarketingChannels(GameEntity product, GameContext gameContext)
        {
            var payer   = product.isFlagship ? Companies.GetPlayerCompany(gameContext) : product;
            int periods = product.isFlagship ? 10 * 4 : 1;

            var profit      = Economy.GetProfit(gameContext, payer);
            var spareBudget = profit;

            var channels = new List <ChannelInfo>();

            var allChannels  = GetAllMarketingChannels(product).OrderBy(c => Marketing.GetChannelCost(product, c.ID)).ToList();
            var spareBudget2 = Economy.BalanceOf(payer); // spareBudget +

            if (profit < 0)
            {
                spareBudget2 += profit;
            }

            for (var i = 0; i < allChannels.Count(); i++)
            {
                var c      = allChannels[i];
                var adCost = Marketing.GetChannelCost(product, c.ID);

                if (Marketing.IsActiveInChannel(product, c.ID) || adCost == 0)
                {
                    channels.Add(c);
                    continue;
                }

                // 5, cause some channels take too much time to recover
                if (adCost > spareBudget2)
                {
                    if (product.isFlagship)
                    {
                        //Debug.Log("not enough money for " + c.ID + " " + Format.Money(adCost * 3) + " spare=" + Format.Money(spareBudget2));
                    }
                    break;
                }

                channels.Add(c);
                spareBudget2 -= adCost;
            }

            return(channels);

            return(allChannels
                   .Where(IsCanMaintainChannel(product, spareBudget))
                   );
        }