//Main GUI window private void Window(int id) { GUILayout.BeginVertical(); #region Info labels StringBuilder builder = new StringBuilder(); builder.Append("Selected part: ").AppendLine(this.part.partInfo.title); builder.Append("Symmetry counterparts: ").AppendLine(this.part.symmetryCounterparts.Count.ToString()); builder.Append("Case mass: ").Append(rcModule.caseMass.ToString()).Append("t"); if (sizes.Count > 0) { builder.Append("\t\t\t\t\tCase cost: ").Append(this.sizes[pChute.size].cost.ToString()).Append("f"); } builder.Append("\nTotal part mass: ").Append(this.part.TotalMass().ToString("0.###")).Append("t"); builder.Append("\t\t\tTotal case part cost: ").Append(this.part.TotalCost().ToString("0.#")).Append("f"); GUILayout.Label(builder.ToString(), skins.label); #endregion #region Presets GUILayout.BeginHorizontal(); if (GUILayout.Button("Select a preset", skins.button)) { this.presetVisible = !this.presetVisible; } if (GUILayout.Button("Save as preset...", skins.button)) { this.presetSaveVisible = !this.presetSaveVisible; } GUILayout.EndHorizontal(); #endregion mainScroll = GUILayout.BeginScrollView(mainScroll, false, false, skins.horizontalScrollbar, skins.verticalScrollbar); #region Planet selector GUILayout.Space(10); GUILayout.BeginHorizontal(GUILayout.Height(30)); GUILayout.BeginVertical(); GUILayout.FlexibleSpace(); GUILayout.Label("Target planet:", skins.label); GUILayout.FlexibleSpace(); GUILayout.EndVertical(); pChute.planets = GUILayout.SelectionGrid(pChute.planets, pChute.bodies.bodyNames, 4, skins.button, GUILayout.Width(250)); GUILayout.EndHorizontal(); pChute.body = pChute.bodies.GetBody(pChute.planets); #endregion #region Size cyclers if (sizes.Count > 0) { GUILayout.BeginHorizontal(GUILayout.Height(20)); GUILayout.BeginVertical(); GUILayout.FlexibleSpace(); GUILayout.Label("Cycle part size", skins.label); GUILayout.EndVertical(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Previous size", skins.button, GUILayout.Width(125))) { pChute.size--; if (pChute.size < 0) { pChute.size = sizes.Count - 1; } } if (GUILayout.Button("Next size", skins.button, GUILayout.Width(125))) { pChute.size++; if (pChute.size > sizes.Count - 1) { pChute.size = 0; } } GUILayout.EndHorizontal(); } #endregion GUILayout.Space(5); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); #region Texture selectors GUILayout.Space(5); chutes[0].TextureSelector(); #endregion #region General //Materials editor GUILayout.Space(5); chutes[0].MaterialsSelector(); //MustGoDown GUILayout.Space(5); GUILayout.BeginHorizontal(GUILayout.MaxWidth(window.width)); GUILayout.Label("Must go down to deploy:", skins.label); if (GUILayout.Toggle(pChute.mustGoDown, "True", skins.toggle)) { pChute.mustGoDown = true; } GUILayout.FlexibleSpace(); if (GUILayout.Toggle(!pChute.mustGoDown, "False", skins.toggle)) { pChute.mustGoDown = false; } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); //DeployOnGround GUILayout.Space(5); GUILayout.BeginHorizontal(GUILayout.MaxWidth(window.width)); GUILayout.Label("Deploy on ground contact:", skins.label); if (GUILayout.Toggle(pChute.deployOnGround, "True", skins.toggle)) { pChute.deployOnGround = true; } GUILayout.FlexibleSpace(); if (GUILayout.Toggle(!pChute.deployOnGround, "False", skins.toggle)) { pChute.deployOnGround = false; } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); //Timer GUILayout.Space(5); GUILayout.BeginHorizontal(); if (RCUtils.CanParseTime(pChute.timer) && RCUtils.CheckRange(RCUtils.ParseTime(pChute.timer), 0, 3600)) { GUILayout.Label("Deployment timer:", skins.label); } else { GUILayout.Label("Deployment timer:", RCUtils.redLabel); } GUILayout.FlexibleSpace(); pChute.timer = GUILayout.TextField(pChute.timer, 10, skins.textField, GUILayout.Width(150)); GUILayout.EndHorizontal(); //Spares GUILayout.Space(5); GUILayout.BeginHorizontal(); if (RCUtils.CanParseWithEmpty(pChute.spares) && RCUtils.CheckRange(RCUtils.ParseWithEmpty(pChute.spares), -1, 10) && RCUtils.IsWholeNumber(RCUtils.ParseWithEmpty(pChute.spares))) { GUILayout.Label("Spare chutes:", skins.label); } else { GUILayout.Label("Spare chutes:", RCUtils.redLabel); } GUILayout.FlexibleSpace(); pChute.spares = GUILayout.TextField(pChute.spares, 10, skins.textField, GUILayout.Width(150)); GUILayout.EndHorizontal(); //CutSpeed CreateEntryArea("Autocut speed (m/s):", ref pChute.cutSpeed, 0.01f, 100); //LandingAlt CreateEntryArea("Landing alt (m):", ref pChute.landingAlt, 0, (float)pChute.body.GetMaxAtmosphereAltitude()); #endregion #region Main //Indicator label GUILayout.Space(10); GUILayout.Label("________________________________________________", RCUtils.boldLabel); GUILayout.Label("Main chute:", RCUtils.boldLabel, GUILayout.Width(150)); GUILayout.Label("‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾", RCUtils.boldLabel); chutes[0].Calculations(); #endregion #region Secondary if (pChute.secondaryChute) { for (int i = 1; i < chutes.Count; i++) { ChuteTemplate chute = chutes[i]; //Indicator label GUILayout.Space(10); GUILayout.Label("________________________________________________", RCUtils.boldLabel); GUILayout.Label("Chute #" + (i + 1) + " :", RCUtils.boldLabel, GUILayout.Width(150)); GUILayout.Label("‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾", RCUtils.boldLabel); #region Texture selectors GUILayout.Space(5); chute.TextureSelector(); #endregion //Materials editor GUILayout.Space(5); chute.MaterialsSelector(); chute.Calculations(); } } #endregion GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); #region Application GUILayout.Space(5); if (GUILayout.Button("Apply settings", skins.button)) { pChute.Apply(false); } if (part.symmetryCounterparts.Count > 0) { if (GUILayout.Button("Apply to all symmetry counterparts", skins.button)) { pChute.Apply(true); } } #endregion GUILayout.EndVertical(); }
//Main GUI window private void Window(int id) { GUILayout.BeginVertical(); #region Info labels GUILayout.Label("Selected part: " + this.part.partInfo.title, skins.label); GUILayout.Label("Symmetry counterparts: " + (this.part.symmetryCounterparts.Count), skins.label); GUILayout.Label("Case mass: " + rcModule.caseMass + "t", skins.label); GUILayout.Label("Total part mass: " + this.part.TotalMass().ToString("0.###") + "t", skins.label); #endregion #region Presets GUILayout.BeginHorizontal(); if (GUILayout.Button("Select a preset", skins.button)) { this.presetVisible = !this.presetVisible; } if (GUILayout.Button("Save as preset...", skins.button)) { this.presetSaveVisible = !this.presetSaveVisible; } GUILayout.EndHorizontal(); #endregion #region Planet selector GUILayout.Space(10); GUILayout.BeginHorizontal(GUILayout.Height(30)); GUILayout.BeginVertical(); GUILayout.FlexibleSpace(); GUILayout.Label("Target planet:", skins.label); GUILayout.FlexibleSpace(); GUILayout.EndVertical(); planets = GUILayout.SelectionGrid(planets, bodies.GetNames(), 4, skins.button, GUILayout.Width(250)); GUILayout.EndHorizontal(); body = bodies.GetBody(planets); #endregion #region Size cyclers if (sizes.Count > 0) { GUILayout.BeginHorizontal(GUILayout.Height(20)); GUILayout.BeginVertical(); GUILayout.FlexibleSpace(); GUILayout.Label("Cycle part size", skins.label); GUILayout.EndVertical(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Previous size", skins.button, GUILayout.Width(125))) { size--; if (size < 0) { size = sizes.Count - 1; } } if (GUILayout.Button("Next size", skins.button, GUILayout.Width(125))) { size++; if (size > sizes.Count - 1) { size = 0; } } GUILayout.EndHorizontal(); } #endregion GUILayout.Space(5); mainScroll = GUILayout.BeginScrollView(mainScroll, false, false, skins.horizontalScrollbar, skins.verticalScrollbar); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); #region Texture selectors GUILayout.Space(5); main.TextureSelector(); #endregion #region General //Materials editor GUILayout.Space(5); main.MaterialsSelector(); //MustGoDown GUILayout.Space(5); GUILayout.BeginHorizontal(GUILayout.MaxWidth(window.width)); GUILayout.Label("Must go down to deploy:", skins.label); if (GUILayout.Toggle(mustGoDown, "True", skins.toggle)) { mustGoDown = true; } GUILayout.FlexibleSpace(); if (GUILayout.Toggle(!mustGoDown, "False", skins.toggle)) { mustGoDown = false; } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); //DeployOnGround GUILayout.Space(5); GUILayout.BeginHorizontal(GUILayout.MaxWidth(window.width)); GUILayout.Label("Deploy on ground contact:", skins.label); if (GUILayout.Toggle(deployOnGround, "True", skins.toggle)) { deployOnGround = true; } GUILayout.FlexibleSpace(); if (GUILayout.Toggle(!deployOnGround, "False", skins.toggle)) { deployOnGround = false; } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); //Timer GUILayout.Space(5); GUILayout.BeginHorizontal(); if (RCUtils.CanParseTime(timer) && RCUtils.CheckRange(RCUtils.ParseTime(timer), 0, 3600)) { GUILayout.Label("Deployment timer:", skins.label); } else { GUILayout.Label("Deployment timer:", RCUtils.redLabel); } GUILayout.FlexibleSpace(); timer = GUILayout.TextField(timer, 10, skins.textField, GUILayout.Width(150)); GUILayout.EndHorizontal(); //Spares GUILayout.Space(5); GUILayout.BeginHorizontal(); if (RCUtils.CanParseWithEmpty(spares) && RCUtils.CheckRange(RCUtils.ParseWithEmpty(spares), -1, 10) && RCUtils.IsWholeNumber(RCUtils.ParseWithEmpty(spares))) { GUILayout.Label("Spare chutes:", skins.label); } else { GUILayout.Label("Spare chutes:", RCUtils.redLabel); } GUILayout.FlexibleSpace(); spares = GUILayout.TextField(spares, 10, skins.textField, GUILayout.Width(150)); GUILayout.EndHorizontal(); //CutSpeed CreateEntryArea("Autocut speed (m/s):", ref cutSpeed, 0.01f, 100); #endregion #region Main //Indicator label GUILayout.Space(10); GUILayout.Label("________________________________________________", RCUtils.boldLabel); GUILayout.Label("Main chute:", RCUtils.boldLabel, GUILayout.Width(150)); GUILayout.Label("‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾", RCUtils.boldLabel); main.Calculations(); #endregion #region Secondary if (secondaryChute) { //Indicator label GUILayout.Space(10); GUILayout.Label("________________________________________________", RCUtils.boldLabel); GUILayout.Label("Secondary chute:", RCUtils.boldLabel, GUILayout.Width(150)); GUILayout.Label("‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾", RCUtils.boldLabel); #region Texture selectors GUILayout.Space(5); secondary.TextureSelector(); #endregion //Materials editor GUILayout.Space(5); secondary.MaterialsSelector(); secondary.Calculations(); } #endregion GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); #region Application GUILayout.Space(5); if (GUILayout.Button("Apply settings", skins.button)) { Apply(false); } if (part.symmetryCounterparts.Count > 0) { if (GUILayout.Button("Apply to all symmetry counterparts", skins.button)) { Apply(true); } } #endregion GUILayout.EndVertical(); }