Пример #1
0
 /// <summary>
 /// Updates the warp status display
 /// </summary>
 public void UpdateWarpStatus()
 {
     if (isInSpace)
     {
         if (!meetsWarpAltitude)
         {
             minWarpAltitudeDisplay = this.part.vessel.orbit.referenceBody.Radius * minPlanetaryRadius;
             if (minWarpAltitudeDisplay > 1000000)
             {
                 Fields["minWarpAltitudeDisplay"].guiUnits = "km";
                 minWarpAltitudeDisplay = minWarpAltitudeDisplay / 1000;
             }
             else
             {
                 Fields["minWarpAltitudeDisplay"].guiUnits = "m";
             }
             Fields["minWarpAltitudeDisplay"].guiActive = true;
         }
         else if (!hasWarpCapacity)
         {
         }
         else
         {
             minWarpAltitudeDisplay = double.NaN;
             Fields["minWarpAltitudeDisplay"].guiActive = false;
         }
     }
     else
     {
         minWarpAltitudeDisplay = double.NaN;
         Fields["minWarpAltitudeDisplay"].guiActive = false;
         spatialLocation = WBISpatialLocations.Unknown;
     }
 }
Пример #2
0
 public override void Flameout(string message, bool statusOnly = false, bool showFX = true)
 {
     base.Flameout(message, statusOnly, showFX);
     warpFlameout          = true;
     hasExceededLightSpeed = false;
     spatialLocation       = WBISpatialLocations.Unknown;
 }
Пример #3
0
        public override void OnFixedUpdate()
        {
            base.OnFixedUpdate();
            if (!HighLogic.LoadedSceneIsFlight)
            {
                return;
            }

            // Update spatial location.
            spatialLocation = BlueshiftScenario.shared.GetSpatialLocation(part.vessel);

            // Vessel course - just the selected target.
            updateVesselCourse();

            // Make sure the engine is running and we should apply warp.
            if (!EngineIgnited)
            {
                return;
            }
            if (!shouldApplyWarp())
            {
                return;
            }

            // Drive warp coil resource consumption and get total available warp capacity.
            getTotalWarpCapacity();

            // Update our precondition states
            updatePreconditionStates();

            // Now check for flameout
            if (IsFlamedOut())
            {
                resetWarpParameters();
                return;
            }

            // Check for auto-orbit circularization
            if (orbitCircularized())
            {
                return;
            }

            // Calculate the best warp curve to get maximum FTL speed.
            calculateBestWarpSpeed();

            // Reset warp speed exceeded flag.
            if (warpSpeed < 1f)
            {
                hasExceededLightSpeed = false;
            }

            // Engage!
            travelAtWarp();
        }
Пример #4
0
        public override void Shutdown()
        {
            base.Shutdown();
            hasExceededLightSpeed = false;
            spatialLocation       = WBISpatialLocations.Unknown;

            Fields["warpSpeed"].guiActive = false;

            int count = warpEngineTextures.Count;

            for (int index = 0; index < count; index++)
            {
                warpEngineTextures[index].isActivated = false;
            }
        }