Example #1
0
 protected override void Overrides()
 {
     Fields["displayChance"].guiName = "Chance of Alternator Failure";
     Fields["safetyRating"].guiName  = "Alternator Safety Rating";
     failureType = "Alternator Failure";
     _alternator = part.FindModuleImplementing <ModuleAlternator>();
 }
Example #2
0
 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()));
         }
     }
 }
Example #4
0
        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()));
         }
     }
 }
Example #6
0
 protected override void DI_Start(StartState state)
 {
     if (HighLogic.LoadedSceneIsFlight)
     {
         this.alternatorModule = this.part.Modules.OfType<ModuleAlternator>().Single();
         this.engineManager = new EngineManager(this.part);
     }
 }
Example #7
0
        /// <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;
            }
        }
Example #8
0
        /// <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);
        }