public void CoordToWorldMapping()
        {
            OrientationManager.SetOrientation(Orientation.North);

            Vector2Int coord1 = new Vector2Int(74, -23);
            Vector2Int coord2 = new Vector2Int(-33, 13);
            Vector2Int coord3 = new Vector2Int(93, 0);

            Vector2 expectedWorldPos1 = new Vector2(
                -98 * Settings.TILE_WIDTH_HALF,
                -51 * Settings.TILE_HEIGHT_HALF);

            Assert.AreEqual(TileTransformer.CoordToWorld(coord1), expectedWorldPos1);
            Assert.AreEqual(TileTransformer.CoordToWorld(coord1.x, coord1.y), expectedWorldPos1);
            Assert.AreEqual(TileTransformer.CoordToWorld((float)coord1.x, (float)coord1.y), expectedWorldPos1);

            Vector2 expectedWorldPos2 = new Vector2(
                45 * Settings.TILE_WIDTH_HALF,
                20 * Settings.TILE_HEIGHT_HALF);

            Assert.AreEqual(TileTransformer.CoordToWorld(coord2), expectedWorldPos2);
            Assert.AreEqual(TileTransformer.CoordToWorld(coord2.x, coord2.y), expectedWorldPos2);
            Assert.AreEqual(TileTransformer.CoordToWorld((float)coord2.x, (float)coord2.y), expectedWorldPos2);

            Vector2 expectedWorldPos3 = new Vector2(
                -94 * Settings.TILE_WIDTH_HALF,
                -93 * Settings.TILE_HEIGHT_HALF);

            Assert.AreEqual(TileTransformer.CoordToWorld(coord3), expectedWorldPos3);
            Assert.AreEqual(TileTransformer.CoordToWorld(coord3.x, coord3.y), expectedWorldPos3);
            Assert.AreEqual(TileTransformer.CoordToWorld((float)coord3.x, (float)coord3.y), expectedWorldPos3);
        }
Exemple #2
0
        public void FloatRotationsKeepDecimals()
        {
            Vector2 coord1 = new Vector2(39.4f, 12.2f);

            Assert.AreEqual(TileTransformer.RotateCoord(coord1), new Vector2(39.4f, 12.2f));
            Assert.AreEqual(TileTransformer.InverseRotateCoord(coord1), new Vector2(39.4f, 12.2f));

            OrientationManager.SetOrientation(Orientation.West);
            Assert.AreEqual(TileTransformer.RotateCoord(coord1), new Vector2(12.2f, -39.4f));
            Assert.AreEqual(TileTransformer.InverseRotateCoord(coord1), new Vector2(-12.2f, 39.4f));
        }
        public void WorldToCoordRotates()
        {
            OrientationManager.SetOrientation(Orientation.North);

            Vector2Int coords = new Vector2Int(13, -33);
            Vector2    world  = TileTransformer.CoordToWorld(coords) + new Vector2(Settings.TILE_WIDTH_HALF / 2f, 0f);

            Vector2Int invertedCoords = TileTransformer.WorldToCoord(world);

            OrientationManager.SetOrientation(Orientation.West);
            Assert.AreEqual(TileTransformer.InverseRotateCoord(invertedCoords), TileTransformer.WorldToCoord(world));
        }
Exemple #4
0
        public void InverseRotationBehaviour()
        {
            Vector2Int coord = new Vector2Int(-45, -23);

            OrientationManager.SetOrientation(Orientation.East);
            Assert.AreEqual(TileTransformer.InverseRotateCoord(coord), new Vector2Int(-23, 45));

            OrientationManager.SetOrientation(Orientation.West);
            Assert.AreEqual(TileTransformer.InverseRotateCoord(coord), new Vector2Int(23, -45));

            OrientationManager.SetOrientation(Orientation.South);
            Assert.AreEqual(TileTransformer.InverseRotateCoord(coord), new Vector2Int(45, 23));
        }
Exemple #5
0
        public void RegularRotationBehaviour()
        {
            Vector2Int coord = new Vector2Int(34, -21);

            OrientationManager.SetOrientation(Orientation.East);
            Assert.AreEqual(TileTransformer.RotateCoord(coord), new Vector2Int(21, 34));

            OrientationManager.SetOrientation(Orientation.West);
            Assert.AreEqual(TileTransformer.RotateCoord(coord), new Vector2Int(-21, -34));

            OrientationManager.SetOrientation(Orientation.South);
            Assert.AreEqual(TileTransformer.RotateCoord(coord), new Vector2Int(-34, 21));
        }
