protected override void Overrides() { Fields["displayChance"].guiName = "Chance of Alternator Failure"; Fields["safetyRating"].guiName = "Alternator Safety Rating"; failureType = "Alternator Failure"; _alternator = part.FindModuleImplementing <ModuleAlternator>(); }
protected override void DI_Start(StartState state) { if (HighLogic.LoadedSceneIsFlight) { this.alternatorModule = this.part.Modules.OfType <ModuleAlternator>().First(); this.engineManager = new EngineManager(this.part); } }
private void SetAlternatorInfo() { moduleAlternator = selectedPart.GetModule <ModuleAlternator>(); if (moduleAlternator != null) { infoItems.Add(PartInfoItem.Create("Alternator")); for (int i = 0; i < moduleAlternator.outputResources.Count; ++i) { moduleResource = moduleAlternator.outputResources[i]; infoItems.Add(PartInfoItem.Create("\t" + moduleResource.name, moduleResource.rate.ToRate())); } } }
public override bool Initialize(PartModule pm) { base.Initialize(pm); alternator = (ModuleAlternator)pm; // Test to see if the ModuleCommand actually uses power for (int i = 0; i < alternator.resHandler.outputResources.Count; i++) { if (alternator.resHandler.outputResources[i].name == "ElectricCharge") { if (alternator.resHandler.outputResources[i].rate > 0.0d) { return(true); } } } return(false); }
private void SetAlternatorInfo() { moduleAlternator = selectedPart.GetModule<ModuleAlternator>(); if (moduleAlternator != null) { infoItems.Add(PartInfoItem.Create("Alternator")); for (int i = 0; i < moduleAlternator.resHandler.outputResources.Count; ++i) { moduleResource = moduleAlternator.resHandler.outputResources[i]; infoItems.Add(PartInfoItem.Create("\t" + moduleResource.name, moduleResource.rate.ToRate())); } } }
protected override void DI_Start(StartState state) { if (HighLogic.LoadedSceneIsFlight) { this.alternatorModule = this.part.Modules.OfType<ModuleAlternator>().Single(); this.engineManager = new EngineManager(this.part); } }
/// <summary> /// Iterate over all of the modules in all of the parts and filter then /// into the myriad lists we keep, so when we do the FixedUpdate refresh /// of values, we only iterate over the modules we know we care about, /// instead of every module on every part. /// </summary> internal void UpdateModuleLists() { if (listsInvalid && vessel != null) { resources.ClearActiveStageParts(); var partsList = vessel.parts; for (int partsIdx = 0; partsIdx < partsList.Count; ++partsIdx) { string partName = partsList[partsIdx].partInfo.name; if (!RPMGlobals.ignoreAllPartModules.Contains(partName)) { List <string> modulesToIgnore; if (!RPMGlobals.ignorePartModules.TryGetValue(partName, out modulesToIgnore)) { modulesToIgnore = emptyIgnoreList; } foreach (PartModule module in partsList[partsIdx].Modules) { if (module.isEnabled && !modulesToIgnore.Contains(module.moduleName)) { if (module is ModuleEngines) { availableEngines.Add(module as ModuleEngines); } else if (module is MultiModeEngine) { availableMultiModeEngines.Add(module as MultiModeEngine); } else if (module is JSIThrustReverser) { availableThrustReverser.Add(module as JSIThrustReverser); } else if (module is ModuleAblator) { availableAblators.Add(module as ModuleAblator); } else if (module is ModuleResourceIntake) { if ((module as ModuleResourceIntake).resourceName == "IntakeAir") { availableAirIntakes.Add(module as ModuleResourceIntake); } else { JUtil.LogMessage(this, "intake resource is {0}?", (module as ModuleResourceIntake).resourceName); } } else if (module is ModuleAlternator) { ModuleAlternator alt = module as ModuleAlternator; for (int i = 0; i < alt.resHandler.outputResources.Count; ++i) { if (alt.resHandler.outputResources[i].name == "ElectricCharge") { availableAlternators.Add(alt); break; } } } else if (module is ModuleGenerator) { ModuleGenerator gen = module as ModuleGenerator; for (int i = 0; i < gen.resHandler.outputResources.Count; ++i) { if (gen.resHandler.outputResources[i].name == "ElectricCharge") { availableGenerators.Add(gen); availableGeneratorOutput.Add((float)gen.resHandler.outputResources[i].rate); break; } } } else if (module is ModuleResourceConverter) { ModuleResourceConverter gen = module as ModuleResourceConverter; ConversionRecipe recipe = gen.Recipe; for (int i = 0; i < recipe.Outputs.Count; ++i) { if (recipe.Outputs[i].ResourceName == "ElectricCharge") { availableFuelCells.Add(gen); availableFuelCellOutput.Add((float)recipe.Outputs[i].Ratio); break; } } } else if (module is ModuleDeployableSolarPanel) { ModuleDeployableSolarPanel sp = module as ModuleDeployableSolarPanel; if (sp.resourceName == "ElectricCharge") { availableSolarPanels.Add(sp); } } else if (module is ModuleGimbal) { availableGimbals.Add(module as ModuleGimbal); } else if (module is JSIRadar) { availableRadars.Add(module as JSIRadar); } else if (module is ModuleParachute) { availableParachutes.Add(module as ModuleParachute); } else if (module is ModuleWheels.ModuleWheelDeployment) { availableDeployableWheels.Add(module as ModuleWheels.ModuleWheelDeployment); } else if (module is ModuleWheels.ModuleWheelDamage) { availableWheelDamage.Add(module as ModuleWheels.ModuleWheelDamage); } else if (module is ModuleWheels.ModuleWheelBrakes) { availableWheelBrakes.Add(module as ModuleWheels.ModuleWheelBrakes); } else if (JSIParachute.rcFound && module.GetType() == JSIParachute.rcModuleRealChute) { availableRealChutes.Add(module); } } } } if (vessel.currentStage <= partsList[partsIdx].inverseStage) { JUtil.LogMessage(this, "+ stage = {0}, part invsStage = {1} for {2}", vessel.currentStage, partsList[partsIdx].inverseStage, partsList[partsIdx].partInfo.title); resources.MarkActiveStage(partsList[partsIdx].crossfeedPartSet); } else { JUtil.LogMessage(this, "- stage = {0}, part invsStage = {1} for {2}", vessel.currentStage, partsList[partsIdx].inverseStage, partsList[partsIdx].partInfo.title); } } listsInvalid = false; } }
/// <summary> /// Iterate over all of the modules in all of the parts and filter then /// into the myriad lists we keep, so when we do the FixedUpdate refresh /// of values, we only iterate over the modules we know we care about, /// instead of every module on every part. /// </summary> internal void UpdateModuleLists() { if (listsInvalid && vessel != null) { var partsList = vessel.parts; for (int partsIdx = 0; partsIdx < partsList.Count; ++partsIdx) { foreach (PartModule module in partsList[partsIdx].Modules) { if (module.isEnabled) { if (module is ModuleEngines) { availableEngines.Add(module as ModuleEngines); } else if (module is MultiModeEngine) { availableMultiModeEngines.Add(module as MultiModeEngine); } else if (module is JSIThrustReverser) { availableThrustReverser.Add(module as JSIThrustReverser); } else if (module is ModuleAblator) { availableAblators.Add(module as ModuleAblator); } else if (module is ModuleResourceIntake) { if ((module as ModuleResourceIntake).resourceName == "IntakeAir") { availableAirIntakes.Add(module as ModuleResourceIntake); } else { JUtil.LogMessage(this, "intake resource is {0}?", (module as ModuleResourceIntake).resourceName); } } else if (module is ModuleAlternator) { ModuleAlternator alt = module as ModuleAlternator; for (int i = 0; i < alt.resHandler.outputResources.Count; ++i) { if (alt.resHandler.outputResources[i].name == "ElectricCharge") { availableAlternators.Add(alt); availableAlternatorOutput.Add((float)alt.resHandler.outputResources[i].rate); break; } } } else if (module is ModuleGenerator) { ModuleGenerator gen = module as ModuleGenerator; for (int i = 0; i < gen.resHandler.outputResources.Count; ++i) { if (gen.resHandler.outputResources[i].name == "ElectricCharge") { availableGenerators.Add(gen); availableGeneratorOutput.Add((float)gen.resHandler.outputResources[i].rate); break; } } } else if (module is ModuleResourceConverter) { ModuleResourceConverter gen = module as ModuleResourceConverter; ConversionRecipe recipe = gen.Recipe; for (int i = 0; i < recipe.Outputs.Count; ++i) { if (recipe.Outputs[i].ResourceName == "ElectricCharge") { availableFuelCells.Add(gen); availableFuelCellOutput.Add((float)recipe.Outputs[i].Ratio); break; } } } else if (module is ModuleDeployableSolarPanel) { ModuleDeployableSolarPanel sp = module as ModuleDeployableSolarPanel; if (sp.resourceName == "ElectricCharge") { availableSolarPanels.Add(sp); } } else if (module is ModuleGimbal) { availableGimbals.Add(module as ModuleGimbal); } else if (module is JSIRadar) { availableRadars.Add(module as JSIRadar); } else if (module is ModuleParachute) { availableParachutes.Add(module as ModuleParachute); } else if (module is ModuleWheels.ModuleWheelDeployment) { availableDeployableWheels.Add(module as ModuleWheels.ModuleWheelDeployment); } else if (module is ModuleWheels.ModuleWheelDamage) { availableWheelDamage.Add(module as ModuleWheels.ModuleWheelDamage); } else if (module is ModuleWheels.ModuleWheelBrakes) { availableWheelBrakes.Add(module as ModuleWheels.ModuleWheelBrakes); } else if (JSIParachute.rcFound && module.GetType() == JSIParachute.rcModuleRealChute) { availableRealChutes.Add(module); } } } } listsInvalid = false; } }
/// <summary> /// Called when this module is started. /// </summary> /// <param name="state"></param> public override void OnStart(PartModule.StartState state) { if (HighLogic.LoadedSceneIsFlight) { alternator = part.Modules.OfType<ModuleAlternator>().FirstOrDefault<ModuleAlternator>(); if (!alternator) { Logger.DebugError("Part \"" + part.partInfo.name + "\" has no alternator!"); return; } if (failure != "") { BreakAlternator(false); } } base.OnStart(state); }