Пример #1
0
            //public override bool isAvailable(Country country)
            //{
            //    MinPOlValue requested = this;
            //    if ((requested.ID == 4) && country.Science.IsInvented(Invention.Collectivism) && (country.serfdom == Serfdom.Brutal || country.serfdom == Serfdom.Allowed || country.serfdom == Serfdom.AbolishedAndNationalized))
            //        return true;
            //    else
            //    if ((requested.ID == 3) && country.Science.IsInvented(Invention.Banking) && (country.serfdom == Serfdom.Brutal || country.serfdom == Serfdom.Allowed || country.serfdom == Serfdom.AbolishedWithLandPayment))
            //        return true;
            //    else
            //    if ((requested.ID == 2) && (country.serfdom == Serfdom.Brutal || country.serfdom == Serfdom.Allowed || country.serfdom == Serfdom.Abolished))
            //        return true;
            //    else
            //        if ((requested.ID == 1) && (country.serfdom == Serfdom.Brutal || country.serfdom == Serfdom.Allowed))
            //        return true;
            //    else
            //    if ((requested.ID == 0))
            //        return true;
            //    else
            //        return false;
            //}

            public override Procent howIsItGoodForPop(PopUnit pop)
            {
                Procent result;

                if (pop.isStateCulture())
                {
                    result = new Procent(0f);//0.5f);
                }
                else
                {
                    //positive - more rights for minorities
                    int change = GetRelativeConservatism(pop.Country.minorityPolicy.typedValue);
                    //result = new Procent((change + PossibleStatuses.Count - 1) * 0.1f);
                    if (change > 0)
                    {
                        result = new Procent(0.3f);// 1f);
                    }
                    else
                    {
                        //result = new Procent((change + PossibleStatuses.Count - 1) * 0.1f /2f);
                        result = new Procent(0f);
                    }
                }
                return(result);
            }
Пример #2
0
 public void consolidatePops()
 {
     if (allPopUnits.Count > 14)
     //get some small pop and merge it into bigger
     {
         PopUnit popToMerge = getRandomPop((x) => x.getPopulation() < Options.PopSizeConsolidationLimit);
         //PopUnit popToMerge = getSmallerPop((x) => x.getPopulation() < Options.PopSizeConsolidationLimit);
         if (popToMerge != null)
         {
             PopUnit targetPop = this.getBiggerPop(x => x.isStateCulture() == popToMerge.isStateCulture() &&
                                                   x.popType == popToMerge.popType &&
                                                   x != popToMerge);
             if (targetPop != null)
             {
                 targetPop.mergeIn(popToMerge);
             }
         }
     }
 }
