示例#1
0
 public void ShowEconomyOverlay(EconomyTrait t)
 {
     ShowOverlayLegend(EnumHelper.GetDescription(t));
     foreach (Region r in Map.LandRegions.Where(x => Game.VisibleDistricts.ContainsKey(x)))
     {
         Policy policy       = Game.LocalPlayerParty.GetPolicy(t);
         int    policyImpact = Game.VisibleDistricts[r].GetBaseImpact(policy);
         Color  impactColor  = ColorManager.Singleton.GetImpactColor(policyImpact);
         r.SetColor(impactColor);
     }
 }
示例#2
0
        public District(Random.State seed, ElectionTacticsGame game, Region r, string name)
        {
            Seed   = seed;
            Game   = game;
            Region = r;
            Name   = name;

            Random.state = seed;

            SetGeographyTraits();

            Density  = GetDensityForNewRegion();
            AgeGroup = GetAgeGroupForNewRegion();
            Language = GetLanguageForNewRegion();
            Religion = GetReligionForNewRegion();

            Economy1 = ElectionTacticsGame.GetRandomEconomyTrait();
            Economy2 = ElectionTacticsGame.GetRandomEconomyTrait();
            while (Economy2 == Economy1)
            {
                Economy2 = ElectionTacticsGame.GetRandomEconomyTrait();
            }
            Economy3 = ElectionTacticsGame.GetRandomEconomyTrait();
            while (Economy3 == Economy2 || Economy3 == Economy1)
            {
                Economy3 = ElectionTacticsGame.GetRandomEconomyTrait();
            }

            int numMentalities = Random.Range(1, 4);

            while (Mentalities.Count < numMentalities)
            {
                Mentality m = Game.GetRandomAdoptableMentality(this);
                Mentalities.Add(m);
                MentalityTypes.Add(m.Type);
            }

            // Population calculation
            Population = (int)(Region.Area * 1000000);
            float populationModifier = 0f;

            if (Density == Density.Urban)
            {
                populationModifier = Random.Range(1.2f, 1.6f);
            }
            if (Density == Density.Mixed)
            {
                populationModifier = Random.Range(0.8f, 1.2f);
            }
            if (Density == Density.Rural)
            {
                populationModifier = Random.Range(0.4f, 0.8f);
            }
            Population = (int)(Population * populationModifier);
            Population = (Population / 1000) * 1000;

            // Seat calculation
            int tmpPop             = Population;
            int tmpSeatRequirement = RequiredPopulationPerSeat;
            int tmpSeats           = 0;

            while (tmpPop >= tmpSeatRequirement)
            {
                tmpSeats++;
                tmpPop             -= tmpSeatRequirement;
                tmpSeatRequirement += RequirementIncreasePerSeat;
            }
            Seats = Mathf.Max(MinSeats, tmpSeats);

            // Voter calculation
            if (MentalityTypes.Contains(MentalityType.Predictable))
            {
                Voters = Random.Range(NumVotersPredictableMin, NumVotersPredictableMax + 1);
            }
            else if (MentalityTypes.Contains(MentalityType.Unpredictable))
            {
                Voters = Random.Range(NumVotersUnpredictableMin, NumVotersUnpredictableMax + 1);
            }
            else
            {
                Voters = Random.Range(NumVotersDefaultMin, NumVotersDefaultMax + 1);
            }

            // Voter turnour
            if (MentalityTypes.Contains(MentalityType.LowVoterTurnout))
            {
                VoterTurnout = Random.Range(VoterTurnoutLowMin, VoterTurnoutLowMax);
            }
            else if (MentalityTypes.Contains(MentalityType.HighVoterTurnout))
            {
                VoterTurnout = Random.Range(VoterTurnoutHighMin, VoterTurnoutHighMax);
            }
            else
            {
                VoterTurnout = Random.Range(VoterTurnoutDefaultMin, VoterTurnoutDefaultMax);
            }
        }
示例#3
0
 public void Init(UI_ElectionTactics ui, EconomyTrait et)
 {
     HoverAction = () => { UI.MapControls.ShowEconomyOverlay(et); };
     Init(ui, EnumHelper.GetDescription(et), EnumHelper.GetDescription(et), "Economy sector");
 }
示例#4
0
 public int GetPolicyValueFor(EconomyTrait t)
 {
     return(GetPolicy(t).Value);
 }
示例#5
0
 public Policy GetPolicy(EconomyTrait t)
 {
     return(Policies.OfType <EconomyPolicy>().First(x => x.Trait == t));
 }
示例#6
0
 public EconomyPolicy(int id, Party p, EconomyTrait trait, int maxValue) : base(id, p, maxValue)
 {
     Trait = trait;
     Name  = EnumHelper.GetDescription(trait);
     Type  = PolicyType.Economy;
 }