Exemplo n.º 1
0
    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]);
            }
        }
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 5
0
 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);
 }