Пример #3
0
        public override void Refresh()
        {
            if (pop != null)
            {
                var sb = new StringBuilder();
                caption.text = pop.ToString();
                //sb.Append(pop);
                Artisans isArtisan = pop as Artisans;
                sb.Append("Population: ").Append(pop.population.Get());
                if (isArtisan != null)
                {
                    sb.Append(", Producing: ");
                    if (isArtisan.Type == null)
                    {
                        sb.Append("nothing");
                    }
                    else
                    {
                        sb.Append(isArtisan.Type.basicProduction.Product);
                    }
                }
                //if (Game.devMode)
                if (pop.Type == PopType.Aristocrats || pop.Type == PopType.Soldiers)
                {
                    sb.Append("\nGained: ").Append(pop.getGainGoodsThisTurn());
                }
                else
                {
                    sb.Append("\nProduced: ").Append(pop.getGainGoodsThisTurn());
                }
                if (pop.storage.isNotZero())
                {
                    if (pop.Type == PopType.Aristocrats)
                    {
                        sb.Append(", Storage: ").Append(pop.storage);
                    }
                    else
                    {
                        sb.Append(", Unsold: ").Append(pop.storage);
                    }
                }

                if (isArtisan != null)
                {
                    sb.Append("\nInput required: ");
                    foreach (Storage next in isArtisan.GetResurceInput())
                    {
                        sb.Append(next.get() * isArtisan.population.Get() / Population.PopulationMultiplier).Append(" ").Append(next.Product).Append(";");
                    }

                    sb.Append("\nStockpile:  ").Append(isArtisan.getInputProducts()).Append(", Resource availability: ").Append(isArtisan.getInputFactor());
                }

                //sb.Append("\nSent to market: ").Append(pop.getSentToMarket());  // hide it
                sb.Append("\nConsumed: ").Append(pop.getConsumed().ToString(", "));


                // loyalty part
                sb.Append("\n\nCash: ").Append(pop.Cash);
                if (pop.loans.isNotZero())
                {
                    sb.Append("\nLoan: ").Append(pop.loans);// hide it
                }
                if (pop.deposits.isNotZero())
                {
                    sb.Append("\nDeposit: ").Append(pop.deposits);// hide it
                }
                sb.Append("\n\nNeeds fulfilled (total): ").Append(pop.needsFulfilled);
                sb.Append("\nLoyalty: ").Append(pop.loyalty);
                if (pop.getMovement() != null)
                {
                    sb.Append("\nMember of ").Append(pop.getMovement());
                }

                //rest part
                sb.Append("\n\nSeeks job: ").Append(pop.GetSeekingJob());
                sb.Append("\nEducation: ").Append(pop.Education);
                sb.Append("\nCulture: ").Append(pop.culture);
                if (!pop.isStateCulture())
                {
                    sb.Append(", minority");
                }

                if (Game.devMode)
                {
                    sb.Append("\n\nAge: ").Append(pop.getAge());
                }
                sb.Append("\nMobilized: ").Append(pop.getMobilized());



                //if (Game.devMode)
                //    sb.Append("\nConsumedLT: ").Append(pop.getConsumedLastTurn()).Append(" cost: ").Append(Country.market.getCost(pop.getConsumedLastTurn())
                //        ).Append("\nConsumedIM: ").Append(pop.getConsumedInMarket()).Append(" cost: ").Append(Country.market.getCost(pop.getConsumedInMarket()));

                generaltext.text = sb.ToString();

                sb.Clear();
                sb.Append("Life needs: ").Append(pop.getLifeNeedsFullfilling()).Append(" fulfilled");
                lifeNeedsText.GetComponent <ToolTipHandler>().SetTextDynamic(() => " Life needs wants:\n" + pop.population.getRealLifeNeeds().ToString("\n"));
                lifeNeedsText.text = sb.ToString();

                sb.Clear();
                sb.Append("Everyday needs: ").Append(pop.getEveryDayNeedsFullfilling()).Append(" fulfilled");
                everyDayNeedsText.GetComponent <ToolTipHandler>().SetTextDynamic(() => "Everyday needs wants:\n" + pop.population.getRealEveryDayNeeds().ToString("\n"));
                everyDayNeedsText.text = sb.ToString();

                sb.Clear();
                sb.Append("Luxury needs: ").Append(pop.getLuxuryNeedsFullfilling()).Append(" fulfilled");
                luxuryNeedsText.GetComponent <ToolTipHandler>().SetTextDynamic(() => "Luxury needs wants:\n" + pop.population.getRealLuxuryNeeds().ToString("\n"));
                luxuryNeedsText.text = sb.ToString();

                sb.Clear();
                sb.Append("Balance: ").Append(Money.DecimalToString(pop.Register.Balance));
                money.text = sb.ToString();
                money.GetComponent <ToolTipHandler>().SetTextDynamic(() =>
                                                                     pop.Register.ToString()
                                                                     //"Money income: " + pop.moneyIncomeThisTurn
                                                                     //+ "\nIncome tax (inc. foreign jurisdictions): " + pop.incomeTaxPayed
                                                                     //+ "\nConsumed cost: " + Game.Player.market.getCost(pop.getConsumed())
                                                                     );

                if (pop.Type.isProducer())
                {
                    efficiencyText.gameObject.SetActive(true);
                    efficiencyText.text = "Efficiency: " + PopUnit.modEfficiency.getModifier(pop);
                    efficiencyText.GetComponent <ToolTipHandler>().SetTextDynamic(() => "Efficiency: " + PopUnit.modEfficiency.GetDescription(pop));
                }
                else
                {
                    efficiencyText.gameObject.SetActive(false);
                    //efficiencyText.GetComponent<ToolTipHandler>().SetText("");//it's disabled anyway
                }
                var thisInvestor = pop as Investor;
                if (thisInvestor != null)
                {
                    property.gameObject.SetActive(true);
                    var found = World.GetAllShares(thisInvestor).OrderByDescending(x => x.Value.get());
                    property.GetComponent <ToolTipHandler>().SetTextDynamic(() => "Owns:\n" + found.ToString(", ", "\n"));
                }
                else
                {
                    property.gameObject.SetActive(false);
                }

                issues.GetComponent <ToolTipHandler>().SetTextDynamic(
                    delegate
                {
                    //var items = from pair in pop.getIssues()
                    //            orderby pair.Value descending
                    //            select pair;
                    var items = pop.getIssues().OrderByDescending(x => x.Value);
                    return("Issues:\n" + items.ToString(" willing ", "\n"));
                }
                    );
                populationChange.text = "Population change: " + pop.getAllPopulationChanges().Sum(x => x.Value);
                populationChange.GetComponent <ToolTipHandler>().SetTextDynamic(() =>
                                                                                "Population change:\n" +
                                                                                pop.getAllPopulationChanges().ToString("\n", pop, "Total change: "));
            }
        }
