From 7006e233e5714ac452491d3f1aafd9c8b22a90b3 Mon Sep 17 00:00:00 2001
From: Eric Heine <erheine@nps.edu>
Date: Mon, 12 Aug 2019 11:08:10 -0700
Subject: [PATCH] Made the variable labels able to have their output strings
 formatted as desired.

---
 .../BooleanVariableLabel.cs                   |  6 +++---
 .../FloatVariableLabel.cs                     |  6 +++---
 .../Scriptable Variables/IntVariableLabel.cs  |  6 +++---
 .../ReferenceBooleanVariableLabel.cs          |  6 +++---
 .../ReferenceFloatVariableLabel.cs            |  6 +++---
 .../ReferenceIntVariableLabel.cs              |  6 +++---
 .../ReferenceStringVariableLabel.cs           |  6 +++---
 .../ScriptableVariableLabel.cs                | 20 ++++++++++++++++---
 .../StringVariableLabel.cs                    |  8 +++++---
 package.json                                  |  2 +-
 10 files changed, 44 insertions(+), 28 deletions(-)

diff --git a/Sane Eric's UI/Scriptable Variables/BooleanVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/BooleanVariableLabel.cs
index a40064a..a70afcf 100644
--- a/Sane Eric's UI/Scriptable Variables/BooleanVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/BooleanVariableLabel.cs	
@@ -4,7 +4,7 @@ using Shared.ScriptableVariables;
 namespace Shared.SEUI {
   // Read only UI for a BooleanVariable
   // Depends on ScriptableVariable package
-  public class BooleanVariableLabel : ScriptableVariableLabel {
+  public class BooleanVariableLabel : ScriptableVariableLabel<bool> {
     [Tooltip("The variable whose value we are displaying")]
     public BooleanVariable value;
 
@@ -14,8 +14,8 @@ namespace Shared.SEUI {
     }
 
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
-      return value.Value.ToString();
+    protected override bool GetValue() {
+      return value.Value;
     }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/FloatVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/FloatVariableLabel.cs
index a6c8d99..dad2d7c 100644
--- a/Sane Eric's UI/Scriptable Variables/FloatVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/FloatVariableLabel.cs	
@@ -4,7 +4,7 @@ using Shared.ScriptableVariables;
 namespace Shared.SEUI {
   // Read only UI for a FloatVariable
   // Depends on ScriptableVariable package
-  public class FloatVariableLabel : ScriptableVariableLabel {
+  public class FloatVariableLabel : ScriptableVariableLabel<float> {
     [Tooltip("The variable whose value we are displaying")]
     public FloatVariable value;
 
@@ -14,8 +14,8 @@ namespace Shared.SEUI {
     }
 
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
-      return value.Value.ToString();
+    protected override float GetValue() {
+      return value.Value;
     }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/IntVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/IntVariableLabel.cs
index ba7e80a..a5d1e91 100644
--- a/Sane Eric's UI/Scriptable Variables/IntVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/IntVariableLabel.cs	
@@ -4,7 +4,7 @@ using Shared.ScriptableVariables;
 namespace Shared.SEUI {
   // Read only UI for an IntVariable
   // Depends on ScriptableVariable package
-  public class IntVariableLabel : ScriptableVariableLabel {
+  public class IntVariableLabel : ScriptableVariableLabel<int> {
     [Tooltip("The variable whose value we are displaying")]
     public IntVariable value;
 
@@ -14,8 +14,8 @@ namespace Shared.SEUI {
     }
 
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
-      return value.Value.ToString();
+    protected override int GetValue() {
+      return value.Value;
     }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/ReferenceBooleanVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/ReferenceBooleanVariableLabel.cs
index a516a7a..f9a6aef 100644
--- a/Sane Eric's UI/Scriptable Variables/ReferenceBooleanVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/ReferenceBooleanVariableLabel.cs	
@@ -4,7 +4,7 @@ using Shared.ScriptableVariables;
 namespace Shared.SEUI {
   // Read only UI for a ReferenceBooleanVariable
   // Depends on ScriptableVariable package
-  public class ReferenceBooleanVariableLabel : ScriptableVariableLabel {
+  public class ReferenceBooleanVariableLabel : ScriptableVariableLabel<bool> {
     [Tooltip("The variable whose value we are displaying")]
     public ReferenceBooleanVariable value;
 
@@ -14,8 +14,8 @@ namespace Shared.SEUI {
     }
 
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
-      return value.Value.ToString();
+    protected override bool GetValue() {
+      return value.Value;
     }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/ReferenceFloatVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/ReferenceFloatVariableLabel.cs
index 267b991..14c200a 100644
--- a/Sane Eric's UI/Scriptable Variables/ReferenceFloatVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/ReferenceFloatVariableLabel.cs	
@@ -4,7 +4,7 @@ using Shared.ScriptableVariables;
 namespace Shared.SEUI {
   // Read only UI for a ReferenceFloatVariable
   // Depends on ScriptableVariable package
-  public class ReferenceFloatVariableLabel : ScriptableVariableLabel {
+  public class ReferenceFloatVariableLabel : ScriptableVariableLabel<float> {
     [Tooltip("The variable whose value we are displaying")]
     public ReferenceFloatVariable value;
 
@@ -14,8 +14,8 @@ namespace Shared.SEUI {
     }
 
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
-      return value.Value.ToString();
+    protected override float GetValue() {
+      return value.Value;
     }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/ReferenceIntVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/ReferenceIntVariableLabel.cs
index 8286fbd..61baf5d 100644
--- a/Sane Eric's UI/Scriptable Variables/ReferenceIntVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/ReferenceIntVariableLabel.cs	
@@ -4,7 +4,7 @@ using Shared.ScriptableVariables;
 namespace Shared.SEUI {
   // Read only UI for a ReferenceIntVariable
   // Depends on ScriptableVariable package
-  public class ReferenceIntVariableLabel : ScriptableVariableLabel {
+  public class ReferenceIntVariableLabel : ScriptableVariableLabel<int> {
     [Tooltip("The variable whose value we are displaying")]
     public ReferenceIntVariable value;
 
@@ -14,8 +14,8 @@ namespace Shared.SEUI {
     }
 
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
-      return value.Value.ToString();
+    protected override int GetValue() {
+      return value.Value;
     }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/ReferenceStringVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/ReferenceStringVariableLabel.cs
index bfff1e8..fa52bcc 100644
--- a/Sane Eric's UI/Scriptable Variables/ReferenceStringVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/ReferenceStringVariableLabel.cs	
@@ -4,7 +4,7 @@ using Shared.ScriptableVariables;
 namespace Shared.SEUI {
   // Read only UI for a ReferenceStringVariable
   // Depends on ScriptableVariable package
-  public class ReferenceStringVariableLabel : ScriptableVariableLabel {
+  public class ReferenceStringVariableLabel : ScriptableVariableLabel<string> {
     [Tooltip("The variable whose value we are displaying")]
     public ReferenceStringVariable value;
 
@@ -14,8 +14,8 @@ namespace Shared.SEUI {
     }
 
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
-      return value.Value.ToString();
+    protected override string GetValue() {
+      return value.Value;
     }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/ScriptableVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/ScriptableVariableLabel.cs
index d480a0f..0369a46 100644
--- a/Sane Eric's UI/Scriptable Variables/ScriptableVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/ScriptableVariableLabel.cs	
@@ -1,15 +1,19 @@
-using UnityEngine;
+using System;
+using UnityEngine;
 using UnityEngine.UI;
 
 namespace Shared.SEUI {
   // Base class for read only UI for a ScriptableVariable
-  public abstract class ScriptableVariableLabel : MonoBehaviour {
+  public abstract class ScriptableVariableLabel<T> : MonoBehaviour {
     [Tooltip("The optional Text where we are putting the variable's name")]
     public Text nameLabel;
 
     [Tooltip("The optional Text where we are putting the variable's value")]
     public Text valueLabel;
 
+    [Tooltip("The C# String.Format() string for displaying the value")]
+    public string format;
+
     //---------------------------------------------------------------------------
     void Start() {
       if (nameLabel != null) {
@@ -37,6 +41,16 @@ namespace Shared.SEUI {
 
     //---------------------------------------------------------------------------
     // Implement with how to get the ScriptableVariable's value
-    protected abstract string GetValueString();
+    protected abstract T GetValue();
+
+    //---------------------------------------------------------------------------
+    // Format the current value into a string
+    private string GetValueString() {
+      var value = GetValue();
+      if (String.IsNullOrEmpty(format)) {
+        return value.ToString();
+      }
+      return String.Format(format, value);
+    }
   }
 }
diff --git a/Sane Eric's UI/Scriptable Variables/StringVariableLabel.cs b/Sane Eric's UI/Scriptable Variables/StringVariableLabel.cs
index ae12922..39e3e4b 100644
--- a/Sane Eric's UI/Scriptable Variables/StringVariableLabel.cs	
+++ b/Sane Eric's UI/Scriptable Variables/StringVariableLabel.cs	
@@ -1,10 +1,11 @@
-using UnityEngine;
+using System;
+using UnityEngine;
 using Shared.ScriptableVariables;
 
 namespace Shared.SEUI {
   // Read only UI for a StringVariable
   // Depends on ScriptableVariable package
-  public class StringVariableLabel : ScriptableVariableLabel {
+  public class StringVariableLabel : ScriptableVariableLabel<string> {
     [Tooltip("The variable whose value we are displaying")]
     public StringVariable value;
 
@@ -13,8 +14,9 @@ namespace Shared.SEUI {
       return value.name;
     }
 
+
     //---------------------------------------------------------------------------
-    protected override string GetValueString() {
+    protected override string GetValue() {
       return value.Value;
     }
   }
diff --git a/package.json b/package.json
index b9f68dd..b6ab928 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
 	"name": "com.futuretech.shared",
 	"displayName": "FutureTech Shared",
 	"description": "Contains shared items such as the Scriptable Variables.",
-	"version": "0.1.15",
+	"version": "0.1.16",
 	"unity": "2018.3",
 	"license": "MIT",
 	"repository": {
-- 
GitLab