mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Better prompt messages for confirming optional triggers
This commit is contained in:
@@ -178,7 +178,9 @@ public class PlayerControllerAi extends PlayerController {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean confirmTrigger(SpellAbility sa, Trigger regtrig, Map<String, String> triggerParams, boolean isMandatory) {
|
||||
public boolean confirmTrigger(WrappedAbility wrapper, Map<String, String> triggerParams, boolean isMandatory) {
|
||||
final SpellAbility sa = wrapper.getWrappedAbility();
|
||||
final Trigger regtrig = wrapper.getTrigger();
|
||||
if (sa.getHostCard().getName().equals("Deathmist Raptor")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ public abstract class PlayerController {
|
||||
public abstract boolean confirmAction(SpellAbility sa, PlayerActionConfirmMode mode, String message);
|
||||
public abstract boolean confirmBidAction(SpellAbility sa, PlayerActionConfirmMode bidlife, String string, int bid, Player winner);
|
||||
public abstract boolean confirmStaticApplication(Card hostCard, GameEntity affected, String logic, String message);
|
||||
public abstract boolean confirmTrigger(SpellAbility sa, Trigger regtrig, Map<String, String> triggerParams, boolean isMandatory);
|
||||
public abstract boolean confirmTrigger(WrappedAbility sa, Map<String, String> triggerParams, boolean isMandatory);
|
||||
public abstract Player chooseStartingPlayer(boolean isFirstGame);
|
||||
|
||||
public abstract CardCollection orderBlockers(Card attacker, CardCollection blockers);
|
||||
|
||||
@@ -440,7 +440,7 @@ public class WrappedAbility extends Ability {
|
||||
|
||||
TriggerHandler th = game.getTriggerHandler();
|
||||
|
||||
if (decider != null && !decider.getController().confirmTrigger(sa, regtrig, triggerParams, this.isMandatory())) {
|
||||
if (decider != null && !decider.getController().confirmTrigger(this, triggerParams, this.isMandatory())) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@ public class PlayerControllerForTests extends PlayerController {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean confirmTrigger(SpellAbility sa, Trigger regtrig, Map<String, String> triggerParams, boolean isMandatory) {
|
||||
public boolean confirmTrigger(WrappedAbility wrapper, Map<String, String> triggerParams, boolean isMandatory) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -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,9 +65,16 @@ 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());
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user