public void UnconvertAndPacifyAllConvertedVillages() { for (int i = this.ConvertedVillages.Count - 1; i >= 0; i--) { Village village = this.ConvertedVillages[i]; if (village != null && village.Region != null) { BarbarianCouncil agency = village.Region.MinorEmpire.GetAgency<BarbarianCouncil>(); if (agency != null) { agency.PacifyVillage(village, null); } DepartmentOfTheInterior agency2 = base.GetAgency<DepartmentOfTheInterior>(); Diagnostics.Assert(agency2 != null); if (village.Region.City != null && agency2 != null && agency2.MainCity != village.Region.City) { DepartmentOfTheInterior agency3 = village.Region.City.Empire.GetAgency<DepartmentOfTheInterior>(); Diagnostics.Assert(agency3 != null); agency3.BindMinorFactionToCity(village.Region.City, village.Region.MinorEmpire); agency3.VerifyOverallPopulation(village.Region.City); } else { agency2.UnbindConvertedVillage(village); } } } }
public override void CleanAfterEncounter(Encounter encounter) { BarbarianCouncil agency = this.MinorEmpire.GetAgency <BarbarianCouncil>(); agency.CleanVillageAfterEncounter(this, encounter); base.LeaveEncounter(); }
private bool CanTransferTo(Army army, WorldPosition worldPosition, ref bool atLeastOneNeighbourgCityWithNotEnoughSlotsLeft, ref bool atLeastOneNeighbourgVillageWithNotEnoughSlotsLeft, IWorldPositionningService worldPositionningService, int transferringUnitSlot) { Region region = worldPositionningService.GetRegion(worldPosition); if (region.City != null && region.City.Empire == army.Empire) { int i = 0; while (i < region.City.Districts.Count) { if (region.City.Districts[i].Type != DistrictType.Exploitation && region.City.Districts[i].Type != DistrictType.Improvement && worldPosition == region.City.Districts[i].WorldPosition) { if (transferringUnitSlot + region.City.CurrentUnitSlot > region.City.MaximumUnitSlot) { atLeastOneNeighbourgCityWithNotEnoughSlotsLeft = true; break; } if (army.WorldPosition == worldPosition) { return(true); } if (region.City.BesiegingEmpireIndex < 0 || (army.Hero != null && army.Hero.CheckUnitAbility(UnitAbility.UnitAbilityAllowAssignationUnderSiege, -1))) { return(true); } break; } else { i++; } } } if (region != null && region.MinorEmpire != null) { BarbarianCouncil agency = region.MinorEmpire.GetAgency <BarbarianCouncil>(); if (agency != null) { Village villageAt = agency.GetVillageAt(worldPosition); if (villageAt != null && villageAt.HasBeenConverted && villageAt.Converter == army.Empire) { if (transferringUnitSlot + villageAt.CurrentUnitSlot <= villageAt.MaximumUnitSlot) { return(true); } atLeastOneNeighbourgVillageWithNotEnoughSlotsLeft = true; } } } return((region != null && region.City != null && region.City.Camp != null && worldPosition == region.City.Camp.WorldPosition && region.City.Camp.Empire == army.Empire && transferringUnitSlot + region.City.Camp.CurrentUnitSlot <= region.City.Camp.MaximumUnitSlot) || (region != null && region.Kaiju != null && region.Kaiju.KaijuGarrison != null && worldPosition == region.Kaiju.KaijuGarrison.WorldPosition && region.Kaiju.Empire.Index == army.Empire.Index && DepartmentOfScience.IsTechnologyResearched(army.Empire, "TechnologyDefinitionMimics1") && transferringUnitSlot + region.Kaiju.KaijuGarrison.CurrentUnitSlot <= region.Kaiju.KaijuGarrison.MaximumUnitSlot)); }
private void ComputeVillageScoring() { this.villagePOI.Clear(); DepartmentOfTheInterior agency = this.OtherEmpire.GetAgency <DepartmentOfTheInterior>(); for (int i = 0; i < agency.Cities.Count; i++) { MinorEmpire minorEmpire = agency.Cities[i].Region.MinorEmpire; if (minorEmpire != null) { BarbarianCouncil council = minorEmpire.GetAgency <BarbarianCouncil>(); if (council != null) { bool flag = agency.IsAssimilated(minorEmpire.MinorFaction); int villageIndex2; int villageIndex; Predicate <DissentTask_Empire.VillageScoring> < > 9__1; for (villageIndex = 0; villageIndex < council.Villages.Count; villageIndex = villageIndex2 + 1) { if (council.Villages[villageIndex].HasBeenPacified && !council.Villages[villageIndex].HasBeenConverted && !council.Villages[villageIndex].HasBeenInfected) { List <DissentTask_Empire.VillageScoring> list = this.villagePOI; Predicate <DissentTask_Empire.VillageScoring> match2; if ((match2 = < > 9__1) == null) { match2 = (< > 9__1 = ((DissentTask_Empire.VillageScoring match) => match.Village.GUID == council.Villages[villageIndex].GUID)); } DissentTask_Empire.VillageScoring villageScoring = list.Find(match2); if (villageScoring == null) { villageScoring = new DissentTask_Empire.VillageScoring(council.Villages[villageIndex]); this.villagePOI.Add(villageScoring); } villageScoring.Reset(); if (flag) { villageScoring.Score.Boost(0.2f, "Assimilated", new object[0]); } if (this.visibilityService.IsWorldPositionVisibleFor(villageScoring.Village.WorldPosition, base.Owner)) { villageScoring.Score.Boost(0.2f, "Visible", new object[0]); } } villageIndex2 = villageIndex; } } } } this.villagePOI.Sort((DissentTask_Empire.VillageScoring left, DissentTask_Empire.VillageScoring right) => - 1 * left.Score.CompareTo(right.Score)); }
private void UpdatePacificationStatusOfRegion(global::Empire empire, Region region, AIRegionData regionData) { regionData.VillageTotalCount = 0; regionData.VillagePacifiedOrConvertedByMeCount = 0; regionData.VillageConvertedByOtherCount = 0; regionData.VillageNotPacified = 0; regionData.VillageDestroyed = 0; regionData.VillagePacifiedAndBuilt = 0; if (region.MinorEmpire != null) { BarbarianCouncil agency = region.MinorEmpire.GetAgency <BarbarianCouncil>(); if (agency != null) { regionData.VillageTotalCount = agency.Villages.Count; for (int i = 0; i < agency.Villages.Count; i++) { Village village = agency.Villages[i]; if (village.HasBeenConverted) { if (village.Converter.Index != empire.Index) { regionData.VillageConvertedByOtherCount++; regionData.VillageNotPacified++; } else { regionData.VillagePacifiedOrConvertedByMeCount++; regionData.VillagePacifiedAndBuilt++; } } else if (village.HasBeenPacified) { regionData.VillagePacifiedOrConvertedByMeCount++; if (village.PointOfInterest.PointOfInterestImprovement == null) { regionData.VillageDestroyed++; } else { regionData.VillagePacifiedAndBuilt++; } } else { regionData.VillageNotPacified++; } } } } }
private Village GetVillageFromPointOfInterest(PointOfInterest pointOfInterest, IWorldPositionningService worldPositionningService = null) { if (worldPositionningService == null) { IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); Diagnostics.Assert(service.Game != null); worldPositionningService = service.Game.Services.GetService <IWorldPositionningService>(); Diagnostics.Assert(worldPositionningService != null); } Region region = worldPositionningService.GetRegion(pointOfInterest.WorldPosition); if (region != null && region.MinorEmpire != null) { BarbarianCouncil agency = region.MinorEmpire.GetAgency <BarbarianCouncil>(); return(agency.GetVillageAt(pointOfInterest.WorldPosition)); } return(null); }
private List <IWorldPositionable> Execute_GetVillages(AIBehaviorTree aiBehaviorTree, Army army, IGameService gameService, List <IWorldPositionable> unfilteredTargetList) { List <IWorldPositionable> list = new List <IWorldPositionable>(); for (int i = 0; i < unfilteredTargetList.Count; i++) { PointOfInterest pointOfInterest = unfilteredTargetList[i] as PointOfInterest; if (pointOfInterest != null && !(pointOfInterest.Type != "Village") && pointOfInterest.Region != null && pointOfInterest.Region.MinorEmpire != null) { BarbarianCouncil agency = pointOfInterest.Region.MinorEmpire.GetAgency <BarbarianCouncil>(); if (agency != null) { Village villageAt = agency.GetVillageAt(pointOfInterest.WorldPosition); if (villageAt != null && !villageAt.HasBeenPacified && this.TypeOfDiplomaticRelation != "VillageConvert" && pointOfInterest.PointOfInterestImprovement != null && !villageAt.HasBeenInfected) { list.Add(villageAt); } else if (this.TypeOfDiplomaticRelation == "VillageConvert" && army.Empire is MajorEmpire && army.Empire.SimulationObject.Tags.Contains(AILayer_Village.TagConversionTrait) && villageAt.HasBeenPacified && DepartmentOfTheInterior.IsArmyAbleToConvert(army, true) && !villageAt.HasBeenConverted && !villageAt.HasBeenInfected) { DepartmentOfForeignAffairs agency2 = aiBehaviorTree.AICommander.Empire.GetAgency <DepartmentOfForeignAffairs>(); City city = villageAt.Region.City; if (city != null && city.Empire != aiBehaviorTree.AICommander.Empire) { DiplomaticRelation diplomaticRelation = agency2.GetDiplomaticRelation(city.Empire); if (diplomaticRelation == null || diplomaticRelation.State.Name != DiplomaticRelationState.Names.War || (diplomaticRelation.State.Name == DiplomaticRelationState.Names.War && pointOfInterest.PointOfInterestImprovement == null)) { goto IL_1FB; } } float num; army.Empire.GetAgency <DepartmentOfTheTreasury>().TryGetResourceStockValue(army.Empire.SimulationObject, DepartmentOfTheTreasury.Resources.EmpirePoint, out num, false); if (AILayer_Village.GetVillageConversionCost(army.Empire as MajorEmpire, villageAt) * 2f < num) { list.Add(villageAt); } } } } IL_1FB :; } return(list); }
private void UpdateEmpireInfo(global::Empire empire, ref float numberOfVillage, ref float villageUnitCountAverage, ref float numberOfArmies, ref float armyUnitCountAverage, ref float maxMilitaryPower) { if (empire == null) { return; } DepartmentOfDefense agency = empire.GetAgency <DepartmentOfDefense>(); if (agency.Armies.Count > 0) { numberOfArmies += (float)agency.Armies.Count; for (int i = 0; i < agency.Armies.Count; i++) { armyUnitCountAverage += (float)agency.Armies[i].UnitsCount; float propertyValue = agency.Armies[i].GetPropertyValue(SimulationProperties.MilitaryPower); if (maxMilitaryPower < propertyValue) { maxMilitaryPower = propertyValue; } } } BarbarianCouncil agency2 = empire.GetAgency <BarbarianCouncil>(); if (agency2 != null) { for (int j = 0; j < agency2.Villages.Count; j++) { if (!agency2.Villages[j].HasBeenPacified || (agency2.Villages[j].HasBeenConverted && agency2.Villages[j].Converter != this.empire)) { villageUnitCountAverage += (float)agency2.Villages[j].UnitsCount; numberOfVillage += 1f; float propertyValue2 = agency2.Villages[j].GetPropertyValue(SimulationProperties.MilitaryPower); if (maxMilitaryPower < propertyValue2) { maxMilitaryPower = propertyValue2; } } } } }
private bool TransferTo(Army army, WorldPosition worldPosition, List <GameEntityGUID> units, IWorldPositionningService worldPositionningService, global::PlayerController playerController, out Ticket ticket, EventHandler <TicketRaisedEventArgs> ticketRaisedEventHandler) { Region region = worldPositionningService.GetRegion(worldPosition); GameEntityGUID gameEntityGUID = GameEntityGUID.Zero; ticket = null; if (region.MinorEmpire != null) { BarbarianCouncil agency = region.MinorEmpire.GetAgency <BarbarianCouncil>(); if (agency != null) { Village villageAt = agency.GetVillageAt(worldPosition); if (villageAt != null) { gameEntityGUID = villageAt.GUID; } } } if (region.City != null && region.City.Camp != null && gameEntityGUID == GameEntityGUID.Zero && region.City.Camp.WorldPosition == worldPosition) { gameEntityGUID = region.City.Camp.GUID; } if (region.City != null && gameEntityGUID == GameEntityGUID.Zero) { gameEntityGUID = region.City.GUID; } if (region.Kaiju != null && region.Kaiju.KaijuGarrison != null && gameEntityGUID == GameEntityGUID.Zero && DepartmentOfScience.IsTechnologyResearched(army.Empire, "TechnologyDefinitionMimics1") && region.Kaiju.KaijuGarrison.WorldPosition == worldPosition) { gameEntityGUID = region.Kaiju.KaijuGarrison.GUID; } if (gameEntityGUID != GameEntityGUID.Zero) { OrderTransferUnits order = new OrderTransferUnits(army.Empire.Index, army.GUID, gameEntityGUID, units.ToArray(), false); playerController.PostOrder(order, out ticket, ticketRaisedEventHandler); return(true); } return(false); }
protected override IEnumerator OnLoad() { if (this.convertedVillages != null) { for (int index = 0; index < this.convertedVillages.Count; index++) { Village village = this.convertedVillages[index]; village.Empire = null; Diagnostics.Assert(village.PointOfInterest != null); Diagnostics.Assert(village.PointOfInterest.Region != null); MinorEmpire minorEmpire = village.PointOfInterest.Region.MinorEmpire; Diagnostics.Assert(minorEmpire != null); BarbarianCouncil barbarianCouncil = minorEmpire.GetAgency<BarbarianCouncil>(); Diagnostics.Assert(barbarianCouncil != null); barbarianCouncil.AddVillage(village); barbarianCouncil.AddConvertVillageOnLoad(village, this); DepartmentOfTheInterior.GenerateFIMSEForConvertedVillage(this, village.PointOfInterest); } } if (this.InfectedVillages != null) { for (int index2 = 0; index2 < this.InfectedVillages.Count; index2++) { Village village2 = this.InfectedVillages[index2]; village2.Empire = null; Diagnostics.Assert(village2.PointOfInterest != null); Diagnostics.Assert(village2.PointOfInterest.Region != null); MinorEmpire minorEmpire2 = village2.PointOfInterest.Region.MinorEmpire; Diagnostics.Assert(minorEmpire2 != null); BarbarianCouncil barbarianCouncil2 = minorEmpire2.GetAgency<BarbarianCouncil>(); Diagnostics.Assert(barbarianCouncil2 != null); barbarianCouncil2.AddVillage(village2); } } yield return base.OnLoad(); yield break; }
public bool TryGetListOfTargetInRange(Army inputArmy, int targetEmpireIndex, bool addPointsOfInterest, int regionRestriction, ref List <IWorldPositionable> targetList) { if (targetList == null) { targetList = new List <IWorldPositionable>(); } if (inputArmy == null || inputArmy.Empire == null) { return(false); } DepartmentOfForeignAffairs departmentOfForeignAffairs = null; bool flag = inputArmy.Empire is MinorEmpire; bool flag2 = inputArmy.Empire is NavalEmpire; if (!flag && !flag2) { departmentOfForeignAffairs = inputArmy.Empire.GetAgency <DepartmentOfForeignAffairs>(); } if (addPointsOfInterest) { for (int i = 0; i < this.World.Regions.Length; i++) { for (int j = 0; j < this.World.Regions[i].PointOfInterests.Length; j++) { PointOfInterest pointOfInterest = this.World.Regions[i].PointOfInterests[j]; if (this.GetDistance(pointOfInterest.WorldPosition, inputArmy.WorldPosition) <= inputArmy.LineOfSightVisionRange && (regionRestriction == -1 || regionRestriction == pointOfInterest.Region.Index)) { targetList.Add(pointOfInterest); } } } } IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); global::Game game = service.Game as global::Game; for (int k = 0; k < game.Empires.Length; k++) { global::Empire empire = game.Empires[k]; if (((!flag && !flag2) || empire is MajorEmpire) && (targetEmpireIndex == -1 || targetEmpireIndex == k)) { DepartmentOfDefense agency = empire.GetAgency <DepartmentOfDefense>(); if (agency != null) { int l = 0; while (l < agency.Armies.Count) { Army army = agency.Armies[l]; if (flag || flag2) { if (!army.IsPrivateers) { bool flag3 = false; for (int m = 0; m < army.StandardUnits.Count; m++) { if (army.StandardUnits[m].SimulationObject.Tags.Contains(WorldPositionning.FriendlyBannerDescriptor)) { flag3 = true; } } if ((army.Hero == null || !army.Hero.IsSkillUnlocked(WorldPositionning.FriendlyBannerSkill)) && !flag3) { int distance = this.GetDistance(army.WorldPosition, inputArmy.WorldPosition); float propertyValue = inputArmy.GetPropertyValue(SimulationProperties.DetectionRange); if (!army.IsCamouflaged) { goto IL_240; } if ((float)distance <= propertyValue) { goto IL_240; } } } } else if (army.Empire == inputArmy.Empire || !army.IsCamouflaged || this.VisibilityService.IsWorldPositionDetectedFor(army.WorldPosition, inputArmy.Empire)) { goto IL_240; } IL_238: l++; continue; IL_240: if (this.GetDistance(army.WorldPosition, inputArmy.WorldPosition) <= inputArmy.LineOfSightVisionRange && (regionRestriction == -1 || regionRestriction == (int)this.GetRegionIndex(army.WorldPosition))) { targetList.Add(army); goto IL_238; } goto IL_238; } } if (empire is MajorEmpire) { DepartmentOfTheInterior agency2 = empire.GetAgency <DepartmentOfTheInterior>(); if (agency2 != null) { for (int n = 0; n < agency2.Cities.Count; n++) { City city = agency2.Cities[n]; if ((city.Empire == inputArmy.Empire || flag || flag2 || departmentOfForeignAffairs == null || departmentOfForeignAffairs.CanAttack(city)) && this.GetDistance(city.WorldPosition, inputArmy.WorldPosition) <= inputArmy.LineOfSightVisionRange && (regionRestriction == -1 || regionRestriction == city.Region.Index)) { targetList.Add(city); } } for (int num = 0; num < agency2.Camps.Count; num++) { Camp camp = agency2.Camps[num]; if ((camp.Empire == inputArmy.Empire || flag || flag2 || departmentOfForeignAffairs == null || departmentOfForeignAffairs.CanAttack(camp)) && this.GetDistance(camp.WorldPosition, inputArmy.WorldPosition) <= inputArmy.LineOfSightVisionRange && (regionRestriction == -1 || regionRestriction == camp.City.Region.Index)) { targetList.Add(camp); } } } MajorEmpire majorEmpire = empire as MajorEmpire; for (int num2 = 0; num2 < majorEmpire.ConvertedVillages.Count; num2++) { Village village = majorEmpire.ConvertedVillages[num2]; if ((flag || flag2 || departmentOfForeignAffairs == null || departmentOfForeignAffairs.CanAttack(village)) && this.GetDistance(village.WorldPosition, inputArmy.WorldPosition) <= inputArmy.LineOfSightVisionRange && (regionRestriction == -1 || regionRestriction == village.Region.Index)) { targetList.Add(village); } } } else if (empire is MinorEmpire) { BarbarianCouncil agency3 = empire.GetAgency <BarbarianCouncil>(); if (agency3 != null) { for (int num3 = 0; num3 < agency3.Villages.Count; num3++) { Village village2 = agency3.Villages[num3]; if ((flag || flag2 || departmentOfForeignAffairs == null || departmentOfForeignAffairs.CanAttack(village2)) && this.GetDistance(village2.WorldPosition, inputArmy.WorldPosition) <= inputArmy.LineOfSightVisionRange && (regionRestriction == -1 || regionRestriction == village2.Region.Index)) { targetList.Add(village2); } } } } else if (empire is NavalEmpire) { PirateCouncil agency4 = empire.GetAgency <PirateCouncil>(); if (agency4 != null) { for (int num4 = 0; num4 < agency4.Fortresses.Count; num4++) { Fortress fortress = agency4.Fortresses[num4]; if ((flag || flag2 || departmentOfForeignAffairs == null || departmentOfForeignAffairs.CanAttack(fortress)) && this.GetDistance(fortress.WorldPosition, inputArmy.WorldPosition) <= inputArmy.LineOfSightVisionRange && (regionRestriction == -1 || regionRestriction == fortress.Region.Index)) { targetList.Add(fortress); } } } } } } return(targetList.Count != 0); }
public override bool CanExecute(Army army, ref List <StaticString> failureFlags, params object[] parameters) { this.lastConvertCostDescription = string.Empty; if (!base.CanExecute(army, ref failureFlags, parameters)) { return(false); } if (army.IsNaval) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } IGameService service = Services.GetService <IGameService>(); if (service == null) { failureFlags.Add(ArmyAction.NoCanDoWhileSystemError); return(false); } global::Game x = service.Game as global::Game; if (x == null) { failureFlags.Add(ArmyAction.NoCanDoWhileSystemError); return(false); } IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>(); if (service2 == null) { failureFlags.Add(ArmyAction.NoCanDoWhileSystemError); return(false); } if (parameters == null) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } if (parameters.Length == 0) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } List <Village> list = new List <Village>(); for (int i = 0; i < parameters.Length; i++) { if (parameters[i] is Village) { list.Add(parameters[i] as Village); } else if (parameters[i] is List <IGameEntity> ) { List <IGameEntity> list2 = parameters[i] as List <IGameEntity>; for (int j = 0; j < list2.Count; j++) { if (list2[j] is Village) { list.Add(parameters[i] as Village); } else if (list2[j] is PointOfInterest) { PointOfInterest pointOfInterest = list2[j] as PointOfInterest; Region region = service2.GetRegion(pointOfInterest.WorldPosition); if (region != null && region.MinorEmpire != null) { BarbarianCouncil agency = region.MinorEmpire.GetAgency <BarbarianCouncil>(); Village villageAt = agency.GetVillageAt(pointOfInterest.WorldPosition); if (villageAt != null) { list.Add(villageAt); } } } } } } if (list.Count == 0) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } if (!this.ArmyCanConvert(army, failureFlags)) { return(false); } DepartmentOfTheTreasury agency2 = army.Empire.GetAgency <DepartmentOfTheTreasury>(); for (int k = list.Count - 1; k >= 0; k--) { if (!this.CanConvertVillage(army, list[k], agency2, failureFlags)) { list.RemoveAt(k); } } if (list.Count == 0) { return(false); } ArmyAction.FailureFlags.Clear(); return(true); }
protected override IEnumerator OnShow(params object[] parameters) { this.Description.AgeTransform.Height = 0f; this.Description.Text = string.Empty; if (this.content.StartsWith("%")) { this.Description.Text = this.content; } else if (this.technologyOnly && this.context is MultipleConstructibleTooltipData) { GuiElement guiElement; if (base.GuiService.GuiPanelHelper.TryGetGuiElement((this.context as MultipleConstructibleTooltipData).TechnologyDefinition.Name, out guiElement)) { this.Description.Text = guiElement.Description; } } else if (this.context is IDescriptionFeatureProvider) { this.Description.Text = (this.context as IDescriptionFeatureProvider).Description; } else { IGuiEntity guiEntity = this.context as IGuiEntity; GuiElement guiElement2; if (this.context != null && guiEntity != null && guiEntity.Gui != null) { this.Description.Text = guiEntity.Gui.Description; } else if (base.GuiService.GuiPanelHelper.TryGetGuiElement(this.content, out guiElement2)) { this.Description.Text = guiElement2.Description; } else { this.Description.Text = this.content; } } if (this.context is CreepingNode || this.context is PointOfInterest || this.context is Village) { WorldPosition worldPosition; if (this.context is PointOfInterest) { worldPosition = (this.context as PointOfInterest).WorldPosition; } else if (this.context is CreepingNode) { worldPosition = (this.context as CreepingNode).WorldPosition; } else { worldPosition = (this.context as Village).WorldPosition; } Region region = Services.GetService <IGameService>().Game.Services.GetService <IWorldPositionningService>().GetRegion(worldPosition); if (region.IsLand && !region.IsWasteland && region.MinorEmpire != null) { BarbarianCouncil agency = region.MinorEmpire.GetAgency <BarbarianCouncil>(); if (agency != null && agency.GetVillageAt(worldPosition) != null) { global::IGuiService service = Services.GetService <global::IGuiService>(); List <EffectDescription> list = new List <EffectDescription>(); MinorFaction minorFaction = region.MinorEmpire.MinorFaction; if (minorFaction != null) { service.GuiSimulationParser.ParseSimulationDescriptor(minorFaction, list, null, false, false); this.Description.Text = AgeLocalizer.Instance.LocalizeString(this.Description.Text); foreach (EffectDescription effectDescription in list) { if (effectDescription == list[0]) { AgePrimitiveLabel description = this.Description; description.Text = description.Text + "\n \n#FFB43F#" + AgeLocalizer.Instance.LocalizeString("%EffectsOnEmpireTitle") + "#REVERT#"; } AgePrimitiveLabel description2 = this.Description; description2.Text = description2.Text + "\n" + effectDescription.ToString(); } } } } } if (!string.IsNullOrEmpty(this.Description.Text)) { this.Description.AgeTransform.Width = this.DefaultWidth - this.Description.AgeTransform.PixelMarginLeft - this.Description.AgeTransform.PixelMarginRight; this.Description.ComputeText(); base.AgeTransform.Height = this.Description.Font.LineHeight * (float)this.Description.TextLines.Count + this.Description.AgeTransform.PixelMarginTop + this.Description.AgeTransform.PixelMarginBottom; if (this.Description.TextLines.Count == 1) { base.AgeTransform.Width = this.Description.AgeTransform.PixelMarginLeft + this.Description.Font.ComputeTextWidth(this.Description.TextLines[0], false, true) + this.Description.AgeTransform.PixelMarginRight; } else { base.AgeTransform.Width = this.DefaultWidth; } } yield return(base.OnShow(parameters)); yield break; }