29 lines
919 B
C#
29 lines
919 B
C#
namespace HexGrid.Math
|
|
{
|
|
|
|
public struct HexCoord {
|
|
|
|
public int q; // axial q(col)
|
|
public int r; // axial r(row)
|
|
public HexCoord(int q, int r) { this.q = q; this.r = r; }
|
|
public static readonly HexCoord[] neighbors = {
|
|
new HexCoord(+1, 0),
|
|
new HexCoord(+1, -1),
|
|
new HexCoord(0, -1),
|
|
new HexCoord(-1, 0),
|
|
new HexCoord(-1, +1),
|
|
new HexCoord(0, +1)
|
|
};
|
|
public HexCoord Neighbor(int i) => new HexCoord(q + neighbors[i].q, r + neighbors[i].r);
|
|
|
|
public override bool Equals(object obj) {
|
|
if (!(obj is HexCoord)) return false;
|
|
HexCoord o = (HexCoord)obj;
|
|
return q == o.q && r == o.r;
|
|
}
|
|
//??
|
|
public override int GetHashCode() => q * 73856093 ^ r * 19349663;
|
|
public override string ToString() => $"({q},{r})";
|
|
}
|
|
|
|
} |