Advertisement
Guest User

Probe Low Power - Source Code

a guest
Apr 1st, 2016
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.98 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ProbeLowPower
  8. {
  9.     public class ProbeLowPower : PartModule
  10.     {
  11.         [KSPField(isPersistant = true)]
  12.         public bool lowPowerMode;
  13.         [KSPField(isPersistant = false)]
  14.         public float lowPowerRatio;
  15.         public double normalRate;
  16.         public double lowPowerRate;
  17.         public ModuleCommand moduleCommand;
  18.         public ModuleResource moduleResource;
  19.  
  20.         public override void OnLoad(ConfigNode node)
  21.         {
  22.             if (HighLogic.LoadedSceneIsFlight)
  23.             {
  24.                 moduleCommand = this.part.GetComponent<ModuleCommand>();
  25.                 foreach (ModuleResource modres in moduleCommand.inputResources)
  26.                 {
  27.                     if (modres.name == "ElectricCharge")
  28.                     {
  29.                         moduleResource = modres;
  30.                         normalRate = modres.rate;
  31.                         lowPowerRate = normalRate * lowPowerRatio;
  32.                     }
  33.                 }
  34.                
  35.                 if (lowPowerMode)
  36.                     moduleResource.rate = lowPowerRate;
  37.                 else
  38.                     moduleResource.rate = normalRate;
  39.  
  40.             }        
  41.         }
  42.  
  43.         public void Update()
  44.         {
  45.             if (HighLogic.LoadedSceneIsFlight)
  46.             {
  47.                 if (lowPowerMode)
  48.                 {
  49.                     moduleCommand.controlSrcStatusText = "Low Power Mode";
  50.                     moduleResource.currentRequest = moduleResource.rate * (double)TimeWarp.deltaTime;
  51.                     moduleResource.currentAmount = base.part.RequestResource(moduleResource.id, moduleResource.currentRequest);
  52.                     if (moduleResource.currentAmount < moduleResource.currentRequest * 0.89999997615814209)
  53.                     {
  54.                         lowPowerMode = false;
  55.                         moduleCommand.minimumCrew = 0;
  56.                         moduleResource.rate = normalRate;
  57.                         Events["activateLPM"].active = true;
  58.                         Events["deactivateLPM"].active = false;
  59.  
  60.                     }
  61.                 }
  62.                if(TimeWarp.CurrentRate > 1 && TimeWarp.WarpMode == TimeWarp.Modes.HIGH)
  63.                 {
  64.                     Events["activateLPM"].active = false;
  65.                     Events["deactivateLPM"].active = false;
  66.                 }
  67.                else
  68.                 {
  69.                     if (lowPowerMode)
  70.                     {
  71.                         Events["activateLPM"].active = false;
  72.                         Events["deactivateLPM"].active = true;
  73.                     }
  74.                     else
  75.                     {
  76.                         Events["activateLPM"].active = true;
  77.                         Events["deactivateLPM"].active = false;
  78.                     }
  79.                 }
  80.             }      
  81.         }
  82.  
  83.         [KSPEvent(active = true, guiActive = true, guiActiveEditor = false, guiActiveUnfocused = false, guiActiveUncommand = true, guiName = "Low Power Mode: Disabled")]
  84.         public void activateLPM()
  85.         {
  86.             if(moduleCommand.controlSrcStatusText == "Operational")
  87.             {
  88.                 lowPowerMode = true;
  89.                 moduleCommand.minimumCrew = 1;
  90.                 moduleResource.rate = lowPowerRate;
  91.                 Events["activateLPM"].active = false;
  92.                 Events["deactivateLPM"].active = true;
  93.             }
  94.         }
  95.  
  96.         [KSPEvent(active = false, guiActive = true, guiActiveEditor = false, guiActiveUnfocused = false, guiActiveUncommand = true, guiName = "Low Power Mode: Enabled")]
  97.         public void deactivateLPM()
  98.         {
  99.             lowPowerMode = false;
  100.             moduleCommand.minimumCrew = 0;
  101.             moduleResource.rate = normalRate;
  102.             Events["activateLPM"].active = true;
  103.             Events["deactivateLPM"].active = false;
  104.         }
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement