@Override
	public void setupSurface(Surface surface, Face direction) {
		this.surface = surface;
		
		//get the warped texture image
		surfaceTexture = warpImage("/texture/" + surface.roomView.room.getWallTexture() + ".png");

		//set bounds for the surface
		surfaceWidth = surface.roomView.width / 4;
		surfaceHeight = surface.roomView.height;
		surfaceY = surface.roomView.boundY;
		if (left){
			surfaceX = surface.roomView.boundX;
		} else {
			surfaceX = surface.roomView.boundX + ((surface.roomView.width * 3) / 4);
		}

		if (surface.roomView.room instanceof Hallway){
			//if we are in a hallway we should look to see
			//what room is on the other side of this surface
			MansionArea nextRoom = null;
			switch (direction){
			case NORTHERN:
				nextRoom = surface.roomView.room.getNorth();
				break;
			case WESTERN:
				nextRoom = surface.roomView.room.getWest();
				break;
			case SOUTHERN:
				nextRoom = surface.roomView.room.getSouth();
				break;
			case EASTERN:
				nextRoom = surface.roomView.room.getEast();
			}

			if (nextRoom != null && nextRoom instanceof Hallway){
				//next room is another hallway we should draw.
				//as it is a very specific perspective we must use a special constructor in RoomView
				sideRoom = new RoomView(nextRoom, surface.roomView.playerDirection, surface.roomView.boundX, surface.roomView.boundY, surface.roomView.width, surface.roomView.height, left);

			} else {
				//its a room, so use hallway wall texture
				surfaceTexture = warpImage("/texture/hallwayW.png");
			}
		}

		//create object list for surface
		createGameObjects(surface.roomView.room, direction);
		
		//setup polygon
		//polygon is the same shape, size, and position as the rendered wall
		int[] xs = new int[4];
		int[] ys = new int[4];
		
		if (left){
			//left polygon
			xs[0] = surfaceX;
			ys[0] = surfaceY;
			xs[1] = surfaceX + surfaceWidth;
			ys[1] = surfaceY + (surfaceHeight / 4);
			xs[2] = xs[1];
			ys[2] = ys[1] + (surfaceHeight / 2);
			xs[3] = xs[0];
			ys[3] = ys[0] + surfaceHeight;
		} else {
			//right polygon
			xs[0] = surfaceX;
			ys[0] = surfaceY + (surfaceHeight / 4);
			xs[1] = surfaceX + surfaceWidth;
			ys[1] = surfaceY;
			xs[2] = xs[1];
			ys[2] = ys[1] + surfaceHeight;
			xs[3] = xs[0];
			ys[3] = ys[0] + (surfaceHeight / 2);
		}
		clickableArea = new Polygon(xs, ys, 4);
		
	}