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; }
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(); }
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; }
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; } }