VOID_Core: Added GroupBy and Select(First) to eliminate duplicate skins for MechJeb compat.
--- a/VOID_CBInfoBrowser.cs
+++ b/VOID_CBInfoBrowser.cs
@@ -102,7 +102,7 @@
//}
//toggle for orbital info chunk
- if (GUILayout.Button("Orbital Characteristics", GUILayout.ExpandWidth(true))) toggleOrbital = !toggleOrbital;
+ if (GUILayout.Button("Orbital Characteristics", GUILayout.ExpandWidth(true))) toggleOrbital.value = !toggleOrbital;
if (toggleOrbital)
{
@@ -156,7 +156,7 @@
}
//toggle for physical info chunk
- if (GUILayout.Button("Physical Characteristics", GUILayout.ExpandWidth(true))) togglePhysical = !togglePhysical;
+ if (GUILayout.Button("Physical Characteristics", GUILayout.ExpandWidth(true))) togglePhysical.value = !togglePhysical;
if (togglePhysical)
{
--- a/VOID_Core.cs
+++ b/VOID_Core.cs
@@ -245,7 +245,7 @@
{
this._Name = "VOID Core";
- this._Active = true;
+ this._Active.value = true;
this.VOIDIconOn = GameDatabase.Instance.GetTexture (this.VOIDIconOnPath, false);
this.VOIDIconOff = GameDatabase.Instance.GetTexture (this.VOIDIconOffPath, false);
@@ -407,9 +407,19 @@
protected void LoadSkins()
{
+ Tools.PostDebugMessage ("AssetBase has skins: \n" +
+ string.Join("\n\t", AssetBase.FindObjectsOfTypeIncludingAssets (
+ typeof(GUISkin))
+ .Select(s => s.ToString())
+ .ToArray()
+ )
+ );
+
this.skin_list = AssetBase.FindObjectsOfTypeIncludingAssets(typeof(GUISkin))
.Where(s => !this.forbiddenSkins.Contains(s.name))
.Select(s => s as GUISkin)
+ .GroupBy(s => s.name)
+ .Select(g => g.First())
.ToDictionary(s => s.name);
Tools.PostDebugMessage(string.Format(
@@ -509,7 +519,7 @@
{
string str = "ON";
if (togglePower) str = "OFF";
- if (GUILayout.Button("Power " + str)) togglePower = !togglePower;
+ if (GUILayout.Button("Power " + str)) togglePower.value = !togglePower;
}
if (togglePower || HighLogic.LoadedSceneIsEditor)
@@ -525,7 +535,7 @@
GUILayout.Label("-- POWER LOST --", this.LabelStyles["red"]);
}
- this.configWindowMinimized = !GUILayout.Toggle (!this.configWindowMinimized, "Configuration");
+ this.configWindowMinimized.value = !GUILayout.Toggle (!this.configWindowMinimized, "Configuration");
GUILayout.EndVertical();
GUI.DragWindow();
@@ -549,7 +559,7 @@
if (HighLogic.LoadedSceneIsFlight)
{
- this.consumeResource = GUILayout.Toggle (this.consumeResource, "Consume Resources");
+ this.consumeResource.value = GUILayout.Toggle (this.consumeResource, "Consume Resources");
this.VOIDIconLocked = GUILayout.Toggle (this.VOIDIconLocked, "Lock Icon Position");
}
@@ -716,7 +726,7 @@
if (this.togglePower) this.VOIDIconTexture = this.VOIDIconOn; //or on if power_toggle==true
if (GUI.Button(VOIDIconPos, VOIDIconTexture, new GUIStyle()) && this.VOIDIconLocked)
{
- this.mainGuiMinimized = !this.mainGuiMinimized;
+ this.mainGuiMinimized.value = !this.mainGuiMinimized;
}
if (!this.mainGuiMinimized)
--- a/VOID_EditorHUD.cs
+++ b/VOID_EditorHUD.cs
@@ -68,7 +68,7 @@
{
this._Name = "Heads-Up Display";
- this._Active = true;
+ this._Active.value = true;
this.textColors.Add(Color.green);
this.textColors.Add(Color.black);
--- a/VOID_HUD.cs
+++ b/VOID_HUD.cs
@@ -65,7 +65,7 @@
{
this._Name = "Heads-Up Display";
- this._Active = true;
+ this._Active.value = true;
this.textColors.Add(Color.green);
this.textColors.Add(Color.black);
--- a/VOID_Module.cs
+++ b/VOID_Module.cs
@@ -50,7 +50,7 @@
}
set
{
- this._Active = value;
+ this._Active.value = value;
}
}
--- a/VOID_Orbital.cs
+++ b/VOID_Orbital.cs
@@ -183,7 +183,7 @@
this.precisionValues [idx]= (ushort)this.gravityAccel.DoGUIHorizontal (this.precisionValues [idx]);
idx++;
- this.toggleExtended = GUILayout.Toggle(this.toggleExtended, "Extended info");
+ this.toggleExtended.value = GUILayout.Toggle(this.toggleExtended, "Extended info");
if (this.toggleExtended)
{
--- a/VOID_Rendezvous.cs
+++ b/VOID_Rendezvous.cs
@@ -114,7 +114,7 @@
}
}
- untoggleRegisterInfo = GUILayout.Toggle(untoggleRegisterInfo, "Hide Vessel Register Info");
+ untoggleRegisterInfo.value = GUILayout.Toggle(untoggleRegisterInfo, "Hide Vessel Register Info");
GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
GUILayout.Label(" ", GUILayout.ExpandWidth(true));
--- a/VOID_SaveValue.cs
+++ b/VOID_SaveValue.cs
@@ -30,6 +30,28 @@
private T _value;
private Type _type;
+ private VOID_Core Core
+ {
+ get
+ {
+ if (HighLogic.LoadedSceneIsEditor)
+ {
+ if (VOID_EditorCore.Initialized)
+ {
+ return VOID_EditorCore.Instance;
+ }
+ }
+ else if (HighLogic.LoadedSceneIsFlight)
+ {
+ if (VOID_Core.Initialized)
+ {
+ return VOID_Core.Instance;
+ }
+ }
+ return null;
+ }
+ }
+
public T value
{
get
@@ -38,6 +60,20 @@
}
set
{
+ if (this.Core != null && !System.Object.Equals(this._value, value))
+ {
+ Tools.PostDebugMessage (string.Format (
+ "VOID: Dirtying config for type {0} in method {1}." +
+ "\n\t Old Value: {2}, New Value: {3}" +
+ "\n\t Object.Equals(New, Old): {4}",
+ this._type,
+ new System.Diagnostics.StackTrace().GetFrame(1).GetMethod(),
+ this._value,
+ value,
+ System.Object.Equals(this._value, value)
+ ));
+ this.Core.configDirty = true;
+ }
this._value = value;
}
}
@@ -46,6 +82,10 @@
{
get
{
+ if (this._type == null && this._value != null)
+ {
+ this._type = this._value.GetType ();
+ }
return this._type;
}
set
@@ -64,7 +104,7 @@
public void SetValue(object v)
{
- this._value = (T)v;
+ this.value = (T)v;
}
public static implicit operator T(VOID_SaveValue<T> v)
@@ -75,18 +115,8 @@
public static implicit operator VOID_SaveValue<T>(T v)
{
VOID_SaveValue<T> r = new VOID_SaveValue<T>();
+ r.type = v.GetType();
r.value = v;
- r.type = v.GetType();
-
- if (VOID_Core.Initialized)
- {
- VOID_Core.Instance.configDirty = true;
- }
-
- if (VOID_EditorCore.Initialized)
- {
- VOID_EditorCore.Instance.configDirty = true;
- }
return r;
}
--- a/VOID_Transfer.cs
+++ b/VOID_Transfer.cs
@@ -27,9 +27,6 @@
{
public class VOID_Transfer : VOID_WindowModule
{
- [AVOID_SaveValue("toggleExtended")]
- protected VOID_SaveValue<bool> toggleExtended = false;
-
protected List<CelestialBody> selectedBodies = new List<CelestialBody>();
public VOID_Transfer()
--- a/VOID_VesselInfo.cs
+++ b/VOID_VesselInfo.cs
@@ -28,9 +28,6 @@
{
public class VOID_VesselInfo : VOID_WindowModule
{
- [AVOID_SaveValue("toggleExtended")]
- protected VOID_SaveValue<bool> toggleExtended = false;
-
protected VOID_DoubleValue geeForce = new VOID_DoubleValue(
"G-force",
new Func<double>(() => VOID_Core.Instance.vessel.geeForce),
--- a/VOID_VesselRegister.cs
+++ b/VOID_VesselRegister.cs
@@ -133,7 +133,7 @@
if (_selectedVessel != v)
{
_selectedVessel = v; //set clicked vessel as selected_vessel
- this._Active = true; //turn bool on to open the window if closed
+ this._Active.value = true; //turn bool on to open the window if closed
}
else
{