Exemple #6
0
        public void NorthRotationIsIdentity()
        {
            OrientationManager.SetOrientation(Orientation.North);

            Vector2Int coord1 = new Vector2Int(73, 12);
            Vector2Int coord2 = new Vector2Int(-89, 22);
            Vector2Int coord3 = new Vector2Int(10, -4);

            Assert.AreEqual(coord1, TileTransformer.RotateCoord(coord1));
            Assert.AreEqual(coord2, TileTransformer.RotateCoord(coord2));
            Assert.AreEqual(coord3, TileTransformer.RotateCoord(coord3));

            Assert.AreEqual(coord1, TileTransformer.InverseRotateCoord(coord1));
            Assert.AreEqual(coord2, TileTransformer.InverseRotateCoord(coord2));
            Assert.AreEqual(coord3, TileTransformer.InverseRotateCoord(coord3));
        }
        public void WorldToCoordRounds()
        {
            OrientationManager.SetOrientation(Orientation.North);

            Vector2Int coords1 = new Vector2Int(42, 0);
            Vector2Int coords2 = new Vector2Int(-11, -63);
            Vector2Int coords3 = new Vector2Int(-52, 53);

            Vector2 world1 = TileTransformer.CoordToWorld(coords1) +
                             new Vector2(Settings.TILE_WIDTH / 6f, Settings.TILE_HEIGHT / 9f);

            Vector2 world2 = TileTransformer.CoordToWorld(coords2) +
                             new Vector2(Settings.TILE_WIDTH / 3f, 0f);

            // This test adds a big offset so the coords change.
            Vector2 world3 = TileTransformer.CoordToWorld(coords3) +
                             new Vector2(Settings.TILE_WIDTH_HALF, Settings.TILE_HEIGHT * 0.9f);

            Assert.AreEqual(coords1, TileTransformer.WorldToCoord(world1));
            Assert.AreEqual(coords2, TileTransformer.WorldToCoord(world2));
            Assert.AreEqual(coords3, TileTransformer.WorldToCoord(world3) + Vector2Int.one);
        }
        public void CoordToWorldRotates()
        {
            OrientationManager.SetOrientation(Orientation.North);
            Vector2Int originalCoord = new Vector2Int(77, 23);
            Vector2    originalWorld = TileTransformer.CoordToWorld(originalCoord);

            OrientationManager.SetOrientation(Orientation.East);
            Vector2Int eastCoord             = TileTransformer.RotateCoord(originalCoord);
            Vector2    eastWorldFromOriginal = TileTransformer.CoordToWorld(originalCoord);

            OrientationManager.SetOrientation(Orientation.West);
            Vector2Int westCoord             = TileTransformer.RotateCoord(originalCoord);
            Vector2    westWorldFromOriginal = TileTransformer.CoordToWorld(originalCoord);

            OrientationManager.SetOrientation(Orientation.South);
            Vector2Int southCoord             = TileTransformer.RotateCoord(originalCoord);
            Vector2    southWorldFromOriginal = TileTransformer.CoordToWorld(originalCoord);

            OrientationManager.SetOrientation(Orientation.North);

            Assert.AreEqual(TileTransformer.CoordToWorld(eastCoord), eastWorldFromOriginal);
            Assert.AreEqual(TileTransformer.CoordToWorld(westCoord), westWorldFromOriginal);
            Assert.AreEqual(TileTransformer.CoordToWorld(southCoord), southWorldFromOriginal);
        }
