// Create a wall // (x, y) is the coordinate of the tile // direction is the direction from the tile where the wall should be created public void CreateWall(int x, int y, int direction) { TileClass tile = GetTileAtCoordinate(x, y).GetComponent <TileClass>(); TileClass otherTile = null; GameObject obj; ObjectStore objStore = Camera.main.GetComponent <ObjectStore>(); GameObject wall; float wallX = x; float wallY = y; switch (direction) { case TileClass.NORTH: obj = GetTileAtCoordinate(x, y + 1); if (obj) { otherTile = obj.GetComponent <TileClass>(); } if (!tile.HasWall(TileClass.NORTH) && otherTile != null && !otherTile.HasWall(TileClass.SOUTH)) { wallY += 0.5f; wall = objStore.CreateHorizontalWall(wallX, wallY); tile.SetWall(TileClass.NORTH, wall); otherTile.SetWall(TileClass.SOUTH, wall); } break; case TileClass.EAST: obj = GetTileAtCoordinate(x + 1, y); if (obj) { otherTile = obj.GetComponent <TileClass>(); } if (!tile.HasWall(TileClass.EAST) && otherTile != null && !otherTile.HasWall(TileClass.WEST)) { wallX -= 0.5f; wall = objStore.CreateVerticalWall(wallX, wallY); tile.SetWall(TileClass.EAST, wall); otherTile.SetWall(TileClass.WEST, wall); } break; case TileClass.SOUTH: obj = GetTileAtCoordinate(x, y - 1); if (obj) { otherTile = obj.GetComponent <TileClass>(); } if (!tile.HasWall(TileClass.SOUTH) && otherTile != null && !otherTile.HasWall(TileClass.NORTH)) { wallY -= 0.5f; wall = objStore.CreateHorizontalWall(wallX, wallY); tile.SetWall(TileClass.SOUTH, wall); otherTile.SetWall(TileClass.NORTH, wall); } break; case TileClass.WEST: obj = GetTileAtCoordinate(x - 1, y); if (obj) { otherTile = obj.GetComponent <TileClass>(); } if (!tile.HasWall(TileClass.WEST) && otherTile != null && !otherTile.HasWall(TileClass.EAST)) { wallX += 0.5f; wall = objStore.CreateVerticalWall(wallX, wallY); tile.SetWall(TileClass.WEST, wall); otherTile.SetWall(TileClass.EAST, wall); } break; } }