Files
WoWDBDefs/code/C#/DBDefsLib/BuildRange.cs
T
2018-07-15 22:43:42 +02:00

82 lines
2.3 KiB
C#

using System;
namespace DBDefsLib
{
public class BuildRange : IComparable
{
public Build minBuild;
public Build maxBuild;
public BuildRange(Build minBuild, Build maxBuild)
{
this.minBuild = minBuild;
this.maxBuild = maxBuild;
}
public BuildRange(string buildRange)
{
var split = buildRange.Split('-');
this.minBuild = new Build(split[0]);
this.maxBuild = new Build(split[1]);
}
public override string ToString()
{
return minBuild.ToString() + "-" + maxBuild.ToString();
}
public override bool Equals(object obj)
{
return Equals(obj as BuildRange);
}
public bool Equals(BuildRange buildRange)
{
return minBuild.Equals(buildRange.minBuild) && maxBuild.Equals(buildRange.maxBuild);
}
private int CombineHashes(Object obj, int current = 0)
{
return current ^ obj.GetHashCode() + -1640531527 + (current << 6) + (current >> 2);
}
public override int GetHashCode()
{
return CombineHashes(CombineHashes(minBuild), maxBuild.GetHashCode());
}
public int CompareTo(object obj)
{
if (obj == null) return 1;
if (obj is BuildRange otherBuildRange)
{
if (minBuild != otherBuildRange.minBuild)
{
return minBuild.CompareTo(otherBuildRange.minBuild);
}
else if (maxBuild != otherBuildRange.maxBuild)
{
return maxBuild.CompareTo(otherBuildRange.maxBuild);
}
else
{
return 0;
}
}
else
{
throw new ArgumentException("Object is not a valid build range!");
}
}
public bool Contains(Build build)
{
return
build.expansion >= minBuild.expansion && build.expansion <= maxBuild.expansion &&
build.major >= minBuild.major && build.major <= maxBuild.major &&
build.build >= minBuild.build && build.build <= maxBuild.build;
}
}
}