public Vector2f GetShiftedTopLeftCenter(AxialCoordinates position, Vector2f objectSize) { var topLeftCorner = GetTopLeftCorner(position); var offset = new Vector2f(HorizontalSize / 2 - objectSize.X / 2, VerticalSize / 2 - objectSize.Y / 2); return(topLeftCorner += offset); }
public Vector2f GetTopLeftCorner(AxialCoordinates position) { OffsetCoordinates offsetCoords = position; return(new Vector2f( (offsetCoords.Row & 1) * HorizontalSize / 2 + HorizontalSize * offsetCoords.Column, offsetCoords.Row * (VerticalSize - EdgeLength / 2) )); }
public Field(AxialCoordinates position, Map world) { Position = position; World = world; Deposit = new Deposit(this, DepositMetadata.Empty); Improvement = new Improvement(this, ImprovementMetadata.Empty); Terrain = new Terrain(this, TerrainMetadata.Empty); Unit = new Unit(this, UnitMetadata.Empty); }
public void TestEqualityAxial() { var v1 = new AxialCoordinates(0, 0); var v2 = new AxialCoordinates(0, 0); Assert.AreEqual(v1, v1); Assert.AreEqual(v1, v2); Assert.IsTrue(v1 == v2); Assert.IsFalse(v1 != v2); }
public void TestCastAxialCube() { var v1 = new CubeCoordinates(1, -1, 0); var(q1, r1, i2) = (AxialCoordinates)v1; var v3 = new AxialCoordinates(1, -1); var(q, r, s) = (CubeCoordinates)v3; Assert.AreEqual(q1, q); Assert.AreEqual(r1, r); Assert.AreEqual(i2, s); }
public void TestCastOffetCubeOddRow() { var v1 = new CubeCoordinates(1, -1, 0); var v2 = (OddRow)v1; var v3 = (CubeCoordinates)v2; Assert.AreEqual(v1, v3); var v4 = new AxialCoordinates(1, -1); var v5 = (OddRow)v4; var v6 = (AxialCoordinates)v5; Assert.AreEqual(v4, v6); }
public void TestVecCast() { var v1 = new CubeCoordinates(1, 0, -1); Vector2 vec = v1; AxialCoordinates axial = vec; Vector3 vec3 = axial; AxialCoordinates axial2 = vec3; CubeCoordinates cube = vec3; Vector2 vec2 = axial; EvenColumn ec = axial2; OddColumn oc = (OddColumn)ec; EvenRow er = (EvenRow)oc; OddRow or = (OddRow)er; vec2 = oc; Assert.AreEqual(v1, (CubeCoordinates)vec2); vec2 = or; Assert.AreEqual(v1, (CubeCoordinates)vec2); vec2 = ec; Assert.AreEqual(v1, (CubeCoordinates)vec2); vec2 = er; Assert.AreEqual(v1, (CubeCoordinates)vec2); oc = vec2; or = vec2; ec = vec2; er = vec2; vec3 = oc; Assert.AreEqual(v1, (CubeCoordinates)vec3); vec3 = or; Assert.AreEqual(v1, (CubeCoordinates)vec3); vec3 = ec; Assert.AreEqual(v1, (CubeCoordinates)vec3); vec3 = er; Assert.AreEqual(v1, (CubeCoordinates)vec3); oc = vec3; or = vec3; ec = vec3; er = vec3; Assert.AreEqual(v1, (CubeCoordinates)vec); Assert.AreEqual(v1, (CubeCoordinates)axial); Assert.AreEqual(v1, (CubeCoordinates)vec3); Assert.AreEqual(v1, (CubeCoordinates)cube); Assert.AreEqual(v1, (CubeCoordinates)vec2); }
public static void CreateHexOutline(this VertexArray vertexArray, AxialCoordinates position, HexModel model, Color color) { var topLeftCorner = model.GetTopLeftCorner(position); var apexes = model.GetApexesPositions(topLeftCorner); foreach (var apex in apexes) { vertexArray.Append(new Vertex( position: apex, color: color )); } vertexArray.Append(new Vertex( position: apexes[0], color: color )); }
public Field(Map world, AxialCoordinates position) { Position = position; World = world; neighbours = new Lazy <List <Field> >(() => { var neighbours = new List <Field>(); var neighboursOffsets = World.Model.Neighbours; for (int i = 0; i < 6; i++) { var neighbourPosition = position + neighboursOffsets[i]; if (world.Contains(neighbourPosition)) { neighbours.Add(world[position + neighboursOffsets[i]]); } } return(neighbours); }); }