From d1029ca0c14cc98300b1311680b186e050930c3e Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Tue, 29 Sep 2020 19:46:14 -0700 Subject: [PATCH] Fix color parsing and serialization --- .../Plugins/ConformalDecals.dll | Bin 81408 -> 82432 bytes Source/ConformalDecals/ConformalDecals.csproj | 1 + Source/ConformalDecals/ModuleConformalText.cs | 37 ++++++++++++------ Source/ConformalDecals/Util/ColorUtil.cs | 22 +++++++++++ Source/ConformalDecals/Util/ParseUtil.cs | 11 +++++- 5 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 Source/ConformalDecals/Util/ColorUtil.cs diff --git a/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/GameData/ConformalDecals/Plugins/ConformalDecals.dll index ff5f0d43d39dce44685cc680cdbb86fb67ae97b2..75f17c6fcaab04b8a7e2194c28be4c39e255bb6c 100644 GIT binary patch literal 82432 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

L4BTeU%G4QDUxB5yZrss}`lq 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 + diff --git a/Source/ConformalDecals/ModuleConformalText.cs b/Source/ConformalDecals/ModuleConformalText.cs index baca9ea..3b8e5d2 100644 --- a/Source/ConformalDecals/ModuleConformalText.cs +++ b/Source/ConformalDecals/ModuleConformalText.cs @@ -1,14 +1,13 @@ using ConformalDecals.MaterialProperties; using ConformalDecals.Text; using ConformalDecals.UI; +using ConformalDecals.Util; using TMPro; using UnityEngine; namespace ConformalDecals { public class ModuleConformalText : ModuleConformalDecal, ISerializationCallbackReceiver { - [KSPField(isPersistant = true)] public string text = "Text"; - [KSPField(isPersistant = true)] public Color fillColor = Color.black; - [KSPField(isPersistant = true)] public Color outlineColor = Color.white; + [KSPField(isPersistant = true)] public string text = "Text"; [KSPField] public Vector2 lineSpacingRange = new Vector2(-50, 50); [KSPField] public Vector2 charSpacingRange = new Vector2(-50, 50); @@ -19,6 +18,8 @@ namespace ConformalDecals { [KSPField(isPersistant = true)] public bool vertical; [KSPField(isPersistant = true)] public float lineSpacing; [KSPField(isPersistant = true)] public float charSpacing; + [KSPField(isPersistant = true)] public string fillColor = "000000FF"; + [KSPField(isPersistant = true)] public string outlineColor = "FFFFFFFF"; // KSP TWEAKABLES @@ -43,7 +44,7 @@ namespace ConformalDecals { guiActive = false, guiActiveEditor = true)] public void SetFillColor() { if (_fillColorPickerController == null) { - _fillColorPickerController = ColorPickerController.Create(fillColor, OnFillColorUpdate); + _fillColorPickerController = ColorPickerController.Create(_fillColor, OnFillColorUpdate); } else { _fillColorPickerController.Close(); @@ -66,7 +67,7 @@ namespace ConformalDecals { guiActive = false, guiActiveEditor = true)] public void SetOutlineColor() { if (_outlineColorPickerController == null) { - _outlineColorPickerController = ColorPickerController.Create(outlineColor, OnOutlineColorUpdate); + _outlineColorPickerController = ColorPickerController.Create(_outlineColor, OnOutlineColorUpdate); } else { _outlineColorPickerController.Close(); @@ -75,6 +76,8 @@ namespace ConformalDecals { private DecalTextStyle _style; private DecalFont _font; + private Color32 _fillColor; + private Color32 _outlineColor; private TextEntryController _textEntryController; private ColorPickerController _fillColorPickerController; @@ -131,23 +134,23 @@ namespace ConformalDecals { } public void OnFillColorUpdate(Color rgb, Util.ColorHSV hsv) { - fillColor = rgb; + _fillColor = rgb; UpdateMaterials(); foreach (var counterpart in part.symmetryCounterparts) { var decal = counterpart.GetComponent(); - decal.fillColor = fillColor; + decal._fillColor = _fillColor; decal.UpdateMaterials(); } } public void OnOutlineColorUpdate(Color rgb, Util.ColorHSV hsv) { - outlineColor = rgb; + _outlineColor = rgb; UpdateMaterials(); foreach (var counterpart in part.symmetryCounterparts) { var decal = counterpart.GetComponent(); - decal.outlineColor = outlineColor; + decal._outlineColor = _outlineColor; decal.UpdateMaterials(); } } @@ -200,11 +203,23 @@ namespace ConformalDecals { vertical = _style.Vertical; lineSpacing = _style.LineSpacing; charSpacing = _style.CharSpacing; + fillColor = _fillColor.ToHexString(); + outlineColor = _outlineColor.ToHexString(); } public void OnAfterDeserialize() { _font = DecalConfig.GetFont(fontName); _style = new DecalTextStyle((FontStyles) style, vertical, lineSpacing, charSpacing); + + if (!ParseUtil.TryParseColor32(fillColor, out _fillColor)) { + Logging.LogWarning($"Improperly formatted color value for fill: '{fillColor}'"); + _fillColor = Color.magenta; + } + + if (!ParseUtil.TryParseColor32(outlineColor, out _outlineColor)) { + Logging.LogWarning($"Improperly formatted color value for outline: '{outlineColor}'"); + _outlineColor = Color.magenta; + } } public override void OnDestroy() { @@ -261,10 +276,10 @@ namespace ConformalDecals { protected override void UpdateMaterials() { _fillEnabledProperty.value = fillEnabled; - _fillColorProperty.color = fillColor; + _fillColorProperty.color = _fillColor; _outlineEnabledProperty.value = outlineEnabled; - _outlineColorProperty.color = outlineColor; + _outlineColorProperty.color = _outlineColor; _outlineWidthProperty.value = outlineWidth; base.UpdateMaterials(); diff --git a/Source/ConformalDecals/Util/ColorUtil.cs b/Source/ConformalDecals/Util/ColorUtil.cs new file mode 100644 index 0000000..0ef1403 --- /dev/null +++ b/Source/ConformalDecals/Util/ColorUtil.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace ConformalDecals.Util { + public static class ColorUtil { + /// Returns an RGBA 32-bit hex string + public static string ToHexString(this Color32 color) { + return $"#{color.r:x2}{color.g:x2}{color.b:x2}{color.a:x2}"; + } + + // Returns an RGBA 32-bit unsigned integer representation of the color + public static uint ToUint(this Color32 color) { + uint rgba = color.r; + rgba <<= 8; + rgba |= color.g; + rgba <<= 8; + rgba |= color.b; + rgba <<= 8; + rgba |= color.a; + return rgba; + } + } +} \ No newline at end of file diff --git a/Source/ConformalDecals/Util/ParseUtil.cs b/Source/ConformalDecals/Util/ParseUtil.cs index 1e02b06..5a712c7 100644 --- a/Source/ConformalDecals/Util/ParseUtil.cs +++ b/Source/ConformalDecals/Util/ParseUtil.cs @@ -142,7 +142,7 @@ namespace ConformalDecals.Util { public static bool TryParseHexColor(string valueString, out Color32 value) { value = new Color32(0, 0, 0, byte.MaxValue); - if (!int.TryParse(valueString, System.Globalization.NumberStyles.HexNumber, null, out var hexColor)) return false; + if (!uint.TryParse(valueString, System.Globalization.NumberStyles.HexNumber, null, out var hexColor)) return false; switch (valueString.Length) { case 8: // RRGGBBAA @@ -216,7 +216,14 @@ namespace ConformalDecals.Util { value.g = (byte) (green * 0xFF); value.b = (byte) (blue * 0xFF); return true; - + case 1: // try again for hex color + if (TryParseHexColor(split[0], out var hexcolor)) { + value = hexcolor; + return true; + } + else { + return false; + } default: return false; }