示例#1
0
        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);
        }
示例#2
0
        public Vector2f GetTopLeftCorner(AxialCoordinates position)
        {
            OffsetCoordinates offsetCoords = position;

            return(new Vector2f(
                       (offsetCoords.Row & 1) * HorizontalSize / 2 + HorizontalSize * offsetCoords.Column,
                       offsetCoords.Row * (VerticalSize - EdgeLength / 2)
                       ));
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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
                                   ));
        }
示例#9
0
        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);
            });
        }