Exemple #9
0
        public void TileRotationIsInvertible()
        {
            Vector2Int coord1 = new Vector2Int(13, 32);
            Vector2Int coord2 = new Vector2Int(-42, 78);
            Vector2Int coord3 = new Vector2Int(-81, -70);

            // North
            OrientationManager.SetOrientation(Orientation.North);

            Vector2Int rotated1 = TileTransformer.RotateCoord(coord1);
            Vector2Int rotated2 = TileTransformer.RotateCoord(coord2);
            Vector2Int rotated3 = TileTransformer.RotateCoord(coord3);

            Vector2Int inverseRotated1 = TileTransformer.InverseRotateCoord(coord1);
            Vector2Int inverseRotated2 = TileTransformer.InverseRotateCoord(coord2);
            Vector2Int inverseRotated3 = TileTransformer.InverseRotateCoord(coord3);

            Assert.AreEqual(coord1, TileTransformer.InverseRotateCoord(rotated1));
            Assert.AreEqual(coord2, TileTransformer.InverseRotateCoord(rotated2));
            Assert.AreEqual(coord3, TileTransformer.InverseRotateCoord(rotated3));

            Assert.AreEqual(coord1, TileTransformer.RotateCoord(inverseRotated1));
            Assert.AreEqual(coord2, TileTransformer.RotateCoord(inverseRotated2));
            Assert.AreEqual(coord3, TileTransformer.RotateCoord(inverseRotated3));

            // East
            OrientationManager.SetOrientation(Orientation.East);

            rotated1 = TileTransformer.RotateCoord(coord1);
            rotated2 = TileTransformer.RotateCoord(coord2);
            rotated3 = TileTransformer.RotateCoord(coord3);

            inverseRotated1 = TileTransformer.InverseRotateCoord(coord1);
            inverseRotated2 = TileTransformer.InverseRotateCoord(coord2);
            inverseRotated3 = TileTransformer.InverseRotateCoord(coord3);

            Assert.AreEqual(coord1, TileTransformer.InverseRotateCoord(rotated1));
            Assert.AreEqual(coord2, TileTransformer.InverseRotateCoord(rotated2));
            Assert.AreEqual(coord3, TileTransformer.InverseRotateCoord(rotated3));

            Assert.AreEqual(coord1, TileTransformer.RotateCoord(inverseRotated1));
            Assert.AreEqual(coord2, TileTransformer.RotateCoord(inverseRotated2));
            Assert.AreEqual(coord3, TileTransformer.RotateCoord(inverseRotated3));

            // West
            OrientationManager.SetOrientation(Orientation.West);

            rotated1 = TileTransformer.RotateCoord(coord1);
            rotated2 = TileTransformer.RotateCoord(coord2);
            rotated3 = TileTransformer.RotateCoord(coord3);

            inverseRotated1 = TileTransformer.InverseRotateCoord(coord1);
            inverseRotated2 = TileTransformer.InverseRotateCoord(coord2);
            inverseRotated3 = TileTransformer.InverseRotateCoord(coord3);

            Assert.AreEqual(coord1, TileTransformer.InverseRotateCoord(rotated1));
            Assert.AreEqual(coord2, TileTransformer.InverseRotateCoord(rotated2));
            Assert.AreEqual(coord3, TileTransformer.InverseRotateCoord(rotated3));

            Assert.AreEqual(coord1, TileTransformer.RotateCoord(inverseRotated1));
            Assert.AreEqual(coord2, TileTransformer.RotateCoord(inverseRotated2));
            Assert.AreEqual(coord3, TileTransformer.RotateCoord(inverseRotated3));

            // South
            OrientationManager.SetOrientation(Orientation.South);

            rotated1 = TileTransformer.RotateCoord(coord1);
            rotated2 = TileTransformer.RotateCoord(coord2);
            rotated3 = TileTransformer.RotateCoord(coord3);

            inverseRotated1 = TileTransformer.InverseRotateCoord(coord1);
            inverseRotated2 = TileTransformer.InverseRotateCoord(coord2);
            inverseRotated3 = TileTransformer.InverseRotateCoord(coord3);

            Assert.AreEqual(coord1, TileTransformer.InverseRotateCoord(rotated1));
            Assert.AreEqual(coord2, TileTransformer.InverseRotateCoord(rotated2));
            Assert.AreEqual(coord3, TileTransformer.InverseRotateCoord(rotated3));

            Assert.AreEqual(coord1, TileTransformer.RotateCoord(inverseRotated1));
            Assert.AreEqual(coord2, TileTransformer.RotateCoord(inverseRotated2));
            Assert.AreEqual(coord3, TileTransformer.RotateCoord(inverseRotated3));
        }
Exemple #10
0
 public void Setup()
 {
     OrientationManager.SetOrientation(Orientation.North);
 }