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(); } }
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(); } }