public static Matrix GetBaseEnemyFleetTrans( App app, Kerberos.Sots.GameStates.StarSystem starSystem, OrbitalObjectInfo[] orbitalObjects) { return(Comet.GetSpawnTransform(app, starSystem, orbitalObjects)); }
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; }
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); }
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)); }