From 16fa496c0445b91958dbf4dcf91c91ee0dab83cb Mon Sep 17 00:00:00 2001 From: etpalmer63 Date: Fri, 8 May 2020 11:22:17 -0700 Subject: [PATCH] changes to auto-text generation, unclean --- .../BeginningOfEndStepTriggeredAbility.java | 18 +++++++ .../BeginningOfUpkeepTriggeredAbility.java | 10 ++-- ...nOfNextEndStepDelayedTriggeredAbility.java | 8 +-- .../java/mage/abilities/effects/Effects.java | 49 ++++++++++++++++++- .../RevealCardsFromLibraryUntilEffect.java | 2 +- .../counter/DistributeCountersEffect.java | 8 +-- 6 files changed, 81 insertions(+), 14 deletions(-) diff --git a/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java index 3ece2bd954..7d5fadecda 100644 --- a/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java @@ -103,6 +103,9 @@ public class BeginningOfEndStepTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { StringBuilder sb = new StringBuilder(getEffects().getText(modes.getMode())); + + System.out.printf("Beg.OfEndStep getRule called:: ", sb); + if (this.optional) { if (sb.substring(0, 6).toLowerCase(Locale.ENGLISH).equals("target")) { sb.insert(0, "you may have "); @@ -114,6 +117,10 @@ public class BeginningOfEndStepTriggeredAbility extends TriggeredAbilityImpl { if (abilityWord != null) { abilityWordRule = "" + abilityWord.toString() + " &mdash "; } + + System.out.printf("Beg.OfEndStep getRule called:: ", sb); + + switch (targetController) { case YOU: return sb.insert(0, generateConditionString()).insert(0, abilityWordRule + "At the beginning of your end step, ").toString(); @@ -122,6 +129,8 @@ public class BeginningOfEndStepTriggeredAbility extends TriggeredAbilityImpl { case OPPONENT: return sb.insert(0, generateConditionString()).insert(0, abilityWordRule + "At the beginning of each opponent's end step, ").toString(); case ANY: + //System.out.print("Beg.EndStep - Final Out::"); + //m.System.out.println(sb.insert(0, generateConditionString()).insert(0, abilityWordRule + "At the beginning of each end step, ").toString()); return sb.insert(0, generateConditionString()).insert(0, abilityWordRule + "At the beginning of each end step, ").toString(); case EACH_PLAYER: return sb.insert(0, generateConditionString()).insert(0, abilityWordRule + "At the beginning of each player's end step, ").toString(); @@ -132,10 +141,19 @@ public class BeginningOfEndStepTriggeredAbility extends TriggeredAbilityImpl { } private String generateConditionString() { + System.out.println("GenCondString called"); if (interveningIfClauseCondition != null) { if (interveningIfClauseCondition.toString().startsWith("if")) { + //System.out.println("GenCondString called 2"); + //System.out.println(interveningIfClauseCondition.toString()); + + if (interveningIfClauseCondition.toString().endsWith(".")){ + return interveningIfClauseCondition.toString() + " "; + } + return interveningIfClauseCondition.toString() + ", "; } else { + //System.out.println("GenCondString called 3"); return "if {this} is " + interveningIfClauseCondition.toString() + ", "; } } diff --git a/Mage/src/main/java/mage/abilities/common/BeginningOfUpkeepTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BeginningOfUpkeepTriggeredAbility.java index 7969e308b5..d0c6cb7b39 100644 --- a/Mage/src/main/java/mage/abilities/common/BeginningOfUpkeepTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BeginningOfUpkeepTriggeredAbility.java @@ -133,15 +133,15 @@ public class BeginningOfUpkeepTriggeredAbility extends TriggeredAbilityImpl { sb.insert(0, "you may "); } } - return sb.insert(0, generateZoneString()).insert(0, "At the beginning of your upkeep, ").toString(); + return sb.insert(0, generateZoneString()).insert(0, "at the beginning of your upkeep, ").toString(); //removed captialization case OPPONENT: - return sb.insert(0, generateZoneString()).insert(0, "At the beginning of each opponent's upkeep, ").toString(); + return sb.insert(0, generateZoneString()).insert(0, "at the beginning of each opponent's upkeep, ").toString(); //removed captialization case ANY: - return sb.insert(0, generateZoneString()).insert(0, "At the beginning of each upkeep, ").toString(); + return sb.insert(0, generateZoneString()).insert(0, "at the beginning of each upkeep, ").toString(); //removed captialization case ACTIVE: - return sb.insert(0, generateZoneString()).insert(0, "At the beginning of each player's upkeep, ").toString(); + return sb.insert(0, generateZoneString()).insert(0, "at the beginning of each player's upkeep, ").toString(); //removed captialization case CONTROLLER_ATTACHED_TO: - return sb.insert(0, generateZoneString()).insert(0, "At the beginning of the upkeep of enchanted creature's controller, ").toString(); + return sb.insert(0, generateZoneString()).insert(0, "at the beginning of the upkeep of enchanted creature's controller, ").toString(); //removed captialization } return ""; } diff --git a/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfNextEndStepDelayedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfNextEndStepDelayedTriggeredAbility.java index 0fff4ee32a..2d6309f416 100644 --- a/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfNextEndStepDelayedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfNextEndStepDelayedTriggeredAbility.java @@ -90,16 +90,16 @@ public class AtTheBeginOfNextEndStepDelayedTriggeredAbility extends DelayedTrigg StringBuilder sb = new StringBuilder(); switch (targetController) { case YOU: - sb.append("At the beginning of your next end step, "); + sb.append("at the beginning of your next end step, "); //remove capitalization break; case OPPONENT: - sb.append("At the beginning of an opponent's next end step, "); + sb.append("at the beginning of an opponent's next end step, "); //remove capitalization break; case ANY: - sb.append("At the beginning of the next end step, "); + sb.append("at the beginning of the next end step, "); //remove capitalization break; case CONTROLLER_ATTACHED_TO: - sb.append("At the beginning of the next end step of enchanted creature's controller, "); + sb.append("at the beginning of the next end step of enchanted creature's controller, "); //remove capitalization break; } sb.append(getEffects().getText(modes.getMode())); diff --git a/Mage/src/main/java/mage/abilities/effects/Effects.java b/Mage/src/main/java/mage/abilities/effects/Effects.java index 38c798b30f..0f904ab4bb 100644 --- a/Mage/src/main/java/mage/abilities/effects/Effects.java +++ b/Mage/src/main/java/mage/abilities/effects/Effects.java @@ -37,6 +37,7 @@ public class Effects extends ArrayList { } public String getText(Mode mode) { + System.out.println(" -- getText method called -- "); StringBuilder sbText = new StringBuilder(); String lastRule = null; int effectNum = 0; @@ -44,6 +45,12 @@ public class Effects extends ArrayList { String endString = ""; String nextRule = effect.getText(mode); + System.out.printf("Effect Num: %d\n", effectNum); + System.out.print("nextRule from Effects - getText:: "); + System.out.println(nextRule); + System.out.print("lastRule from Effects - getText:: "); + System.out.println(lastRule); + // ignore empty rules if (nextRule == null || nextRule.isEmpty()) { continue; @@ -52,20 +59,37 @@ public class Effects extends ArrayList { // concat effects (default: each effect with a new sentence) String concatPrefix = effect.getConcatPrefix(); + System.out.print("concatPrefix:"); + System.out.println(concatPrefix); + if (effectNum > 1 && !concatPrefix.isEmpty() && !concatPrefix.equals(".")) { nextRule = concatPrefix + " " + nextRule; + System.out.println("Catch 1!!"); } if (nextRule != null) { if (nextRule.startsWith("and ") || nextRule.startsWith("with ") || nextRule.startsWith("then ")) { endString = " "; + System.out.println("Catch 2!!"); } else if (nextRule.startsWith(",") || nextRule.startsWith(" ")) { endString = ""; + System.out.println("Catch 3!!"); } else if (lastRule != null && lastRule.length() > 3) { - if (!lastRule.endsWith(".") && !lastRule.endsWith("
")) { + System.out.println("Catch 4!!"); + //check if lastRule already has appropriate punctuation, if so, add a space + if (lastRule.endsWith(".\"") || + lastRule.endsWith(".)") || + lastRule.endsWith(".)") || + lastRule.endsWith(".")){ + endString = " "; + System.out.println("Catch 9!!"); + // if lastRule does not have appropriate punctuation, add the default ". " + } else if (!lastRule.endsWith(".") && !lastRule.endsWith("
")) { endString = ". "; + System.out.println("Catch 5!!"); } if (nextRule.length() > 3) { + System.out.println("Catch 6!!"); nextRule = Character.toUpperCase(nextRule.charAt(0)) + nextRule.substring(1); } } @@ -73,18 +97,35 @@ public class Effects extends ArrayList { String currentRule = endString + nextRule; // fix dot in the combined effect like IfDoCost if (sbText.length() > 0 && currentRule.length() > 0) { + System.out.println("Catch 7!!"); boolean prevTextEndsWithDot = sbText.charAt(sbText.length() - 1) == '.'; boolean currentTextStartsWithDot = currentRule.startsWith(",") || currentRule.startsWith("."); if (prevTextEndsWithDot && currentTextStartsWithDot) { + System.out.println("Catch 8!!"); sbText.delete(sbText.length() - 1, sbText.length()); } + + /* + if (!prevTextEndsWithDot){ + System.out.println("Catch 10!!"); + currentRule = currentRule + "."; + } + */ } + + sbText.append(currentRule); } lastRule = nextRule; + + + + + } + //add punctuation to last line if (lastRule != null && lastRule.length() > 3 && !lastRule.endsWith(".") && !lastRule.endsWith("\"") @@ -94,7 +135,13 @@ public class Effects extends ArrayList { sbText.append('.'); } + + System.out.print("sbText from Effects - getText ::"); + System.out.println(sbText); + return sbText.toString(); + + } public boolean hasOutcome(Ability source, Outcome outcome) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/RevealCardsFromLibraryUntilEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RevealCardsFromLibraryUntilEffect.java index b719eaca60..aee850c3e9 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RevealCardsFromLibraryUntilEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RevealCardsFromLibraryUntilEffect.java @@ -135,7 +135,7 @@ public class RevealCardsFromLibraryUntilEffect extends OneShotEffect { sb.append("a random"); } - sb.append(" order."); + sb.append(" order"); //removed punctuation } break; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/DistributeCountersEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/DistributeCountersEffect.java index 39315588d4..e4e1edd426 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/DistributeCountersEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/DistributeCountersEffect.java @@ -76,10 +76,12 @@ public class DistributeCountersEffect extends OneShotEffect { } String name = counterType.getName(); - String text = "distribute " + CardUtil.numberToText(amount) + ' ' + name + " counters among " + targetDescription + '.'; + //String text = "distribute " + CardUtil.numberToText(amount) + ' ' + name + " counters among " + targetDescription + '.'; + //removed punctuation + String text = "distribute " + CardUtil.numberToText(amount) + ' ' + name + " counters among " + targetDescription; if (removeAtEndOfTurn) { text += " For each " + name + " counter you put on a creature this way, remove a " - + name + " counter from that creature at the beginning of the next cleanup step."; + + name + " counter from that creature at the beginning of the next cleanup step."; //should this period be removed? } return text; } @@ -94,7 +96,7 @@ class RemoveCountersAtEndOfTurn extends OneShotEffect { this.counterType = counterType; String name = counterType.getName(); staticText = "For each " + name + " counter you put on a creature this way, remove a " - + name + " counter from that creature at the beginning of the next cleanup step."; + + name + " counter from that creature at the beginning of the next cleanup step."; //should this period be removed? } public RemoveCountersAtEndOfTurn(final RemoveCountersAtEndOfTurn effect) {