private void ComputeTameCosts(global::Game game) { System.Random random = new System.Random(World.Seed); IDatabase <ArmyAction> database = Databases.GetDatabase <ArmyAction>(false); Diagnostics.Assert(database != null); Dictionary <string, List <PointOfInterestTemplate> > dictionary = KaijuTechsManager.ComputeLuxuryAbundance(game); for (int i = 0; i < database.Count <ArmyAction>(); i++) { ArmyAction armyAction = database.ElementAt(i); if (armyAction is IArmyActionWithKaijuTameCost) { KaijuTameCost tameCost = (armyAction as IArmyActionWithKaijuTameCost).TameCost; for (int j = 0; j < tameCost.CostDefinitions.Length; j++) { KaijuTameCost.CostDefinition costDefinition = tameCost.CostDefinitions[j]; List <PointOfInterestTemplate> list = new List <PointOfInterestTemplate>(); list.AddRange(dictionary[costDefinition.LuxuryTier]); PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)]; string empty = string.Empty; if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty)) { costDefinition.SetResourceName(empty); } } } } }
public override IEnumerator LoadGame(Game game) { this.technologyDatabase = Databases.GetDatabase <DepartmentOfScience.ConstructibleElement>(false); if (this.technologyDatabase == null) { Diagnostics.LogError("Wasn't able to find the technology database."); } this.researchQueues.Clear(); if (this.researchQueues.Count == 0) { Empire[] array = Array.FindAll <Empire>(base.Game.Empires, (Empire empire) => empire is MajorEmpire); for (int i = 0; i < array.Length; i++) { this.researchQueues.Add(array[i].Index, new ConstructionQueue()); } } if (this.researchedTechNames.Count > 0) { for (int j = 0; j < this.researchedTechNames.Count; j++) { DepartmentOfScience.ConstructibleElement item = null; if (this.technologyDatabase.TryGetValue(this.researchedTechNames[j], out item)) { this.researchedTechs.Add(item); } } } this.AssignLuxuryTypes(KaijuTechsManager.ComputeLuxuryAbundance(game)); yield return(base.LoadGame(game)); yield break; }
private void Client_TurnBegin_RecalculateELCPTameResource() { if (this.ELCPTameCostCooldown < 1) { return; } int num = (this.gameService.Game as global::Game).Turn + 1; int num2 = num % this.ELCPTameCostCooldown; if (num2 != 0 && this.eLCPResourceName != StaticString.Empty) { return; } num -= num2; System.Random random = new System.Random(World.Seed + base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index + num * num); int maxEraNumber = DepartmentOfScience.GetMaxEraNumber(); KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost(); Dictionary <string, List <PointOfInterestTemplate> > dictionary = KaijuTechsManager.ComputeLuxuryAbundance(this.gameService.Game as global::Game); List <PointOfInterestTemplate> list = new List <PointOfInterestTemplate>(); List <string> list2 = new List <string>(); for (int i = 0; i < kaijuTameCost.CostDefinitions.Length; i++) { KaijuTameCost.CostDefinition costDefinition = kaijuTameCost.CostDefinitions[i]; if (!list2.Contains(costDefinition.LuxuryTier)) { string[] array = costDefinition.EraNumber.Split(new char[] { ',' }); bool flag = false; for (int j = 0; j < array.Length; j++) { int num3 = 0; if (int.TryParse(array[j], out num3) && num3 <= maxEraNumber) { flag = true; break; } } if (flag) { list.AddRange(dictionary[costDefinition.LuxuryTier]); list2.Add(costDefinition.LuxuryTier); } } } PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)]; string empty = string.Empty; if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty)) { Diagnostics.Log("ELCP {0} Client_TurnBegin_RecalculateELCPTameResource rolled Resource {1} instead of {2}", new object[] { base.Empire.Index.ToString() + "/" + this.KaijuEmpire.KaijuFaction.LocalizedName, empty, kaijuTameCost.ResourceName }); this.eLCPResourceName = new StaticString(empty); } }