public void occupyTileWithProp(GameObject propToPut, UserController.Direction dir) { if (wallOnTile == null) { var propRotation = getObjRotation(transform, dir); propOnTile = Instantiate(propToPut, transform.position + propToPut.transform.position, propToPut.transform.rotation); propOnTile.transform.parent = transform; propOnTile.transform.RotateAround(transform.position, Vector3.up, propRotation.eulerAngles.y); } }
private bool adjacentsAreEmpty(int wallSize, UserController.Direction dir) { TileView nextTile = this.getNextTile(dir); for (int i = 1; i < wallSize; i++) { if (nextTile == null || nextTile.getWallOnTile() != null) { return(false); } nextTile = nextTile.getNextTile(dir); } return(true); }
//TODO: Create wall model with wallSize public void occupyTileWithWall(GameObject wallToPut, int wallSize, UserController.Direction dir) { if (isWallPlacementValid(wallSize, dir)) { var wallRotation = getObjRotation(transform, dir); wallOnTile = Instantiate(wallToPut, transform.position + wallToPut.transform.position, wallToPut.transform.rotation); wallOnTile.transform.parent = transform; wallOnTile.transform.RotateAround(transform.position, Vector3.up, wallRotation.eulerAngles.y); TileView nextTile = getNextTile(dir); for (int i = 1; i < wallSize; i++) { nextTile.setWallOnTile(wallOnTile); nextTile = nextTile.getNextTile(dir); } } }
private Quaternion getObjRotation(Transform baseTransform, UserController.Direction dir) { switch (dir) { case UserController.Direction.LEFT: return(baseTransform.rotation); case UserController.Direction.RIGHT: return(baseTransform.rotation * Quaternion.Euler(0, 180, 0)); case UserController.Direction.TOP: return(baseTransform.rotation * Quaternion.Euler(0, 90, 0)); case UserController.Direction.BOTTOM: return(baseTransform.rotation * Quaternion.Euler(0, 270, 0)); default: throw new System.Exception("Invalid Direction"); } }
public TileView getNextTile(UserController.Direction dir) { switch (dir) { case UserController.Direction.LEFT: return(getAdjacentTileByIndex(3)); case UserController.Direction.RIGHT: return(getAdjacentTileByIndex(0)); case UserController.Direction.TOP: return(getAdjacentTileByIndex(2)); case UserController.Direction.BOTTOM: return(getAdjacentTileByIndex(1)); default: throw new System.Exception("Invalid Direction"); } }
public bool isWallPlacementValid(int wallSize, UserController.Direction dir) { return(wallOnTile == null && adjacentsAreEmpty(wallSize, dir)); }
public void previewTileWithObj(GameObject instantiatedObj, Transform initialTransform, UserController.Direction dir) { var wallRotation = getObjRotation(transform, dir); instantiatedObj.transform.position = initialTransform.position + transform.position; instantiatedObj.transform.rotation = initialTransform.rotation; instantiatedObj.transform.RotateAround(transform.position, Vector3.up, wallRotation.eulerAngles.y); }