public override bool Initialize(PartModule pm)
 {
     base.Initialize(pm);
     harvester = (ModuleResourceHarvester)pm;
     core      = pm.GetComponent <ModuleCoreHeat>();
     return(harvester.GeneratesHeat);
 }
 public void Start()
 {
     if (HighLogic.LoadedSceneIsFlight)
     {
         core = this.GetComponent <ModuleCoreHeat>();
     }
     Fields["RadiatorStatus"].guiName = Localizer.Format("#LOC_NFElectrical_ModuleFissionFlowRadiator_Field_RadiatorStatus");
 }
示例#3
0
 private void Start()
 {
     heat     = (ModuleCoreHeat)((Component)this).GetComponent <ModuleCoreHeat>();
     Variants = new List <PartVariant>();
     Variants.Add(new PartVariant("Fission", "Fission", part.attachNodes));
     Variants.Add(new PartVariant("Fusion", "Fusion", part.attachNodes));
     ((UI_VariantSelector)Fields[nameof(Type)].uiControlEditor).variants = Variants;
 }
示例#4
0
 private void SetHeatParams()
 {
     this.part.AddModule("ModuleCoreHeat");
     coreHeat = this.part.Modules.GetModule <ModuleCoreHeat>();
     coreHeat.CoreTempGoal = maxCoreTemp * 1.4;  // placeholder value, there is no optimum temperature
     coreHeat.CoolantTransferMultiplier *= 2d;
     coreHeat.HeatRadiantMultiplier     *= 2d;
 }
        public override void OnStart(PartModule.StartState state)
        {
            base.OnStart(state);
            furnaceTempField = Fields["furnaceTemp"];
            EL_Utils.SetupEVAEvent(Events["StartResourceConverter"], EVARange);
            EL_Utils.SetupEVAEvent(Events["StopResourceConverter"], EVARange);

            coreHeat = part.FindModuleImplementing <ModuleCoreHeat> ();
        }
 public void Start()
 {
     StartCoroutine(InitValues());
     coreModule = part.Modules.GetModules <ModuleCoreHeat>().FirstOrDefault();
     if (coreModule != null)
     {
         Fields["coreTemp"].guiActive = true;
     }
 }
        public override void OnStart(PartModule.StartState state)
        {
            if (UseStagingIcon)
            {
                //this.part.stackIcon.CreateIcon();
                //this.part.stackIcon.SetIcon(DefaultIcons.FUEL_TANK);
            }
            else
            {
                Utils.LogWarn("Fission Reactor: Staging Icon Disabled!");
            }

            if (state != StartState.Editor)
            {
                core = this.GetComponent <ModuleCoreHeat>();
                if (core == null)
                {
                    Utils.LogError("Fission Reactor: Could not find core heat module!");
                }

                SetupResourceRatios();
                // Set up staging icon heat bar

                if (UseStagingIcon)
                {
                    infoBox = this.part.stackIcon.DisplayInfo();

                    //infoBox.SetMsgBgColor(XKCDColors.RedOrange);
                    //infoBox.SetMsgTextColor(XKCDColors.Orange);
                    //infoBox.SetLength(1.0f);
                    //infoBox.SetValue(0.0f);
                    //infoBox.SetMessage("Meltdwn");
                    //infoBox.SetProgressBarBgColor(XKCDColors.RedOrange);
                    //infoBox.SetProgressBarColor(XKCDColors.Orange);
                }

                if (OverheatAnimation != "")
                {
                    overheatStates = Utils.SetUpAnimation(OverheatAnimation, this.part);
                }

                if (UseForcedActivation)
                {
                    this.part.force_activate();
                }
            }
            else
            {
                this.CurrentSafetyOverride = this.NominalTemperature;
            }


            base.OnStart(state);
        }
        public override bool Initialize(PartModule pm)
        {
            base.Initialize(pm);
            core = (ModuleCoreHeat)pm;

            if (core.MaxCoolant > 0f)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
示例#9
0
 public void Start()
 {
     core = GetComponent <ModuleCoreHeat>();
     if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)
     {
         if (fuelModuleID != "")
         {
             fuelColorChanger = this.GetComponents <ModuleColorChanger>().ToList().Find(i => i.moduleID == fuelModuleID);
         }
         if (wasteModuleID != "")
         {
             wasteColorChanger = this.GetComponents <ModuleColorChanger>().ToList().Find(i => i.moduleID == wasteModuleID);
         }
     }
 }
        public void Start()
        {
            if (base.vessel == null)
            {
                return;
            }

            _emissiveColor = new Color();
            _propertyBlock = new MaterialPropertyBlock();

            if (enableHeatEmissive)
            {
                if (useCoreTemp)
                {
                    _coreHeatModule = base.part.FindModuleImplementing <ModuleCoreHeat>();
                    if (_coreHeatModule == null)
                    {
                        this.LogError("Part has no Core Heat module, skipping");
                        useCoreTemp = false;
                    }
                }

                if (double.IsNaN(lerpMax))
                {
                    if (useCoreTemp)
                    {
                        lerpMax = _coreHeatModule.CoreShutdownTemp;
                    }
                    else
                    {
                        lerpMax = useSkinTemp ? part.skinMaxTemp : part.maxTemp;
                    }
                }

                _lerpRange = lerpMax - lerpMin - draperPoint;

                _shaderPropertyID = Shader.PropertyToID(shaderProperty);
            }

            if (disableBlackbody)
            {
                _shaderBlackbodyID = Shader.PropertyToID(_shaderBlackbody);
            }
        }
 private void SetupReactor()
 {
     reactor = this.GetComponent<FissionReactor>();
     flowRadiator = this.GetComponent<FissionFlowRadiator>();
     core = this.GetComponent<ModuleCoreHeat>();
 }
        public override void OnStart(PartModule.StartState state)
        {
            throttleCurve = new FloatCurve();
            throttleCurve.Add(0, 0, 0, 0);
            throttleCurve.Add(70, 10, 0, 0);
            throttleCurve.Add(100, 100, 0, 0);

            if (UseStagingIcon)
            {
                //this.part.stackIcon.CreateIcon();
                //this.part.stackIcon.SetIcon(DefaultIcons.FUEL_TANK);
            }
            else
                Utils.LogWarn("Fission Reactor: Staging Icon Disabled!");

            if (state != StartState.Editor)
            {
                core = this.GetComponent<ModuleCoreHeat>();
                if (core == null)
                    Utils.LogError("Fission Reactor: Could not find core heat module!");

                SetupResourceRatios();
                // Set up staging icon heat bar

                if (UseStagingIcon)
                {
                    infoBox = this.part.stackIcon.DisplayInfo();

                    //infoBox.SetMsgBgColor(XKCDColors.RedOrange);
                    //infoBox.SetMsgTextColor(XKCDColors.Orange);
                    //infoBox.SetLength(1.0f);
                    //infoBox.SetValue(0.0f);
                    //infoBox.SetMessage("Meltdwn");
                    //infoBox.SetProgressBarBgColor(XKCDColors.RedOrange);
                    //infoBox.SetProgressBarColor(XKCDColors.Orange);
                }

                if (OverheatAnimation != "")
                    overheatStates = Utils.SetUpAnimation(OverheatAnimation, this.part);

                if (UseForcedActivation)
                    this.part.force_activate();

            } else
            {
                this.CurrentSafetyOverride = this.NominalTemperature;
            }

            base.OnStart(state);
        }
