CShock/CShocker/Ranges/RandomIntegerRange.cs

42 lines
1.2 KiB
C#
Raw Normal View History

2024-01-17 04:11:30 +01:00
namespace CShocker.Ranges;
public abstract class RandomIntegerRange
{
2024-01-29 17:23:03 +01:00
public readonly short Min, Max;
2024-01-17 22:16:40 +01:00
internal RandomIntegerRange(short min, short max, short minLimit, short maxLimit)
2024-01-17 04:11:30 +01:00
{
2024-01-17 22:16:40 +01:00
if (max - min < 0)
2024-01-17 04:11:30 +01:00
throw new ArgumentException("Min has to be less or equal Max");
2024-01-17 22:16:40 +01:00
if (min < minLimit || min > maxLimit)
throw new ArgumentOutOfRangeException(nameof(min), $"Min has to be withing Range {minLimit}-{maxLimit}");
if (max < minLimit || max > maxLimit)
throw new ArgumentOutOfRangeException(nameof(max), $"Max has to be withing Range {minLimit}-{maxLimit}");
this.Min = min;
this.Max = max;
2024-01-17 04:11:30 +01:00
}
2024-01-17 19:39:48 +01:00
public int GetRandomRangeValue()
2024-01-17 04:11:30 +01:00
{
2024-01-17 22:16:40 +01:00
return Random.Shared.Next(this.Min, this.Max);
2024-01-17 04:11:30 +01:00
}
2024-01-17 23:12:51 +01:00
public override string ToString()
{
return $"Min: {Min} Max: {Max}";
}
2024-01-29 17:05:13 +01:00
public override bool Equals(object? obj)
{
2024-01-29 17:23:03 +01:00
return obj is RandomIntegerRange rir && Equals(rir);
}
private bool Equals(RandomIntegerRange other)
{
return Min == other.Min && Max == other.Max;
}
public override int GetHashCode()
{
return HashCode.Combine(Min, Max);
2024-01-29 17:05:13 +01:00
}
2024-01-17 04:11:30 +01:00
}