Exemplo n.º 1
0
		void Process_light(ModuleLight light)
		{
			if (light.useResources && light.isOn)
			{
				Resource("ElectricCharge").Consume(light.resourceAmount, "light");
			}
		}
Exemplo n.º 2
0
        public static bool IsOn(PartModule light)
        {
            switch (light.moduleName)
            {
            case "ModuleColorChanger":
            case "ModuleColorChangerConsumer":
                ModuleColorChanger castMCC = (ModuleColorChanger)light;
                return(castMCC.animState);

            case "ModuleLight":
            case "ModuleStockLightColoredLens":
            case "ModuleMultiPointSurfaceLight":
            case "ModuleColoredLensLight":
                ModuleLight castML = (ModuleLight)light;
                return(castML.isOn);

            case "ModuleAnimateGeneric":
            case "ModuleAnumateGenericConsumer":
                ModuleAnimateGeneric castMAG = (ModuleAnimateGeneric)light;
                return(!castMAG.animSwitch);

            case "WBILight":
                return((bool)light.GetType().InvokeMember("isDeployed", BindingFlags.GetField, null, light, null));

            case "ModuleKELight":
                return((bool)light.GetType().InvokeMember("isOn", BindingFlags.GetField, null, light, null));

            default:
                return(false);
            }
        }
Exemplo n.º 3
0
 protected override void DI_Start(StartState state)
 {
     if (HighLogic.LoadedSceneIsFlight)
     {
         this.lightModule = this.part.Modules.OfType <ModuleLight>().Single();
     }
 }
Exemplo n.º 4
0
 internal Light(Part part)
 {
     this.part = part;
     light     = part.InternalPart.Module <ModuleLight> ();
     if (light == null)
     {
         throw new ArgumentException("Part does not have a ModuleLight PartModule");
     }
 }
Exemplo n.º 5
0
 internal Light(Part part)
 {
     this.part = part;
     light     = part.InternalPart.Module <ModuleLight> ();
     if (light == null)
     {
         throw new ArgumentException("Part is not a light");
     }
 }
Exemplo n.º 6
0
 public void updateReferences()
 {
     lightModule = part.GetComponent <ModuleLight>();
     lightModule.resourceAmount = 0;
     lightModule.Fields["resourceAmount"].guiActive = false;
     lightModule.useResources = false;
     lights     = part.FindModelComponents <Light>();
     renderers  = part.FindModelComponents <Renderer>();
     animations = part.FindModelAnimators();
 }
        // apply type-specific hacks to enable/disable the module
        void Apply(bool b)
        {
            switch (type)
            {
            case "ProcessController":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        Lib.SetResourceFlow(part, (m as ProcessController).resource, false);
                    }
                }
                break;

            case "ModuleDeployableSolarPanel":
            case "ModuleDeployableRadiator":
                if (b)
                {
                    part.FindModelComponents <Animation>().ForEach(k => k.Stop());
                }
                break;

            case "ModuleLight":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        ModuleLight light = m as ModuleLight;
                        if (light.animationName.Length > 0)
                        {
                            new Animator(part, light.animationName).Still(0.0f);
                        }
                        else
                        {
                            part.FindModelComponents <Light>().ForEach(k => k.enabled = false);
                        }
                    }
                }
                break;

            case "ModuleEngines":
            case "ModuleEnginesFX":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ModuleEngines).Shutdown();
                    }
                }
                break;
            }
        }
Exemplo n.º 8
0
        // Updates the Unity light object to override the normal LightModule.  Allows setting of RGB, Range, Spot angle
        private void OnUISliderChange(BaseField field, object obj)
        {
            // In flight logic, no symmetry
            if (!HighLogic.LoadedSceneIsEditor)
            {
                Color lightColor = new Color
                {
                    r = RColorField * IntensityField,
                    g = GColorField * IntensityField,
                    b = BColorField * IntensityField
                };
                Light unitylight = part.GetComponentInChildren <Light>();
                unitylight.range     = 100 * (float)Math.Pow(RangeField, RangeField);
                unitylight.color     = lightColor;
                unitylight.spotAngle = ConeAngleField;
            }

            // Handle Symmetry in editor
            else
            {
                ModuleLight modulelight = part.FindModuleImplementing <ModuleLight>();

                Color lightColor = new Color
                {
                    r = modulelight.lightR * IntensityField,
                    g = modulelight.lightG * IntensityField,
                    b = modulelight.lightB * IntensityField
                };
                Light unitylight = part.GetComponentInChildren <Light>();
                unitylight.range     = 100 * (float)Math.Pow(RangeField, RangeField);
                unitylight.color     = lightColor;
                unitylight.spotAngle = ConeAngleField;
                RColorField          = modulelight.lightR;
                GColorField          = modulelight.lightG;
                BColorField          = modulelight.lightB;

                foreach (Part part in part.symmetryCounterparts)
                {
                    ModuleLightTracker lighttrackermodule = part.FindModuleImplementing <ModuleLightTracker>();
                    unitylight                     = part.GetComponentInChildren <Light>();
                    unitylight.range               = 100 * (float)Math.Pow(RangeField, RangeField);
                    unitylight.color               = lightColor;
                    unitylight.spotAngle           = ConeAngleField;
                    lighttrackermodule.RColorField = modulelight.lightR;
                    lighttrackermodule.GColorField = modulelight.lightG;
                    lighttrackermodule.BColorField = modulelight.lightB;
                }
            }
        }
Exemplo n.º 9
0
 internal override void postControllerSetup()
 {
     base.postControllerSetup();
     setupAnimationController();
     lightModule = part.GetComponent <ModuleLight>();
     if (lightModule != null && controller.wheelState == KSPWheelState.DEPLOYED)
     {
         lightModule.LightsOn();
     }
     if (vessel != null)
     {
         vessel.ActionGroups.SetGroup(KSPActionGroup.Gear, controller.wheelState == KSPWheelState.DEPLOYED);
     }
     if (!string.IsNullOrEmpty(tempColliderName))
     {
         tempColliderTransform = part.transform.FindChildren(tempColliderName)[wheelData.indexInDuplicates];
     }
 }
Exemplo n.º 10
0
        public static void Off(PartModule light)
        {
            switch (light.moduleName)
            {
            case "ModuleColorChanger":
            case "ModuleColorChangerConsumer":
                ModuleColorChanger castMCC = (ModuleColorChanger)light;
                if (castMCC.animState)
                {
                    castMCC.ToggleEvent();
                }
                break;

            case "ModuleLight":
            case "ModuleStockLightColoredLens":
            case "ModuleMultiPointSurfaceLight":
            case "ModuleColoredLensLight":
                ModuleLight castML = (ModuleLight)light;
                castML.LightsOff();
                break;

            case "ModuleAnimateGeneric":
            case "ModuleAnumateGenericConsumer":
                ModuleAnimateGeneric castMAG = (ModuleAnimateGeneric)light;
                castMAG.Toggle();
                break;

            case "WBILight":
                light.GetType().InvokeMember("TurnOffLights", BindingFlags.InvokeMethod, null, light, null);
                break;

            case "ModuleNavLight":
                light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { 0 });
                break;

            case "ModuleKELight":
                light.GetType().InvokeMember("LightsOff", BindingFlags.InvokeMethod, null, light, null);
                break;
            }
        }
 public override void OnAwake()
 {
     base.OnAwake();
     this.module = base.part.FindModuleImplementing <ModuleLight>();
 }
Exemplo n.º 12
0
        public static void On(PartModule light)
        {
            if (!settingsLoaded)
            {
                LoadSettings();
            }

            switch (light.moduleName)
            {
            case "ModuleColorChanger":
            case "ModuleColorChangerConsumer":
                ModuleColorChanger castMCC = (ModuleColorChanger)light;
                if (!castMCC.animState)
                {
                    castMCC.ToggleEvent();
                }
                break;

            case "ModuleLight":
            case "ModuleStockLightColoredLens":
            case "ModuleMultiPointSurfaceLight":
            case "ModuleColoredLensLight":
                ModuleLight castML = (ModuleLight)light;
                castML.LightsOn();
                break;

            case "ModuleAnimateGeneric":
            case "ModuleAnimateGenericConsumer":
                ModuleAnimateGeneric castMAG = (ModuleAnimateGeneric)light;
                if (castMAG.animSwitch)
                {
                    castMAG.Toggle();
                }
                break;

            case "WBILight":
                light.GetType().InvokeMember("TurnOnLights", BindingFlags.InvokeMethod, null, light, null);
                break;

            case "ModuleNavLight":
                if (generalSettings.useAviationLightsEffect && GameSettingsLive.inSunlight)
                {
                    switch (light.part.name)
                    {
                    case "lightbeacon.amber":
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { ParseNavLightStr(aviationLSettings.beaconAmber) });
                        break;

                    case "lightbeacon.red":
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { ParseNavLightStr(aviationLSettings.beaconRed) });
                        break;

                    case "lightnav.blue":
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { ParseNavLightStr(aviationLSettings.navBlue) });
                        break;

                    case "lightnav.green":
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { ParseNavLightStr(aviationLSettings.navGreen) });
                        break;

                    case "lightnav.red":
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { ParseNavLightStr(aviationLSettings.navRed) });
                        break;

                    case "lightnav.white":
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { ParseNavLightStr(aviationLSettings.navWhite) });
                        break;

                    case "lightstrobe.white":
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { ParseNavLightStr(aviationLSettings.strobeWhite) });
                        break;

                    default:
                        light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light,
                                                     new object[] { 4 });
                        break;
                    }
                }
                else
                {
                    light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { 4 });
                }
                break;

            case "ModuleKELight":
                light.GetType().InvokeMember("LightsOn", BindingFlags.InvokeMethod, null, light, null);
                break;
            }
        }
