From e892ad6c9a6a0aba35e1bb677723950e674187b5 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 25 May 2014 22:21:03 +0000 Subject: [PATCH] Fix text renderer bounds issue Prevent setting up game state when no player has priority --- forge-gui-mobile/src/forge/assets/TextRenderer.java | 2 +- forge-gui-mobile/src/forge/toolbox/FTextArea.java | 4 +++- forge-gui/src/main/java/forge/util/GuiDisplayUtil.java | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/forge-gui-mobile/src/forge/assets/TextRenderer.java b/forge-gui-mobile/src/forge/assets/TextRenderer.java index 22fa1cda4ef..87864967f6e 100644 --- a/forge-gui-mobile/src/forge/assets/TextRenderer.java +++ b/forge-gui-mobile/src/forge/assets/TextRenderer.java @@ -81,7 +81,7 @@ public class TextRenderer { if (fullText.isEmpty()) { return; } BitmapFont bitmapFont = font.getFont(); - totalHeight = bitmapFont.getLineHeight(); + totalHeight = bitmapFont.getCapHeight(); if (totalHeight > height) { //immediately try one font size smaller if no room for anything if (font.getSize() > FSkinFont.MIN_FONT_SIZE) { diff --git a/forge-gui-mobile/src/forge/toolbox/FTextArea.java b/forge-gui-mobile/src/forge/toolbox/FTextArea.java index 1270f92fc44..ba51944d006 100644 --- a/forge-gui-mobile/src/forge/toolbox/FTextArea.java +++ b/forge-gui-mobile/src/forge/toolbox/FTextArea.java @@ -53,7 +53,9 @@ public class FTextArea extends FScrollPane { } public float getPreferredHeight(float width) { - return renderer.getWrappedBounds(text, font, width - 2 * insets.x).height + 2 * insets.y; + return renderer.getWrappedBounds(text, font, width - 2 * insets.x).height + + font.getFont().getLineHeight() - font.getFont().getCapHeight() //need to account for difference in line and cap height + + 2 * insets.y; } @Override diff --git a/forge-gui/src/main/java/forge/util/GuiDisplayUtil.java b/forge-gui/src/main/java/forge/util/GuiDisplayUtil.java index 90878a86b78..1940a9e2c85 100644 --- a/forge-gui/src/main/java/forge/util/GuiDisplayUtil.java +++ b/forge-gui/src/main/java/forge/util/GuiDisplayUtil.java @@ -145,6 +145,11 @@ public final class GuiDisplayUtil { final Map aiCardTexts, final String tChangePlayer, final String tChangePhase) { final Game game = getGame(); + Player pPriority = game.getPhaseHandler().getPriorityPlayer(); + if (pPriority == null) { + SGuiDialog.message("No player has priority at the moment, so game state cannot be setup."); + return; + } game.getAction().invoke(new Runnable() { @Override public void run() {