From eeca33855d47541268973b5dc840bac193b3848c Mon Sep 17 00:00:00 2001 From: Eradev Date: Fri, 22 Aug 2025 23:56:21 -0400 Subject: [PATCH] Fix minor card render problems (#8478) * Missing space * Unescape line breaks in card descriptions --- forge-game/src/main/java/forge/game/card/Card.java | 4 ++++ forge-game/src/main/java/forge/game/card/CardView.java | 4 +++- .../src/main/java/forge/game/cost/CostExileFromStack.java | 2 +- forge-gui-mobile/src/forge/screens/match/views/VStack.java | 4 +++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index e76e031188b..ac7d38b63f6 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -3219,6 +3219,10 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr desc = TextUtil.fastReplace(desc, "EFFECTSOURCE", getEffectSource().getName()); } + // Ensure no more escaped linebreak are present + desc = desc.replace("\\r", "\r") + .replace("\\n", "\n"); + return desc.trim(); } diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index e70fb33ba5b..674477c3795 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -938,7 +938,9 @@ public class CardView extends GameEntityView { sb.append("\r\n\r\nMerged Cards: ").append(mergedCards); } - return sb.toString().trim(); + return sb.toString().trim() + .replace("\\r", "\r") + .replace("\\n", "\n"); } public CardStateView getCurrentState() { diff --git a/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java b/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java index dee21cd4354..29cba9ec67b 100644 --- a/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java +++ b/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java @@ -67,7 +67,7 @@ public class CostExileFromStack extends CostPart { final String desc = this.getTypeDescription() == null ? this.getType() : this.getTypeDescription(); sb.append(Cost.convertAmountTypeToWords(i, this.getAmount(), desc)); - sb.append("from stack"); + sb.append(" from stack"); return sb.toString(); } diff --git a/forge-gui-mobile/src/forge/screens/match/views/VStack.java b/forge-gui-mobile/src/forge/screens/match/views/VStack.java index 69d278e1710..6a88375b573 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VStack.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VStack.java @@ -252,7 +252,9 @@ public class VStack extends FDropDown { stackInstance = stackInstance0; CardView card = stackInstance.getSourceCard(); - text = stackInstance.getText(); + text = stackInstance.getText() + .replace("\\r", "\r") + .replace("\\n", "\n"); if (stackInstance.isOptionalTrigger() && stackInstance0.getActivatingPlayer().equals(MatchController.instance.getCurrentPlayer())) { text = "(OPTIONAL) " + text;