Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ProbeLowPower
- {
- public class ProbeLowPower : PartModule
- {
- [KSPField(isPersistant = true)]
- public bool lowPowerMode;
- [KSPField(isPersistant = false)]
- public float lowPowerRatio;
- public double normalRate;
- public double lowPowerRate;
- public ModuleCommand moduleCommand;
- public ModuleResource moduleResource;
- public override void OnLoad(ConfigNode node)
- {
- if (HighLogic.LoadedSceneIsFlight)
- {
- moduleCommand = this.part.GetComponent<ModuleCommand>();
- foreach (ModuleResource modres in moduleCommand.inputResources)
- {
- if (modres.name == "ElectricCharge")
- {
- moduleResource = modres;
- normalRate = modres.rate;
- lowPowerRate = normalRate * lowPowerRatio;
- }
- }
- if (lowPowerMode)
- moduleResource.rate = lowPowerRate;
- else
- moduleResource.rate = normalRate;
- }
- }
- public void Update()
- {
- if (HighLogic.LoadedSceneIsFlight)
- {
- if (lowPowerMode)
- {
- moduleCommand.controlSrcStatusText = "Low Power Mode";
- moduleResource.currentRequest = moduleResource.rate * (double)TimeWarp.deltaTime;
- moduleResource.currentAmount = base.part.RequestResource(moduleResource.id, moduleResource.currentRequest);
- if (moduleResource.currentAmount < moduleResource.currentRequest * 0.89999997615814209)
- {
- lowPowerMode = false;
- moduleCommand.minimumCrew = 0;
- moduleResource.rate = normalRate;
- Events["activateLPM"].active = true;
- Events["deactivateLPM"].active = false;
- }
- }
- if(TimeWarp.CurrentRate > 1 && TimeWarp.WarpMode == TimeWarp.Modes.HIGH)
- {
- Events["activateLPM"].active = false;
- Events["deactivateLPM"].active = false;
- }
- else
- {
- if (lowPowerMode)
- {
- Events["activateLPM"].active = false;
- Events["deactivateLPM"].active = true;
- }
- else
- {
- Events["activateLPM"].active = true;
- Events["deactivateLPM"].active = false;
- }
- }
- }
- }
- [KSPEvent(active = true, guiActive = true, guiActiveEditor = false, guiActiveUnfocused = false, guiActiveUncommand = true, guiName = "Low Power Mode: Disabled")]
- public void activateLPM()
- {
- if(moduleCommand.controlSrcStatusText == "Operational")
- {
- lowPowerMode = true;
- moduleCommand.minimumCrew = 1;
- moduleResource.rate = lowPowerRate;
- Events["activateLPM"].active = false;
- Events["deactivateLPM"].active = true;
- }
- }
- [KSPEvent(active = false, guiActive = true, guiActiveEditor = false, guiActiveUnfocused = false, guiActiveUncommand = true, guiName = "Low Power Mode: Enabled")]
- public void deactivateLPM()
- {
- lowPowerMode = false;
- moduleCommand.minimumCrew = 0;
- moduleResource.rate = normalRate;
- Events["activateLPM"].active = true;
- Events["deactivateLPM"].active = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement