コード例 #1
0
ファイル: ODFC.cs プロジェクト: linuxgurugamer/ODFCr
        public override void OnStart(StartState state)
        {
            if (ElectricChargeID == default(int))
            {
                ElectricChargeID = PartResourceLibrary.Instance.GetDefinition("ElectricCharge").id;
            }

            configNode  = ConfigNode.Parse(scn).GetNode("MODULE");
            ODFC_config = new cfg(configNode, part);

            // One puppy will explode for every question you ask about this code.  Please, think of the puppies.

            udft();

            if (ODFC_config.modes.Length < 2)
            {   // Disable unnecessary UI elements if we only have a single mode
                Events["nextFuel"].guiActive       = false;
                Events["nextFuel"].guiActiveEditor = false;

                // added next two lines for v0.0.1.9 because if only one mode, don't need any prev/next functions.
                Events["previousFuel"].guiActive       = false;
                Events["previousFuel"].guiActiveEditor = false;

                Fields["fuel_consumption"].guiActive       = false;
                Fields["fuel_consumption"].guiActiveEditor = false;
                Actions["previousFuelModeAction"].active   = false;
                Actions["nextFuelModeAction"].active       = false;
            }
            else
            {           // If we have at least 2 modes
                if (ODFC_config.modes.Length > 2)
                {       // If we have at least 3 modes
                    Events["previousFuelMode"].guiActive       = true;
                    Events["previousFuelMode"].guiActiveEditor = true;
                }
                else
                {                           // If we have exactly 2 modes
                    Actions["previousFuelModeAction"].active = false;
                }

                foreach (mode m in ODFC_config.modes)
                {   // Show byproducts tweakable if at least one mode has at least one byproduct
                    if (m.byproducts.Length > 0)
                    {
                        Fields["byproducts"].guiActive       = true;
                        Fields["byproducts"].guiActiveEditor = true;
                        break;
                    }
                }
            }

            if (state != StartState.Editor)
            {
                part.force_activate();
            }
        }
コード例 #2
0
        public override void OnStart(StartState ss)
        {
            a   = part.FindModelComponent <Animation>();
            ast = (a == null) ? null : a[a.clip.name];

            if (ecid == default(int))
            {
                ecid = PartResourceLibrary.Instance.GetDefinition("ElectricCharge").id;
            }

            cn = ConfigNode.Parse(scn).GetNode("MODULE");
            c  = new cfg(cn, part);

            foreach (ConfigNode.Value cnv in cn.GetNode("FSHORT").values)
            {
                int rid = PartResourceLibrary.Instance.GetDefinition(cnv.name).id;

                if (!rlas.Exists(x => x.rid == rid))
                {
                    rlas.Add(new rla(rid, cnv.value));
                }
            }

            // One kitten will explode for every question you ask about this code.  Please, think of the kittens. {
            if (ns)
            {
                ns = false;

                foreach (KSPParticleEmitter kpe in part.FindModelComponents <KSPParticleEmitter>() ?? new List <KSPParticleEmitter>())
                {
                    // Why isn't there just one variable (Vector3 for shape3D) and then just use only the floats you need in that?  Oh, that would make too much sense.
                    kpe.shape3D       *= c.sh;
                    kpe.shape2D       *= c.sh;
                    kpe.shape1D       *= c.sh;
                    kpe.minSize       *= c.sh;
                    kpe.maxSize       *= c.sh;
                    kpe.rndVelocity   *= c.sh;
                    kpe.localVelocity *= c.sh;
                    kpe.force         *= c.sh;
                    kpe.rndForce      *= c.sh;
                }

                foreach (Light l in part.FindModelComponents <Light>() ?? new List <Light>())
                {
                    l.range *= c.sh;
                }
            }
            // }

            udft();

            if (c.ms.Length < 2)                // Disable unneccessary UI elements if we only have a single mode
            {
                Events["nextFuel"].guiActive       = false;
                Events["nextFuel"].guiActiveEditor = false;
                Fields["fmod_t"].guiActive         = false;
                Fields["fmod_t"].guiActiveEditor   = false;
                Actions["pfm"].active = false;
                Actions["nfm"].active = false;
            }
            else                                                // If we have at least 2 modes
            {
                if (c.ms.Length > 2)                            // If we have at least 3 modes
                {
                    Events["prevFuel"].guiActive       = true;
                    Events["prevFuel"].guiActiveEditor = true;
                }
                else                                                                            // If we have exactly 2 modes
                {
                    Actions["pfm"].active = false;
                }

                foreach (mode m in c.ms)                        // Show byproducts tweakable if at least one mode has at least one byproduct
                {
                    if (m.bypr.Length > 0)
                    {
                        Fields["bypr_t"].guiActive       = true;
                        Fields["bypr_t"].guiActiveEditor = true;
                        break;
                    }
                }
            }

            if (ss != StartState.Editor)
            {
                part.force_activate();
            }
        }