示例#13
0
        public void OverriddenStart()
        {
            var range = (UI_FloatRange)this.Fields["CurrentSafetyOverride"].uiControlEditor;

            range.minValue = 0f;
            range.maxValue = MaximumTemperature;

            range          = (UI_FloatRange)this.Fields["CurrentSafetyOverride"].uiControlFlight;
            range.minValue = 0f;
            range.maxValue = MaximumTemperature;

            throttleCurve = new FloatCurve();
            throttleCurve.Add(0, 0, 0, 0);
            throttleCurve.Add(50, 20, 0, 0);
            throttleCurve.Add(100, 100, 0, 0);

            Actions["TogglePanelAction"].guiName = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Action_TogglePanelAction");

            Events["ShowReactorControl"].guiName = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Event_ShowReactorControl");
            Events["RepairReactor"].guiName      = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Event_RepairReactor");

            Fields["CurrentSafetyOverride"].guiName = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Field_CurrentSafetyOverride");
            Fields["CurrentPowerPercent"].guiName   = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Field_CurrentPowerPercent");
            Fields["ReactorOutput"].guiName         = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Field_ReactorOutput");
            Fields["ThermalTransfer"].guiName       = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Field_ThermalTransfer");
            Fields["CoreTemp"].guiName   = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Field_CoreTemp");
            Fields["CoreStatus"].guiName = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Field_CoreStatus");
            Fields["FuelStatus"].guiName = Localizer.Format("#LOC_NFElectrical_ModuleFissionReactor_Field_FuelStatus");


            if (FirstLoad)
            {
                this.CurrentSafetyOverride = this.CriticalTemperature;
                FirstLoad = false;
            }

            if (HighLogic.LoadedScene != GameScenes.EDITOR)
            {
                core = this.GetComponent <ModuleCoreHeat>();
                if (core == null)
                {
                    Utils.LogError("Fission Reactor: Could not find core heat module!");
                }

                SetupResourceRatios();

                if (OverheatAnimation != "")
                {
                    overheatStates = Utils.SetUpAnimation(OverheatAnimation, this.part);
                }

                if (FollowThrottle)
                {
                    reactorEngine = this.GetComponent <FissionEngine>();
                }
            }
            else
            {
                //this.CurrentSafetyOverride = this.NominalTemperature;
            }
        }
