/* --------------------------------------- * 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 } }