LunarInfantry/Assets/Core Extensions & Helpers/IntExtensions.cs
2026-01-02 01:31:54 -08:00

55 lines
No EOL
1.8 KiB
C#
Executable file

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Core.Extensions
{
public static class IntExtensions
{
public static int Clamp(this int i, int min, int max)
{
return Mathf.Clamp(i, min, max);
}
public static int Min(this int i, int min)
{
return Mathf.Min(i, min);
}
public static int Max(this int i, int max)
{
return Mathf.Max(i, max);
}
public static int Abs(this int i)
{
return Mathf.Abs(i);
}
public static int Scramble(this int i, int seed, int upperLimit, int scrambler = 3378)
{
int hash = scrambler.ToString().GetHashCode();
int seedHash = seed.ToString().GetHashCode();
int factor = (seedHash * hash);
return ((i * factor).Abs() % upperLimit);
}
public static bool IsWithin(this int i, int min, int max)
{
return i >= min && i <= max;
}
public static int RandomBetween(this int i, int min, int max)
{
i = Random.Range(min, max);
return i;
}
public static int Spread(this int i, float percentage = 5f)
{
return (int)((float)i * (Random.Range(1 - percentage.Clamp(0f, 100f) * FloatExtensions.Percent, 1 + percentage.Clamp(0f, 100f) * FloatExtensions.Percent)));
}
public static int MultiplyAndFloor(this int i, float multiplier)
{
return (int)((float)i).Multiply(multiplier).Floor();
}
public static float MultiplyAndFloorAsFloat(this int i, float multiplier)
{
return (float)MultiplyAndFloor(i, multiplier);
}
}
}