Better prompt messages for confirming optional triggers

This commit is contained in:
pfps
2017-01-20 20:19:31 +00:00
parent cc9e2caf2d
commit ab867a40ee
6 changed files with 28 additions and 14 deletions

View File

@@ -19,6 +19,8 @@ package forge.match.input;
import forge.game.card.Card;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.Trigger;
import forge.game.trigger.WrappedAbility;
import forge.model.FModel;
import forge.player.PlayerControllerHuman;
import forge.properties.ForgePreferences;
@@ -63,14 +65,21 @@ public class InputConfirm extends InputSyncronizedBase {
@Override
protected final void showMessage() {
getController().getGui().updateButtons(getOwner(), yesButtonText, noButtonText, true, true, defaultYes);
if ( FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DETAILED_SPELLDESC_IN_PROMPT) &&
(sa!=null) ) {
showMessage(sa.getStackDescription() + "\n" + message, sa.getView());
} else {
showMessage(message, (sa!=null)?sa.getView():null);
}
}
if ( FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DETAILED_SPELLDESC_IN_PROMPT) &&
(sa!=null) ) {
System.out.println("Triggera " + sa.isTrigger() + sa.isWrapper() + sa.getHostCard() + " :: " + sa.toString());
System.out.println("Triggerb " + sa + " :: " + sa.getStackDescription());
final StringBuilder sb = new StringBuilder();
sb.append(sa.getStackDescription()).append("\n").append(message);
showMessage(sb.toString(), sa.getView());
} else {
showMessage(message, (sa!=null)?sa.getView():null);
}
}
/** {@inheritDoc} */
@Override
protected final void onOk() {

View File

@@ -503,7 +503,9 @@ public class PlayerControllerHuman
}
@Override
public boolean confirmTrigger(final SpellAbility sa, final Trigger regtrig, final Map<String, String> triggerParams, final boolean isMandatory) {
public boolean confirmTrigger(final WrappedAbility wrapper, final Map<String, String> triggerParams, final boolean isMandatory) {
final SpellAbility sa = wrapper.getWrappedAbility();
final Trigger regtrig = wrapper.getTrigger();
if (getGui().shouldAlwaysAcceptTrigger(regtrig.getId())) {
return true;
}
@@ -518,7 +520,8 @@ public class PlayerControllerHuman
final StringBuilder buildQuestion = new StringBuilder("<b>Use triggered ability of ");
buildQuestion.append(regtrig.getHostCard().toString()).append("?</b>");
if (!FModel.getPreferences().getPrefBoolean(FPref.UI_COMPACT_PROMPT)) {
if (!FModel.getPreferences().getPrefBoolean(FPref.UI_COMPACT_PROMPT) &&
!FModel.getPreferences().getPrefBoolean(FPref.UI_DETAILED_SPELLDESC_IN_PROMPT) ) {
//append trigger description unless prompt is compact
buildQuestion.append("\n(");
buildQuestion.append(triggerParams.get("TriggerDescription").replace("CARDNAME", regtrig.getHostCard().getName()));
@@ -537,7 +540,7 @@ public class PlayerControllerHuman
}
// pfps: trigger is on stack so do we really need to put it in the prompt area?
final InputConfirm inp = new InputConfirm(this, buildQuestion.toString(),sa);
final InputConfirm inp = new InputConfirm(this, buildQuestion.toString(), wrapper);
inp.showAndWait();
return inp.getResult();
}