示例#14
0
        protected void updateDrill()
        {
            bool   enableDrill = false;
            float  value;
            string resourceName;
            ModuleResourceHarvester harvester = this.part.FindModuleImplementing <ModuleResourceHarvester>();

            //No drill? No need to proceed.
            if (harvester == null)
            {
                return;
            }

            //See if the drill is enabled.
            if (CurrentTemplate.HasValue("enableDrill"))
            {
                enableDrill = bool.Parse(CurrentTemplate.GetValue("enableDrill"));
            }

            ModuleOverheatDisplay overheat = this.part.FindModuleImplementing <ModuleOverheatDisplay>();

            if (overheat != null)
            {
                overheat.enabled   = enableDrill;
                overheat.isEnabled = enableDrill;
            }

            ModuleCoreHeat coreHeat = this.part.FindModuleImplementing <ModuleCoreHeat>();

            if (coreHeat != null)
            {
                coreHeat.enabled   = enableDrill;
                coreHeat.isEnabled = enableDrill;
            }

            WBIDrillSwitcher drillSwitcher = this.part.FindModuleImplementing <WBIDrillSwitcher>();

            if (drillSwitcher != null)
            {
                drillSwitcher.enabled   = enableDrill;
                drillSwitcher.isEnabled = enableDrill;
            }

            WBIEfficiencyMonitor extractionMonitor = this.part.FindModuleImplementing <WBIEfficiencyMonitor>();

            if (extractionMonitor != null)
            {
                extractionMonitor.enabled   = enableDrill;
                extractionMonitor.isEnabled = enableDrill;
            }

            //Update the drill
            if (enableDrill)
            {
                harvester.EnableModule();
            }
            else
            {
                harvester.DisableModule();
            }

            //Setup drill parameters
            if (enableDrill)
            {
                if (CurrentTemplate.HasValue("converterName"))
                {
                    harvester.ConverterName = CurrentTemplate.GetValue("converterName");
                }

                if (CurrentTemplate.HasValue("drillStartAction"))
                {
                    harvester.StartActionName = CurrentTemplate.GetValue("drillStartAction");
                    harvester.Events["StartResourceConverter"].guiName = CurrentTemplate.GetValue("drillStartAction");
                }

                if (CurrentTemplate.HasValue("drillStopAction"))
                {
                    harvester.StopActionName = CurrentTemplate.GetValue("drillStopAction");
                    harvester.Events["StopResourceConverter"].guiName = CurrentTemplate.GetValue("drillStopAction");
                }

                if (CurrentTemplate.HasValue("drillEficiency"))
                {
                    harvester.Efficiency = float.Parse(CurrentTemplate.GetValue("drillEficiency"));
                }

                if (CurrentTemplate.HasValue("drillResource"))
                {
                    resourceName           = CurrentTemplate.GetValue("drillResource");
                    harvester.ResourceName = resourceName;
                    harvester.Fields["ResourceStatus"].guiName = resourceName + " rate";
                }

                if (CurrentTemplate.HasValue("drillElectricCharge"))
                {
                    if (float.TryParse(CurrentTemplate.GetValue("drillElectricCharge"), out value))
                    {
                        ResourceRatio[] inputRatios = harvester.inputList.ToArray();
                        for (int inputIndex = 0; inputIndex < inputRatios.Length; inputIndex++)
                        {
                            if (inputRatios[inputIndex].ResourceName == "ElectricCharge")
                            {
                                inputRatios[inputIndex].Ratio = value;
                            }
                        }
                    }
                }

                harvester.Fields["status"].guiName = "Drill Status";
                MonoUtilities.RefreshContextWindows(this.part);
            }
        }
        public override void OnStart(PartModule.StartState state)
        {
            var range = (UI_FloatRange)this.Fields["CurrentSafetyOverride"].uiControlEditor;
            range.minValue = 0f;
            range.maxValue = MaximumTemperature;

            range = (UI_FloatRange)this.Fields["CurrentSafetyOverride"].uiControlFlight;
            range.minValue = 0f;
            range.maxValue = MaximumTemperature;

            throttleCurve = new FloatCurve();
            throttleCurve.Add(0, 0, 0, 0);
            throttleCurve.Add(50, 20, 0, 0);
            throttleCurve.Add(100, 100, 0, 0);

            if (UseStagingIcon)
            {
                //this.part.stackIcon.CreateIcon();
                //this.part.stackIcon.SetIcon(DefaultIcons.FUEL_TANK);
            }
            else
                Utils.LogWarn("Fission Reactor: Staging Icon Disabled!");

            if (FirstLoad)
            {
              this.CurrentSafetyOverride = this.CriticalTemperature;
              FirstLoad = false;
            }

            if (state != StartState.Editor)
            {
                core = this.GetComponent<ModuleCoreHeat>();
                if (core == null)
                    Utils.LogError("Fission Reactor: Could not find core heat module!");

                SetupResourceRatios();
                // Set up staging icon heat bar

                if (UseStagingIcon)
                {
                    infoBox = this.part.stackIcon.DisplayInfo();
                }

                if (OverheatAnimation != "")
                    overheatStates = Utils.SetUpAnimation(OverheatAnimation, this.part);

                if (FollowThrottle)
                    reactorEngine = this.GetComponent<FissionEngine>();

                if (UseForcedActivation)
                    this.part.force_activate();

            } else
            {
                //this.CurrentSafetyOverride = this.NominalTemperature;
            }

            base.OnStart(state);
        }
 private void SetupReactor()
 {
     reactor      = this.GetComponent <FissionReactor>();
     flowRadiator = this.GetComponent <FissionFlowRadiator>();
     core         = this.GetComponent <ModuleCoreHeat>();
 }
