public void drawTextWithPotentialShadow(String text, int x, int y, int currentColour,
			boolean shadowed) {
		strikethrough = false;
		int originalX = x;
		if (text == null)
			return;
		
		/*
		 * Draw from the top-left rather than the bottom.
		 */
		y -= fontHeight;
		
		/*
		 * Iterate through every character in the text.
		 */
		for (int c = 0; c < text.length(); c++) {
			/*
			 * Check if the current piece of text being processed
			 * is a colour for (@dre@ for example)
			 */
			if (text.charAt(c) == '@' 
					&& c + 4 < text.length()
					&& text.charAt(c + 4) == '@') {
				int colour = handleEmbeddedEffect(text.substring(c + 1, c + 4));
				if (colour != -1)
					currentColour = colour;
				c += 4;
			} else {
				char character = text.charAt(c);
				
				/*
				 * If the character is a space, we don't need to
				 * draw it (but we do still offset the current x
				 * pointer using the glyph's width).
				 */
				if (character != ' ') {
					/*
					 * If the text has a shadow, we draw the shadow
					 * at a slight offset and then draw the normal
					 * coloured text on top of it.
					 */
					if (shadowed) {
						drawGlyph(glyphPixels[character], x
								+ horizontalKerning[character] + 1, y
								+ verticalKerning[character] + 1,
								glyphWidth[character], glyphHeight[character],
								0);
					}
					drawGlyph(glyphPixels[character], x
							+ horizontalKerning[character], y
							+ verticalKerning[character],
							glyphWidth[character], glyphHeight[character],
							currentColour);
				}
				x += glyphDisplayWidth[character];
			}
		}
		
		/*
		 * If the current piece of text has a strikethrough applied,
		 * draw a horizontal line from the start of the text to the
		 * current position.
		 */
		if (strikethrough) {
			DrawingArea.drawHorizontalLine(y + (int) (fontHeight * 0.7D),
					originalX, x - originalX, 0x800000);
		}
	}