@Override
	public double drawString(String str, SpriteSheet font, double x, double y,
			double scale, Color color, double wrapX) {
		double aspect = font.getSpriteAspect();
		double maxLength = (wrapX - x) / (scale * aspect);
		if (wrapX <= x || wrapX <= -1 || str.length() < maxLength) {
			drawStringLine(str, font, x, y, scale, color);
			return y - scale;
		}
		str = Util.wrapString(str, maxLength);
		String[] strs = str.split("\n");
		for (int i = 0; i < strs.length; i++) {
			String[] wrappedStrings = strs[i].split("(?<=\\G.{"
					+ ((int) maxLength) + "})");
			for (int j = 0; j < wrappedStrings.length; j++, y -= scale) {
				drawStringLine(wrappedStrings[j], font, x, y, scale, color);
			}
		}
		return y;
	}