//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); }
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); } } } }
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: ")); } }
/// <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); } }