示例#1
0
 public static Matrix GetBaseEnemyFleetTrans(
     App app,
     Kerberos.Sots.GameStates.StarSystem starSystem,
     OrbitalObjectInfo[] orbitalObjects)
 {
     return(Comet.GetSpawnTransform(app, starSystem, orbitalObjects));
 }
示例#2
0
 public PirateCombatAI(
     App game,
     Player player,
     bool playerControlled,
     Kerberos.Sots.GameStates.StarSystem starSystem,
     Dictionary <int, DiplomacyState> diploStates)
     : base(game, player, playerControlled, starSystem, diploStates, false)
 {
     this.SetAIType(OverallAIType.PIRATE);
     this.m_BoardingPodControls = new List <BoardingPodLaunchControl>();
     this.m_DroneControls       = new List <DroneLaunchControl>();
     this.m_IsPirateBase        = game.GameDatabase.GetPirateBaseInfos().FirstOrDefault <PirateBaseInfo>((Func <PirateBaseInfo, bool>)(x => x.SystemId == starSystem.SystemID)) != null;
 }
示例#3
0
 public override string[] CloseDialog()
 {
     if (this._crits != null)
     {
         this._crits.Dispose();
     }
     this._crits      = (GameObjectSet)null;
     this._starsystem = (Kerberos.Sots.GameStates.StarSystem)null;
     this._camera     = (OrbitCameraController)null;
     this._sky        = (Sky)null;
     foreach (PlanetWidget planetWidget in this._planetWidgets)
     {
         planetWidget.Terminate();
     }
     foreach (SystemWidget systemWidget in this._systemWidgets)
     {
         systemWidget.Terminate();
     }
     this._systemWidget.Terminate();
     return((string[])null);
 }
示例#4
0
        public static Matrix GetSpawnTransform(
            App app,
            Kerberos.Sots.GameStates.StarSystem starSystem,
            OrbitalObjectInfo[] orbitalObjects)
        {
            int     planetID  = 0;
            float   num1      = 0.0f;
            float   num2      = 5000f;
            Vector3 vector3_1 = Vector3.Zero;

            foreach (OrbitalObjectInfo orbitalObject in orbitalObjects)
            {
                PlanetInfo planetInfo = app.GameDatabase.GetPlanetInfo(orbitalObject.ID);
                if (planetInfo != null && app.GameDatabase.GetColonyInfoForPlanet(orbitalObject.ID) != null)
                {
                    Matrix orbitalTransform = app.GameDatabase.GetOrbitalTransform(orbitalObject.ID);
                    float  lengthSquared    = orbitalTransform.Position.LengthSquared;
                    if ((double)lengthSquared > (double)num1)
                    {
                        num1      = lengthSquared;
                        vector3_1 = orbitalTransform.Position;
                        num2      = StarSystemVars.Instance.SizeToRadius(planetInfo.Size) + 15000f;
                        planetID  = planetInfo.ID;
                    }
                }
            }
            if ((double)num1 <= 0.0)
            {
                return(Matrix.Identity);
            }
            Vector3 vector3_2 = -vector3_1;

            vector3_2.Y = 0.0f;
            double  num3     = (double)vector3_2.Normalize();
            Vector3 position = vector3_1 - vector3_2 * num2;

            if (starSystem != null)
            {
                Vector3 forward = -Vector3.UnitZ;
                float   num4    = -1f;
                foreach (Ship ship in starSystem.GetStationsAroundPlanet(planetID))
                {
                    Vector3 v0   = vector3_1 - ship.Maneuvering.Position;
                    double  num5 = (double)v0.Normalize();
                    float   num6 = Vector3.Dot(v0, vector3_2);
                    if ((double)num6 > 0.75 && (double)num6 > (double)num4)
                    {
                        num4    = num6;
                        forward = v0;
                    }
                }
                if ((double)num4 > 0.0)
                {
                    Matrix  world     = Matrix.CreateWorld(Vector3.Zero, forward, Vector3.UnitY);
                    Vector3 vector3_3 = vector3_1 + world.Right * num2;
                    Vector3 vector3_4 = vector3_1 - world.Right * num2;
                    vector3_2 = (double)(position - vector3_3).LengthSquared >= (double)(position - vector3_4).LengthSquared ? (forward - world.Right) * 0.5f : (forward + world.Right) * 0.5f;
                    double num5 = (double)vector3_2.Normalize();
                    position = vector3_1 - vector3_2 * num2;
                }
            }
            return(Matrix.CreateWorld(position, vector3_2, Vector3.UnitY));
        }