changes to auto-text generation, unclean

This commit is contained in:
etpalmer63 2020-05-08 11:22:17 -07:00
parent efcbdf968b
commit 16fa496c04
6 changed files with 81 additions and 14 deletions

View file

@ -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 = "<i>" + abilityWord.toString() + "</i> &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() + ", ";
}
}

View file

@ -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 "";
}

View file

@ -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()));

View file

@ -37,6 +37,7 @@ public class Effects extends ArrayList<Effect> {
}
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<Effect> {
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<Effect> {
// 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("<br>")) {
System.out.println("Catch 4!!");
//check if lastRule already has appropriate punctuation, if so, add a space
if (lastRule.endsWith(".\"") ||
lastRule.endsWith(".)") ||
lastRule.endsWith(".)</i>") ||
lastRule.endsWith(".")){
endString = " ";
System.out.println("Catch 9!!");
// if lastRule does not have appropriate punctuation, add the default ". "
} else if (!lastRule.endsWith(".") && !lastRule.endsWith("<br>")) {
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<Effect> {
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<Effect> {
sbText.append('.');
}
System.out.print("sbText from Effects - getText ::");
System.out.println(sbText);
return sbText.toString();
}
public boolean hasOutcome(Ability source, Outcome outcome) {

View file

@ -135,7 +135,7 @@ public class RevealCardsFromLibraryUntilEffect extends OneShotEffect {
sb.append("a random");
}
sb.append(" order.");
sb.append(" order"); //removed punctuation
}
break;
}

View file

@ -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) {