示例#17
0
        public override void OnStart(PartModule.StartState state)
        {
            var range = (UI_FloatRange)this.Fields["CurrentSafetyOverride"].uiControlEditor;

            range.minValue = 0f;
            range.maxValue = MaximumTemperature;

            range          = (UI_FloatRange)this.Fields["CurrentSafetyOverride"].uiControlFlight;
            range.minValue = 0f;
            range.maxValue = MaximumTemperature;

            throttleCurve = new FloatCurve();
            throttleCurve.Add(0, 0, 0, 0);
            throttleCurve.Add(50, 20, 0, 0);
            throttleCurve.Add(100, 100, 0, 0);

            if (UseStagingIcon)
            {
                //this.part.stackIcon.CreateIcon();
                //this.part.stackIcon.SetIcon(DefaultIcons.FUEL_TANK);
            }
            else
            {
                Utils.LogWarn("Fission Reactor: Staging Icon Disabled!");
            }

            if (FirstLoad)
            {
                this.CurrentSafetyOverride = this.CriticalTemperature;
                FirstLoad = false;
            }

            if (state != StartState.Editor)
            {
                core = this.GetComponent <ModuleCoreHeat>();
                if (core == null)
                {
                    Utils.LogError("Fission Reactor: Could not find core heat module!");
                }

                SetupResourceRatios();
                // Set up staging icon heat bar

                if (UseStagingIcon)
                {
                    infoBox = this.part.stackIcon.DisplayInfo();
                }

                if (OverheatAnimation != "")
                {
                    overheatStates = Utils.SetUpAnimation(OverheatAnimation, this.part);
                }

                if (FollowThrottle)
                {
                    reactorEngine = this.GetComponent <FissionEngine>();
                }

                if (UseForcedActivation)
                {
                    this.part.force_activate();
                }
            }
            else
            {
                //this.CurrentSafetyOverride = this.NominalTemperature;
            }


            base.OnStart(state);
        }