Esempio n. 1
0
        public static SIDE_4 rotateRight(SIDE_4 side, int turnCount = 1)
        {
            SIDE_4 retVal = side;

            for (int i = 0; i < turnCount; i++)
            {
                switch (retVal)
                {
                    case SIDE_4.RIGHT:
                        retVal = SIDE_4.BOTTOM;
                        break;
                    case SIDE_4.TOP:
                        retVal = SIDE_4.RIGHT;
                        break;
                    case SIDE_4.LEFT:
                        retVal = SIDE_4.TOP;
                        break;
                    case SIDE_4.BOTTOM:
                        retVal = SIDE_4.LEFT;
                        break;
                }
            }

            return retVal;
        }
Esempio n. 2
0
        public Tile getSide(SIDE_4 side)
        {
            if (_node == null)
                return null;

            QuadNode<Tile> sideNode = _node.getSide(side);

            if (sideNode == null)
                return null;

            return sideNode.data();
        }
Esempio n. 3
0
 public static SIDE_4 flip(SIDE_4 side)
 {
     return rotateLeft(side, 2);
 }
        public virtual void rotateTo(SIDE_4 orientation)
        {
            bool wasPlaced = placed();
            if (wasPlaced)
                remove();

            while (orientation != _orientation)
            {
                _orientation = Side.rotateLeft(_orientation);

                switch (_orientation)
                {
                    case Utilities.SIDE_4.RIGHT:
                        transform.localEulerAngles = new Vector3(0, 0, 0.0f);
                        break;
                    case Utilities.SIDE_4.TOP:
                        transform.localEulerAngles = new Vector3(0, 0, 90.0f);
                        break;
                    case Utilities.SIDE_4.LEFT:
                        transform.localEulerAngles = new Vector3(0, 0, 180.0f);
                        break;
                    case Utilities.SIDE_4.BOTTOM:
                        transform.localEulerAngles = new Vector3(0, 0, 270.0f);
                        break;
                }

                rotateArea();
            }

            if (wasPlaced)
                place();

            updateColor();
        }
        private void setArea(SIDE_4 side, int armLength, bool hasTiles)
        {
            if (armLength < 0 || armLength > 8)
                return;

            int realX = maxArmSize * 2;
            int realY = maxArmSize * 2;

            switch (side)
            {
                case SIDE_4.RIGHT:
                    realX += armLength * 2;
                    break;
                case SIDE_4.TOP:
                    realY += armLength * 2;
                    break;
                case SIDE_4.LEFT:
                    realX -= armLength * 2;
                    break;
                case SIDE_4.BOTTOM:
                    realY -= armLength * 2;
                    break;
                default:
                    return;
            }

            _area[realX, realY] = hasTiles;
            _area[realX, realY + 1] = hasTiles;
            _area[realX + 1, realY] = hasTiles;
            _area[realX + 1, realY + 1] = hasTiles;
        }
Esempio n. 6
0
            public void connectTo(Chunk chunk, SIDE_4 side)
            {
                if (chunk == null)
                    return;

                switch (side)
                {
                    case SIDE_4.RIGHT:
                        for (int j = 0; j < size.y; j++)
                            _data[size.x - 1, j].attach(chunk._data[0, j], SIDE_4.RIGHT);
                        break;
                    case SIDE_4.LEFT:
                        for (int j = 0; j < size.y; j++)
                            _data[0, j].attach(chunk._data[size.x - 1, j], SIDE_4.LEFT);
                        break;
                    case SIDE_4.TOP:
                        for (int i = 0; i < size.x; i++)
                            _data[i, size.y - 1].attach(chunk._data[i, 0], SIDE_4.TOP);
                        break;
                    case SIDE_4.BOTTOM:
                        for (int i = 0; i < size.x; i++)
                            _data[i, 0].attach(chunk._data[i, size.y - 1], SIDE_4.BOTTOM);
                        break;
                }
            }