Exemplo n.º 13
0
 internal MASActionModuleLight(ModuleLight lightModule, ActionType action)
     : base(action)
 {
     this.lightModule = lightModule;
 }
Exemplo n.º 14
0
 public LightDevice(ModuleLight light)
 {
   this.light = light;
 }
 public override void OnAwake()
 {
     base.OnAwake();
     this.module = base.part.FindModuleImplementing<ModuleLight>();
 }
Exemplo n.º 16
0
        // apply type-specific hacks to enable/disable the module
        void Apply(bool b)
        {
            switch (type)
            {
            case "ProcessController":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ProcessController).ReliablityEvent(b);
                    }
                }
                break;

            case "ModuleDeployableSolarPanel":
            case "ModuleDeployableRadiator":
                if (b)
                {
                    part.FindModelComponents <Animation>().ForEach(k => k.Stop());
                }
                break;

            case "ModuleLight":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        ModuleLight light = m as ModuleLight;
                        if (light.animationName.Length > 0)
                        {
                            new Animator(part, light.animationName).Still(0.0f);
                        }
                        else
                        {
                            part.FindModelComponents <Light>().ForEach(k => k.enabled = false);
                        }
                    }
                }
                break;

            case "ModuleEngines":
            case "ModuleEnginesFX":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ModuleEngines).Shutdown();
                    }
                }
                break;

            case "ModuleEnginesRF":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        Lib.ReflectionCall(m, "Shutdown");
                    }
                }
                break;

            case "ModuleScienceExperiment":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ModuleScienceExperiment).SetInoperable();
                    }
                }
                break;

            case "Experiment":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as Experiment).ReliablityEvent(b);
                    }
                }
                break;
            }

            API.Failure.Notify(part, type, b);
        }
Exemplo n.º 17
0
 public static void ActivateModule(this ModuleLight module)
 {
     module.isEnabled = true;
     module.Events["LightsOn"].active = module.Events["LightsOn"].guiActive = true;
 }
Exemplo n.º 18
0
 public override bool Initialize(PartModule pm)
 {
     base.Initialize(pm);
     light = (ModuleLight)pm;
     return(true);
 }
Exemplo n.º 19
0
        // apply type-specific hacks to enable/disable the module
        protected void Apply(bool b)
        {
            if (b && type.StartsWith("ModuleEngines", StringComparison.Ordinal))
            {
                foreach (PartModule m in modules)
                {
                    var e = m as ModuleEngines;
                    e.Shutdown();
                    e.EngineIgnited = false;
                    e.flameout      = true;

                    var efx = m as ModuleEnginesFX;
                    if (efx != null)
                    {
                        efx.DeactivateRunningFX();
                        efx.DeactivatePowerFX();
                        efx.DeactivateLoopingFX();
                    }
                }
            }

            switch (type)
            {
            case "ProcessController":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ProcessController).ReliablityEvent(b);
                    }
                }
                break;

            case "ModuleDeployableRadiator":
                if (b)
                {
                    part.FindModelComponents <Animation>().ForEach(k => k.Stop());
                }
                break;

            case "ModuleLight":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        ModuleLight l = m as ModuleLight;
                        if (l.animationName.Length > 0)
                        {
                            new Animator(part, l.animationName).Still(0.0f);
                        }
                        else
                        {
                            part.FindModelComponents <Light>().ForEach(k => k.enabled = false);
                        }
                    }
                }
                break;

            case "ModuleRCSFX":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        var e = m as ModuleRCSFX;
                        if (e != null)
                        {
                            e.DeactivateFX();
                            e.DeactivatePowerFX();
                        }
                    }
                }
                break;

            case "ModuleScienceExperiment":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ModuleScienceExperiment).SetInoperable();
                    }
                }
                break;

            case "Experiment":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as Experiment).ReliablityEvent(b);
                    }
                }
                break;

            case "SolarPanelFixer":
                foreach (PartModule m in modules)
                {
                    (m as SolarPanelFixer).ReliabilityEvent(b);
                }
                break;
            }

            API.Failure.Notify(part, type, b);
        }
