public void drawCell(Graphics og, Maze.Cell north, Maze.Cell west)
        {
            og.setColor(tmColors.PALEPINK);
       		og.fillPolygon(frontPanel);
            og.fillPolygon(floorPanel);
       		og.fillPolygon(backPanel);
            og.fillPolygon(ceilingPanel);
			// this is the level bar, except for the outer black rectangle boundary
			// there will be 7 possible colors: ROYGBIV -- 4 levels per color
			Color[] spectrum = {tmColors.RED, tmColors.ORANGE, tmColors.YELLOW, tmColors.GREEN, tmColors.BLUE, tmColors.INDIGO, tmColors.VIOLET};
			for (int i = 0; i < pentathlon.getLevel(); i++)
			{
				int idx = i/4;
				og.setColor(spectrum[idx]);
				og.fillRect(xStart + i * 11, 35, 11, 15);
			}
            og.setColor(tmColors.BLACK);
            og.setFont(tmFonts.PLAIN24);
            og.drawString("Level " + pentathlon.getLevel(), xStart, 25);
			og.drawRect(xStart, 35, 28 * 11, 15);
            og.drawString(message, xStart, yMessage);
       		og.drawPolygon(frontPanel);
            og.drawPolygon(floorPanel);
       		og.drawPolygon(backPanel);
            og.drawPolygon(ceilingPanel);
            southDoor.process(this.isSouthWall(), og);
            eastDoor.process(this.isEastWall(), og);
            if (west == null)
            {
                westDoor.process(true, og);
            }
            else
            {
                westDoor.process(west.isEastWall(), og);
            }
            if (north == null)
            {
                northDoor.process(true, og);
            }
            else
            {
                northDoor.process(north.isSouthWall(), og);
            }
            og.setColor(tmColors.YELLOW);
            switch (youDoor)
            {
                case NORTH:
               		og.fillRoundRect(xStart + 9*scale + (scale/2), 10*scale + yPad, scale, scale, 20, 20);
                    break;
                case SOUTH:
               		og.fillRoundRect(xStart + 9*scale + (scale/2), 16*scale + yPad, scale, scale, 20, 20);
                    break;
                case EAST:
               		og.fillRoundRect(xStart + 17*scale, 13*scale + yPad, scale, scale, 20, 20);
                    break;
                case WEST:
               		og.fillRoundRect(xStart + 2*scale, 13*scale + yPad, scale, scale, 20, 20);
                    break;
                default:
                    pentathlon.log.error("ERROR!!! Fallthrough in Maze.drawCell");
            }
            if (jewelGame > 0)
            {
                Font[] jewelFonts = {null, tmFonts.PLAIN24, tmFonts.PLAIN24, tmFonts.PLAIN24, tmFonts.BOLD12};
                og.setColor(Pentathlon.bgColors[jewelGame]);
                og.fillRoundRect(xStart + 9*scale + (scale/2), 11*scale + (scale/2) + yPad, 3*scale, 2*scale, 3, 3);
                og.setColor(tmColors.RED);
                og.setFont(jewelFonts[jewelGame]);
                og.drawString("" + (pentathlon.getPiecesToFind()[jewelGame]).get(jewelIndex), xStart + 9*scale + (scale/2) + 5, 13*scale + yPad);
                pentathlon.setPiecesFound(jewelGame, jewelIndex);
                jewelGame = 0;
            }
        }