private void UpdateLists(AIRegionData regionData) { for (int i = 0; i < regionData.Region.PointOfInterests.Length; i++) { PointOfInterest pointOfInterest = regionData.Region.PointOfInterests[i]; if (pointOfInterest.Type == "ResourceDeposit") { string technologyName; if (pointOfInterest.PointOfInterestImprovement == null && pointOfInterest.PointOfInterestDefinition.TryGetValue("VisibilityTechnology", out technologyName) && this.departmentOfScience.GetTechnologyState(technologyName) == DepartmentOfScience.ConstructibleElement.State.Researched && this.CanStopThere(pointOfInterest.WorldPosition)) { this.Resources.Add(pointOfInterest); } } else if (pointOfInterest.Type == ELCPUtilities.QuestLocation && (pointOfInterest.Interaction.Bits & this.owner.Bits) != this.owner.Bits && this.CanStopThere(pointOfInterest.WorldPosition)) { this.Ruins.Add(pointOfInterest); } } IWorldPositionningService service = Services.GetService <IGameService>().Game.Services.GetService <IWorldPositionningService>(); IOrbAIHelper service2 = AIScheduler.Services.GetService <IOrbAIHelper>(); for (int j = 0; j < service2.OrbSpawns.Count; j++) { if (service2.OrbSpawns[j].CurrentOrbCount != 0f && (int)service.GetRegionIndex(service2.OrbSpawns[j].WorldPosition) == regionData.RegionIndex && this.CanStopThere(service2.OrbSpawns[j].WorldPosition)) { this.Orbs.Add(service2.OrbSpawns[j]); } } }
public void RemoveRegion(AIRegionData regionData) { for (int i = 0; i < regionData.Region.PointOfInterests.Length; i++) { PointOfInterest pointOfInterest = regionData.Region.PointOfInterests[i]; if (pointOfInterest.Type == "ResourceDeposit") { this.Resources.Remove(pointOfInterest); } else if (pointOfInterest.Type == ELCPUtilities.QuestLocation) { this.Ruins.Remove(pointOfInterest); } } IWorldPositionningService service = Services.GetService <IGameService>().Game.Services.GetService <IWorldPositionningService>(); IOrbAIHelper service2 = AIScheduler.Services.GetService <IOrbAIHelper>(); for (int j = 0; j < service2.OrbSpawns.Count; j++) { if ((int)service.GetRegionIndex(service2.OrbSpawns[j].WorldPosition) == regionData.RegionIndex) { this.Orbs.Remove(service2.OrbSpawns[j]); } } this.Regions.Remove(regionData); }
public override State CheckCondition(QuestBehaviour questBehaviour, GameEvent gameEvent, params object[] parameters) { this.Initialize(questBehaviour); if (this.RegionIndex != -1) { IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); if (service.Game as global::Game == null) { return(State.Failure); } IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>(); global::Empire empire; if (gameEvent != null) { empire = (gameEvent.Empire as global::Empire); } else { empire = questBehaviour.Initiator; } DepartmentOfDefense agency = empire.GetAgency <DepartmentOfDefense>(); if (this.CheckAllArmies) { for (int i = 0; i < agency.Armies.Count; i++) { if ((int)service2.GetRegionIndex(agency.Armies[i].WorldPosition) == this.RegionIndex) { return(State.Success); } } } else { Army army = agency.GetArmy(this.ArmyGuid); if (army == null) { return(State.Failure); } Region region = service2.GetRegion(army.WorldPosition); if (region == null) { return(State.Failure); } if (this.RegionIndex == region.Index) { return(State.Success); } } } return(State.Failure); }
public override State CheckCondition(QuestBehaviour questBehaviour, GameEvent gameEvent, params object[] parameters) { if (this.Location != WorldPosition.Invalid) { IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); if (service.Game as global::Game == null) { return(State.Failure); } IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>(); global::Empire empire; if (gameEvent != null) { empire = (gameEvent.Empire as global::Empire); } else { empire = questBehaviour.Initiator; } DepartmentOfDefense agency = empire.GetAgency <DepartmentOfDefense>(); if (this.CheckAllArmies) { for (int i = 0; i < agency.Armies.Count; i++) { WorldPosition worldPosition = agency.Armies[i].WorldPosition; int distance = service2.GetDistance(this.Location, worldPosition); int regionIndex = (int)service2.GetRegionIndex(worldPosition); bool flag = service2.IsWaterTile(worldPosition) || service2.IsOceanTile(worldPosition); if (distance == -1) { return(State.Failure); } if (distance <= this.Distance && (this.RegionIndex == -1 || regionIndex == this.RegionIndex) && (!this.ExcludeWaterTile || !flag)) { return(State.Success); } } } else { Army army = agency.GetArmy(this.ArmyGuid); if (army == null) { return(State.Failure); } int distance2 = service2.GetDistance(this.Location, army.WorldPosition); int regionIndex2 = (int)service2.GetRegionIndex(army.WorldPosition); bool flag2 = service2.IsWaterTile(army.WorldPosition) || service2.IsOceanTile(army.WorldPosition); if (distance2 == -1) { return(State.Failure); } if (distance2 <= this.Distance && (this.RegionIndex == -1 || regionIndex2 == this.RegionIndex) && (!this.ExcludeWaterTile || !flag2)) { return(State.Success); } } } return(State.Failure); }
public override State CheckCondition(QuestBehaviour questBehaviour, GameEvent gameEvent, params object[] parameters) { if (this.RegionIndex != -1) { IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); global::Game game = service.Game as global::Game; if (game == null) { return(State.Failure); } IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>(); global::Empire empire; if (gameEvent != null) { empire = (gameEvent.Empire as global::Empire); } else { empire = questBehaviour.Initiator; } DepartmentOfForeignAffairs agency = empire.GetAgency <DepartmentOfForeignAffairs>(); Diagnostics.Assert(agency != null); for (int i = 0; i < game.Empires.Length; i++) { if (i != empire.Index && (this.IgnoredEmpiresIndex == null || !this.IgnoredEmpiresIndex.Contains(i))) { global::Empire empire2 = game.Empires[i]; bool flag; if (empire2 is MajorEmpire) { DiplomaticRelation diplomaticRelation = agency.GetDiplomaticRelation(empire2); Diagnostics.Assert(diplomaticRelation != null); Diagnostics.Assert(diplomaticRelation.State != null); flag = (diplomaticRelation.State.Name == DiplomaticRelationState.Names.ColdWar || diplomaticRelation.State.Name == DiplomaticRelationState.Names.War || diplomaticRelation.State.Name == DiplomaticRelationState.Names.Unknown); } else { flag = true; } if (flag) { DepartmentOfDefense agency2 = empire2.GetAgency <DepartmentOfDefense>(); for (int j = 0; j < agency2.Armies.Count; j++) { if ((this.IncludeNaval || !agency2.Armies[j].IsNaval) && (int)service2.GetRegionIndex(agency2.Armies[j].WorldPosition) == this.RegionIndex) { return(State.Success); } } } } } } return(State.Failure); }