Пример #4
0
        /// <summary>
        /// Assuming that Type is same, province is changing
        /// </summary>
        public ReadOnlyValue getLifeQuality(PopUnit pop)
        {
            if (!HasJobsFor(pop.Type))
            {
                return(ReadOnlyValue.Zero);
            }
            else
            {
                // common part
                var lifeQuality = getAverageNeedsFulfilling(pop.Type);

                if (!lifeQuality.isBiggerThan(pop.needsFulfilled, Options.PopNeedsEscapingBarrier))
                {
                    return(ReadOnlyValue.Zero);
                }

                // checks for same culture and type
                if (getSimilarPopUnit(pop) != null)
                {
                    lifeQuality.Add(Options.PopSameCultureMigrationPreference);
                }


                if (this.Country == pop.Country)
                // migration part
                {
                    if (!pop.isStateCulture() && !isCoreFor(pop))
                    {
                        lifeQuality.Subtract(0.2f, false);
                    }
                }
                else // immigration part
                {
                    // reforms preferences
                    if (pop.Type.isPoorStrata())
                    {
                        lifeQuality.Add(Country.unemploymentSubsidies.LifeQualityImpact); // . ID * 2 / 100f);
                        lifeQuality.Add(Country.minimalWage.LifeQualityImpact);           //.ID * 1 / 100f);
                        lifeQuality.Add(Country.taxationForRich.LifeQualityImpact);       //.ID * 1 / 100f);
                    }
                    else if (pop.Type.isRichStrata())
                    {
                        if (Country.economy == Economy.LaissezFaire)
                        {
                            lifeQuality.Add(0.05f);
                        }
                        else if (Country.economy == Economy.Interventionism)
                        {
                            lifeQuality.Add(0.02f);
                        }
                    }

                    if (pop.loyalty.get() < 0.3f)
                    {
                        lifeQuality.Add(0.05f, false);
                    }
                    //todo - serfdom

                    if (!pop.CanVoteWithThatGovernment(Country.government.typedValue)) // includes Minority politics, but not only
                    {
                        lifeQuality.Subtract(-0.10f, false);
                    }

                    if (country.Culture != pop.culture && country.minorityPolicy != MinorityPolicy.Equality)
                    {
                        //lifeQuality.Subtract(Options.PopMinorityMigrationBarier, false);
                        return(ReadOnlyValue.Zero);
                    }
                }

                return(lifeQuality);
            }
        }