From 9ef63b49ccc6636d8c1bb5f1e04a2f22587d5487 Mon Sep 17 00:00:00 2001 From: Alee Date: Sun, 9 Jun 2019 13:18:33 -0400 Subject: Added Graphy --- .../Scripts/Util/G_ExtensionMethods.cs | 67 ++++++ .../Scripts/Util/G_ExtensionMethods.cs.meta | 12 ++ .../Scripts/Util/G_FloatString.cs | 232 +++++++++++++++++++++ .../Scripts/Util/G_FloatString.cs.meta | 12 ++ .../Scripts/Util/G_Intstring.cs | 131 ++++++++++++ .../Scripts/Util/G_Intstring.cs.meta | 12 ++ .../Scripts/Util/G_Singleton.cs | 135 ++++++++++++ .../Scripts/Util/G_Singleton.cs.meta | 12 ++ 8 files changed, 613 insertions(+) create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs.meta create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs.meta create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs.meta create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs create mode 100644 Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs.meta (limited to 'Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util') diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs new file mode 100644 index 0000000..f5ccb87 --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs @@ -0,0 +1,67 @@ +/* --------------------------------------- + * Author: Martin Pane (martintayx@gmail.com) (@tayx94) + * Collaborators: Lars Aalbertsen (@Rockylars) + * Project: Graphy - Ultimate Stats Monitor + * Date: 04-Jan-18 + * Studio: Tayx + * + * This project is released under the MIT license. + * Attribution is not required, but it is always welcomed! + * -------------------------------------*/ + +using UnityEngine; +using System.Collections.Generic; +using UnityEngine.UI; + +namespace Tayx.Graphy.Utils +{ + public static class G_ExtensionMethods + { + /* ----- TODO: ---------------------------- + * Add summaries to the functions. + * --------------------------------------*/ + + #region Methods -> Extension Methods + + /// + /// Functions as the SetActive function in the GameObject class, but for a list of them. + /// + /// + /// List of GameObjects. + /// + /// + /// Wether to turn them on or off. + /// + public static List SetAllActive(this List gameObjects, bool active) + { + foreach (var gameObj in gameObjects) + { + gameObj.SetActive(active); + } + + return gameObjects; + } + + public static List SetOneActive(this List images, int active) + { + for (int i = 0; i < images.Count; i++) + { + images[i].gameObject.SetActive(i == active); + } + + return images; + } + + public static List SetAllActive(this List images, bool active) + { + foreach (var image in images) + { + image.gameObject.SetActive(active); + } + + return images; + } + + #endregion + } +} diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs.meta b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs.meta new file mode 100644 index 0000000..0320af9 --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_ExtensionMethods.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5aef4337f2241ec4d9a2ea5883fd1828 +timeCreated: 1515099756 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs new file mode 100644 index 0000000..8e86ea6 --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs @@ -0,0 +1,232 @@ +/* --------------------------------------- + * Author: Started by David Mkrtchyan, modified by Martin Pane (martintayx@gmail.com) (@tayx94) + * Collaborators: Lars Aalbertsen (@Rockylars) + * Project: Graphy - Ultimate Stats Monitor + * Date: 18-May-18 + * Studio: Tayx + * + * This project is released under the MIT license. + * Attribution is not required, but it is always welcomed! + * -------------------------------------*/ + +using UnityEngine; + +namespace Tayx.Graphy.Utils.NumString +{ + public static class G_FloatString + { + /* ----- TODO: ---------------------------- + * Try and move the Init to a core method. + * Try and replace the Pow function with a better algorithm. + * --------------------------------------*/ + + #region Variables -> Private + + /// + /// Float represented as a string, formatted. + /// + private const string floatFormat = "0.0"; + + /// + /// The currently defined, globally used decimal multiplier. + /// + private static float decimalMultiplier = 1f; + + /// + /// List of negative floats casted to strings. + /// + private static string[] negativeBuffer = new string[0]; + + /// + /// List of positive floats casted to strings. + /// + private static string[] positiveBuffer = new string[0]; + + #endregion + + #region Properties -> Public + + /// + /// Have the int buffers been initialized? + /// + public static bool Inited + { + get + { + return negativeBuffer.Length > 0 || positiveBuffer.Length > 0; + } + } + + /// + /// The lowest float value of the existing number buffer. + /// + public static float MinValue + { + get + { + return -(negativeBuffer.Length - 1).FromIndex(); + } + } + + /// + /// The highest float value of the existing number buffer. + /// + public static float MaxValue + { + get + { + return (positiveBuffer.Length - 1).FromIndex(); + } + } + + #endregion + + #region Methods -> Public + + //TODO: Figure out what the negative buffer doe, why we dont have default values and why the range is so high. + /// + /// Initialize the buffers. + /// + /// + /// Lowest negative value allowed. + /// + /// + /// Highest positive value allowed. + /// + /// + /// How many decimals will the values use? + /// + public static void Init(float minNegativeValue, float maxPositiveValue, int decimals = 1) + { + decimalMultiplier = Pow(10, Mathf.Clamp(decimals, 1, 5)); + + int negativeLength = minNegativeValue.ToIndex(); + int positiveLength = maxPositiveValue.ToIndex(); + + if (negativeLength >= 0) + { + negativeBuffer = new string[negativeLength]; + for (int i = 0; i < negativeLength; i++) + { + negativeBuffer[i] = (-i).FromIndex().ToString(floatFormat); + } + } + + if (positiveLength >= 0) + { + positiveBuffer = new string[positiveLength]; + for (int i = 0; i < positiveLength; i++) + { + positiveBuffer[i] = i.FromIndex().ToString(floatFormat); + } + } + } + + /// + /// Returns this float as a cached string. + /// + /// + /// The required float. + /// + /// + /// A cached number string. + /// + public static string ToStringNonAlloc(this float value) + { + int valIndex = value.ToIndex(); + + if (value < 0 && valIndex < negativeBuffer.Length) + { + return negativeBuffer[valIndex]; + } + + if (value >= 0 && valIndex < positiveBuffer.Length) + { + return positiveBuffer[valIndex]; + } + + return value.ToString(); + } + + //TODO: Convert this to use floatFormat instead, but investigate which functions require and dont require one first. + /// + /// Returns this float as a cached string. + /// + /// + /// The required float. + /// + /// + /// A cached number string. + /// + public static string ToStringNonAlloc(this float value, string format) + { + int valIndex = value.ToIndex(); + + if (value < 0 && valIndex < negativeBuffer.Length) + { + return negativeBuffer[valIndex]; + } + + if (value >= 0 && valIndex < positiveBuffer.Length) + { + return positiveBuffer[valIndex]; + } + + return value.ToString(format); + } + + /// + /// Returns a float as a casted int. + /// + /// + /// The given float. + /// + /// + /// The given float as an int. + /// + public static int ToInt(this float f) + { + return (int)f; + } + + /// + /// Returns an int as a casted float. + /// + /// + /// The given int. + /// + /// + /// The given int as a float. + /// + public static float ToFloat(this int i) + { + return (float)i; + } + + #endregion + + #region Methods -> Private + + //TODO: Replace this with a better algorithm. + private static int Pow(int f, int p) + { + for (int i = 1; i < p; i++) + { + f *= f; + } + return f; + } + + private static int ToIndex(this float f) + { + return Mathf.Abs((f * decimalMultiplier).ToInt()); + } + + private static float FromIndex(this int i) + { + return (i.ToFloat() / decimalMultiplier); + } + + #endregion + } +} diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs.meta b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs.meta new file mode 100644 index 0000000..1e51e32 --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_FloatString.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c7eaf0f83a3530240a97ac1c51d6f2e6 +timeCreated: 1538651101 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs new file mode 100644 index 0000000..cb102fe --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs @@ -0,0 +1,131 @@ +/* --------------------------------------- + * Author: Started by David Mkrtchyan, modified by Martin Pane (martintayx@gmail.com) (@tayx94) + * Collaborators: Lars Aalbertsen (@Rockylars) + * Project: Graphy - Ultimate Stats Monitor + * Date: 18-May-18 + * Studio: Tayx + * + * This project is released under the MIT license. + * Attribution is not required, but it is always welcomed! + * -------------------------------------*/ + +using UnityEngine; + +namespace Tayx.Graphy.Utils.NumString +{ + public static class G_IntString + { + /* ----- TODO: ---------------------------- + * Try and move the Init to a core method. + * --------------------------------------*/ + + #region Variables -> Private + + /// + /// List of negative ints casted to strings. + /// + private static string[] negativeBuffer = new string[0]; + + /// + /// List of positive ints casted to strings. + /// + private static string[] positiveBuffer = new string[0]; + + #endregion + + #region Properties -> Public + + /// + /// Have the int buffers been initialized? + /// + public static bool Inited + { + get + { + return negativeBuffer.Length > 0 || positiveBuffer.Length > 0; + } + } + + /// + /// The lowest int value of the existing number buffer. + /// + public static int MinValue + { + get + { + return -(negativeBuffer.Length - 1); + } + } + + /// + /// The highest int value of the existing number buffer. + /// + public static int MaxValue + { + get + { + return positiveBuffer.Length - 1; + } + } + + #endregion + + #region Methods -> Public + + /// + /// Initialize the buffers. + /// + /// + /// Lowest negative value allowed. + /// + /// + /// Highest positive value allowed. + /// + public static void Init(int minNegativeValue, int maxPositiveValue) + { + if (minNegativeValue <= 0) + { + int length = Mathf.Abs(minNegativeValue); + negativeBuffer = new string[length]; + for (int i = 0; i < length; i++) + { + negativeBuffer[i] = (-i).ToString(); + } + } + if (maxPositiveValue >= 0) + { + positiveBuffer = new string[maxPositiveValue]; + for (int i = 0; i < maxPositiveValue; i++) + { + positiveBuffer[i] = i.ToString(); + } + } + } + + /// + /// Returns this int as a cached string. + /// + /// + /// The required int. + /// + /// + /// A cached number string. + /// + public static string ToStringNonAlloc(this int value) + { + if (value < 0 && -value < negativeBuffer.Length) + { + return negativeBuffer[-value]; + } + + if (value >= 0 && value < positiveBuffer.Length) + { + return positiveBuffer[value]; + } + + return value.ToString(); + } + + #endregion + } +} diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs.meta b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs.meta new file mode 100644 index 0000000..a693cc4 --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Intstring.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2584aec3ab9f9af49bbdb1477908274e +timeCreated: 1526634575 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs new file mode 100644 index 0000000..5feaa7a --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs @@ -0,0 +1,135 @@ +/* --------------------------------------- + * Sourced from: https://wiki.unity3d.com/index.php/Singleton + * Modified by: Martín Pane (martintayx@gmail.com) (@tayx94) + * Collaborators: Lars Aalbertsen (@Rockylars) + * Project: Graphy - Ultimate Stats Monitor + * Date: 07-Jul-17 + * Studio: Tayx + * + * This project is released under the MIT license. + * Attribution is not required, but it is always welcomed! + * -------------------------------------*/ + +using UnityEngine; + +namespace Tayx.Graphy.Utils +{ + /// + /// Be aware this will not prevent a non singleton constructor + /// such as `T myT = new T();` + /// To prevent that, add `protected T () {}` to your singleton class. + /// + /// As a note, this is made as MonoBehaviour because we need Coroutines. + /// + public class G_Singleton : MonoBehaviour where T : MonoBehaviour + { + /* ----- TODO: ---------------------------- + * Check if we can seal this class. + * Add summaries to the variables. + * Add summaries to the functions. + * Check if we should add "private" to the Unity Callbacks. + * Fill in the missing date and author. + * --------------------------------------*/ + + #region Variables -> Private + + private static T _instance; + + private static object _lock = new object(); + + #endregion + + #region Properties -> Public + + public static T Instance + { + get + { + + if (_applicationIsQuitting) + { + //Debug.LogWarning("[Singleton] Instance '" + typeof(T) + + // "' already destroyed on application quit." + + // " Won't create again - returning null."); + return null; + } + + lock (_lock) + { + if (_instance == null) + { + _instance = (T)FindObjectOfType(typeof(T)); + + if (FindObjectsOfType(typeof(T)).Length > 1) + { + //Debug.LogError("[Singleton] Something went really wrong " + + // " - there should never be more than 1 singleton!" + + // " Reopening the scene might fix it."); + return _instance; + } + + if (_instance == null) + { + //GameObject singleton = new GameObject(); + //_instance = singleton.AddComponent(); + //singleton.name = "(singleton) " + typeof(T).ToString(); + + //DontDestroyOnLoad(singleton); + + //Debug.Log("[Singleton] An instance of " + typeof(T) + + // " is needed in the scene, so '" + singleton + + // "' was created with DontDestroyOnLoad."); + + Debug.Log + ( + "[Singleton] An instance of " + typeof(T) + + " is trying to be accessed, but it wasn't initialized first. " + + "Make sure to add an instance of " + typeof(T) + " in the scene before " + + " trying to access it." + ); + } + else + { + //Debug.Log("[Singleton] Using instance already created: " + + // _instance.gameObject.name); + } + } + + return _instance; + } + } + } + + #endregion + + #region Methods -> Unity Callbacks + + void Awake() + { + if (_instance != null) + { + Destroy(gameObject); + } + else + { + _instance = GetComponent(); + } + } + + private static bool _applicationIsQuitting = false; + /// + /// When Unity quits, it destroys objects in a random order. + /// In principle, a Singleton is only destroyed when application quits. + /// If any script calls Instance after it has been destroyed, + /// it will create a buggy ghost object that will stay on the Editor scene + /// even after stopping playing the Application. Really bad! + /// So, this was made to be sure we're not creating that buggy ghost object. + /// + void OnDestroy() + { + _applicationIsQuitting = true; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs.meta b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs.meta new file mode 100644 index 0000000..6c90242 --- /dev/null +++ b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dbf324bd9d0eaf7408f3b72ed03e2588 +timeCreated: 1512413989 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.2.3