Exemplo n.º 20
0
 public override void OnStart(PartModule.StartState state)
 {
     base.OnStart(state);
     this.module = base.part.FindModuleImplementing<ModuleLight>();
 }
Exemplo n.º 21
0
        // apply type-specific hacks to enable/disable the module
        void Apply(bool b)
        {
            switch (type)
            {
            case "ProcessController":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        Lib.SetResourceFlow(part, (m as ProcessController).resource, false);
                    }
                }
                break;

            case "ModuleDeployableSolarPanel":
            case "ModuleDeployableRadiator":
                if (b)
                {
                    part.FindModelComponents <Animation>().ForEach(k => k.Stop());
                }
                break;

            case "ModuleLight":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        ModuleLight light = m as ModuleLight;
                        if (light.animationName.Length > 0)
                        {
                            new Animator(part, light.animationName).Still(0.0f);
                        }
                        else
                        {
                            part.FindModelComponents <Light>().ForEach(k => k.enabled = false);
                        }
                    }
                }
                break;

            case "ModuleEngines":
            case "ModuleEnginesFX":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ModuleEngines).Shutdown();
                    }
                }
                break;

            case "ModuleEnginesRF":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        Lib.ReflectionCall(m, "Shutdown");
                    }
                }
                break;

            case "ModuleScienceExperiment":
                if (b)
                {
                    foreach (PartModule m in modules)
                    {
                        (m as ModuleScienceExperiment).SetInoperable();
                    }
                }
                break;
            }

            if (RemoteTech.Enabled)
            {
                foreach (PartModule m in part.FindModulesImplementing <PartModule>())
                {
                    if (RemoteTech.IsAntenna(m))
                    {
                        RemoteTech.SetBroken(m, b);
                    }
                }
            }
        }
Exemplo n.º 22
0
 public void updateReferences()
 {
     lightModule = part.GetComponent<ModuleLight>();
     lightModule.resourceAmount = 0;
     lightModule.Fields["resourceAmount"].guiActive = false;
     lightModule.useResources = false;
     lights = part.FindModelComponents<Light>();
     renderers = part.FindModelComponents<Renderer>();
     animations = part.FindModelAnimators();
 }
Exemplo n.º 23
0
 public static void DeactivateModule(this ModuleLight module)
 {
     module.LightsOff();
     module.Events["LightsOn"].active = module.Events["LightsOn"].guiActive = false;
     module.isEnabled = false;
 }
        /// <summary>
        /// Called when the part is started.
        /// </summary>
        /// <param name="state">The start state.</param>
        public override void OnStart(PartModule.StartState state)
        {
            base.OnStart(state);

            if (HighLogic.LoadedSceneIsFlight)
            {
                mLight = part.Modules.OfType<ModuleLight>().FirstOrDefault<ModuleLight>();

                if (!mLight)
                {
                    Logger.DebugError("mLight is NULL!");
                }

                if (failure != "")
                {
                    BustBulb(false);
                }

                Fields["quality"].guiName = "Light " + Fields["quality"].guiName;
            }
        }
Exemplo n.º 25
0
 public override void OnStart(PartModule.StartState state)
 {
     base.OnStart(state);
     this.module = base.part.FindModuleImplementing <ModuleLight>();
 }
Exemplo n.º 26
0
 static void ProcessLight(Vessel v, ProtoPartSnapshot p, ProtoPartModuleSnapshot m, ModuleLight light, resource_info ec, double elapsed_s)
 {
     if (light.useResources && Lib.Proto.GetBool(m, "isOn"))
     {
         ec.Consume(light.resourceAmount * elapsed_s);
     }
 }
Exemplo n.º 27
0
 protected override void DI_Start(StartState state)
 {
     if (HighLogic.LoadedSceneIsFlight)
     {
         this.lightModule = this.part.Modules.OfType<ModuleLight>().Single();
     }
 }