You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

131 lines
3.6 KiB

/* ---------------------------------------
* 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
/// <summary>
/// List of negative ints casted to strings.
/// </summary>
private static string[] negativeBuffer = new string[0];
/// <summary>
/// List of positive ints casted to strings.
/// </summary>
private static string[] positiveBuffer = new string[0];
#endregion
#region Properties -> Public
/// <summary>
/// Have the int buffers been initialized?
/// </summary>
public static bool Inited
{
get
{
return negativeBuffer.Length > 0 || positiveBuffer.Length > 0;
}
}
/// <summary>
/// The lowest int value of the existing number buffer.
/// </summary>
public static int MinValue
{
get
{
return -(negativeBuffer.Length - 1);
}
}
/// <summary>
/// The highest int value of the existing number buffer.
/// </summary>
public static int MaxValue
{
get
{
return positiveBuffer.Length - 1;
}
}
#endregion
#region Methods -> Public
/// <summary>
/// Initialize the buffers.
/// </summary>
/// <param name="minNegativeValue">
/// Lowest negative value allowed.
/// </param>
/// <param name="maxPositiveValue">
/// Highest positive value allowed.
/// </param>
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();
}
}
}
/// <summary>
/// Returns this int as a cached string.
/// </summary>
/// <param name="value">
/// The required int.
/// </param>
/// <returns>
/// A cached number string.
/// </returns>
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
}
}