From c936b9fed9e038efd7400bf3d854ca39ec4983a6 Mon Sep 17 00:00:00 2001 From: Lyu Zong-Hong Date: Thu, 29 Jul 2021 17:36:16 +0900 Subject: [PATCH] Fix some issues when rendering Level up cards --- .../toolbox/imaging/FCardImageRenderer.java | 47 ++++++++++++------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java b/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java index 570c15d88d6..6f0ff9a0dde 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java @@ -272,36 +272,47 @@ public class FCardImageRenderer { String [] paragraphs = linebreakPattern.split(text); StringBuilder sb = new StringBuilder(); String text1 = "", text2 = "", text3 = ""; - String level2 = null, level3 = null; + String level2 = "", level3 = ""; String ptOverride2 = null, ptOverride3 = null; - boolean matchedLevel = false; for (String pg : paragraphs) { - if (pg.matches(".*[0-9]+-[0-9]+")) { - text1 = sb.toString(); + if (pg.matches("(.*[0-9]+-[0-9]+)|(.*[0-9]+\\+)")) { + //add space before numbers in case there is no space. + pg = pg.replaceAll("([^0-9 ]+)(([0-9]+-[0-9]+)|([0-9]+\\+))", "$1 $2"); + if (level2.isEmpty()) { + text1 = sb.toString(); + level2 = pg; + } else { + text2 = sb.toString(); + level3 = pg; + } sb.setLength(0); - level2 = pg; - matchedLevel = true; - continue; - } else if (pg.matches(".*[0-9]+\\+")) { - text2 = sb.toString(); - sb.setLength(0); - level3 = pg; - matchedLevel = true; continue; } - if (!matchedLevel) { - if (sb.length() > 0) - sb.append("\n"); - sb.append(pg); - } else { + if (pg.matches("[0-9]+/[0-9]+")) { if (ptOverride2 == null) ptOverride2 = pg; else ptOverride3 = pg; + continue; } - matchedLevel = false; + if (sb.length() > 0) + sb.append("\n"); + sb.append(pg); } text3 = sb.toString(); + //handle the case that translated text doesn't contains P/T info. + if (ptOverride2 == null) { + paragraphs = linebreakPattern.split(state.getOracleText()); + for (String pg : paragraphs) { + if (pg.matches("[0-9]+/[0-9]+")) { + if (ptOverride2 == null) + ptOverride2 = pg; + else + ptOverride3 = pg; + } + } + } + int textX = x + artInset; //draw text box