static public void EqualOffsetcoord(string name, OsCoord a, OsCoord b) { if (!(a.col == b.col && a.row == b.row)) { Complain(name); } }
static public HexTile RoffsetToCube(int offset, OsCoord h) { int q = h.col - (int)((h.row + offset * (h.row & 1)) / 2); int r = h.row; int s = -q - r; return(new HexTile(q, r, s)); }
static public void TestOffsetRoundtrip() { HexTile a = new HexTile(3, 4, -7); OsCoord b = new OsCoord(1, -3); EqualHex("conversion_roundtrip even-r", a, OsCoord.RoffsetToCube(OsCoord.EVEN, OsCoord.RoffsetFromCube(OsCoord.EVEN, a))); EqualOffsetcoord("conversion_roundtrip even-r", b, OsCoord.RoffsetFromCube(OsCoord.EVEN, OsCoord.RoffsetToCube(OsCoord.EVEN, b))); EqualHex("conversion_roundtrip odd-r", a, OsCoord.RoffsetToCube(OsCoord.ODD, OsCoord.RoffsetFromCube(OsCoord.ODD, a))); EqualOffsetcoord("conversion_roundtrip odd-r", b, OsCoord.RoffsetFromCube(OsCoord.ODD, OsCoord.RoffsetToCube(OsCoord.ODD, b))); }
static public void TestOffsetToCube() { EqualHex("offset_to_cube odd-r", new HexTile(1, 2, -3), OsCoord.RoffsetToCube(OsCoord.ODD, new OsCoord(1, 2))); }
static public void TestOffsetFromCube() { EqualOffsetcoord("offset_from_cube odd-r", new OsCoord(1, 2), OsCoord.RoffsetFromCube(OsCoord.ODD, new HexTile(1, 2, -3))); }