mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Triggers - always ask or accept: moved to base PlayerController class, VStack allows to choose only for controlled triggers
This commit is contained in:
@@ -24,7 +24,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.Card;
|
||||
import forge.CardLists;
|
||||
import forge.card.ability.AbilityFactory;
|
||||
import forge.card.ability.AbilityUtils;
|
||||
import forge.card.ability.ApiType;
|
||||
@@ -71,7 +70,6 @@ public class TriggerHandler {
|
||||
c.getTriggers().get(i).setTemporarilySuppressed(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final void registerDelayedTrigger(final Trigger trig) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package forge.game.player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -45,12 +47,6 @@ public abstract class PlayerController {
|
||||
public abstract Input getCleanupInput();
|
||||
public final Input getAutoPassPriorityInput() { return autoPassPriorityInput; }
|
||||
|
||||
public abstract boolean shouldAlwaysAcceptTrigger(Integer trigger);
|
||||
public abstract boolean shouldAlwaysDeclineTrigger(Integer trigger);
|
||||
public abstract void setShouldAlwaysAcceptTrigger(Integer trigger);
|
||||
public abstract void setShouldAlwaysDeclineTrigger(Integer trigger);
|
||||
public abstract void setShouldAlwaysAskTrigger(Integer trigger);
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param cleanup
|
||||
@@ -62,16 +58,27 @@ public abstract class PlayerController {
|
||||
autoPassUntil = null;
|
||||
}
|
||||
|
||||
|
||||
public boolean mayAutoPass(PhaseType phase) {
|
||||
return phase.isBefore(autoPassUntil);
|
||||
}
|
||||
|
||||
|
||||
public boolean isUiSetToSkipPhase(final Player turn, final PhaseType phase) {
|
||||
return false; // human has it's overload
|
||||
}
|
||||
|
||||
// Triggers preliminary choice: ask, decline or play
|
||||
private Map<Integer, Boolean> triggersAlwaysAccept = new HashMap<Integer, Boolean>();
|
||||
|
||||
public final boolean shouldAlwaysAcceptTrigger(Integer trigger) { return Boolean.TRUE.equals(triggersAlwaysAccept.get(trigger)); }
|
||||
public final boolean shouldAlwaysDeclineTrigger(Integer trigger) { return Boolean.FALSE.equals(triggersAlwaysAccept.get(trigger)); }
|
||||
|
||||
public final void setShouldAlwaysAcceptTrigger(Integer trigger) { triggersAlwaysAccept.put(trigger, true); }
|
||||
public final void setShouldAlwaysDeclineTrigger(Integer trigger) { triggersAlwaysAccept.put(trigger, false); }
|
||||
public final void setShouldAlwaysAskTrigger(Integer trigger) { triggersAlwaysAccept.remove(trigger); }
|
||||
|
||||
// End of Triggers preliminary choice
|
||||
|
||||
|
||||
/**
|
||||
* Uses GUI to learn which spell the player (human in our case) would like to play
|
||||
*/
|
||||
|
||||
@@ -255,43 +255,6 @@ public class PlayerControllerAi extends PlayerController {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#shouldAlwaysAcceptTrigger(java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public boolean shouldAlwaysAcceptTrigger(Integer trigger) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#shouldAlwaysDeclineTrigger(java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public boolean shouldAlwaysDeclineTrigger(Integer trigger) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#setShouldAlwaysAcceptTrigger(java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public void setShouldAlwaysAcceptTrigger(Integer trigger) {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#setShouldAlwaysDeclineTrigger(java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public void setShouldAlwaysDeclineTrigger(Integer trigger) {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#setShouldAlwaysAskTrigger(java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public void setShouldAlwaysAskTrigger(Integer trigger) {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#chooseCardsToDiscardUnlessType(int, java.util.List, java.lang.String, forge.card.spellability.SpellAbility)
|
||||
*/
|
||||
|
||||
@@ -412,54 +412,6 @@ public class PlayerControllerHuman extends PlayerController {
|
||||
return oldTarget;
|
||||
}
|
||||
}
|
||||
|
||||
private List<Integer> triggersAlwaysAccept = new ArrayList<Integer>();
|
||||
private List<Integer> triggersAlwaysDecline = new ArrayList<Integer>();
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#shouldAlwaysAcceptTrigger(int)
|
||||
*/
|
||||
@Override
|
||||
public boolean shouldAlwaysAcceptTrigger(Integer trigger) {
|
||||
return triggersAlwaysAccept.contains(trigger);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#shouldAlwaysDeclineTrigger(int)
|
||||
*/
|
||||
@Override
|
||||
public boolean shouldAlwaysDeclineTrigger(Integer trigger) {
|
||||
return triggersAlwaysDecline.contains(trigger);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#setShouldAlwaysAcceptTrigger(int)
|
||||
*/
|
||||
@Override
|
||||
public void setShouldAlwaysAcceptTrigger(Integer trigger) {
|
||||
if(!triggersAlwaysAccept.contains(trigger))
|
||||
triggersAlwaysAccept.add(trigger);
|
||||
triggersAlwaysDecline.remove((Object)trigger);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#setShouldAlwaysDeclineTrigger(int)
|
||||
*/
|
||||
@Override
|
||||
public void setShouldAlwaysDeclineTrigger(Integer trigger) {
|
||||
if(!triggersAlwaysDecline.contains(trigger))
|
||||
triggersAlwaysDecline.add(trigger);
|
||||
triggersAlwaysAccept.remove((Object)trigger);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#setShouldAlwaysAskTrigger(java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public void setShouldAlwaysAskTrigger(Integer trigger) {
|
||||
triggersAlwaysAccept.remove((Object)trigger);
|
||||
triggersAlwaysDecline.remove((Object)trigger);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.player.PlayerController#chooseCardsToDiscardUnlessType(int, java.lang.String, forge.card.spellability.SpellAbility)
|
||||
|
||||
@@ -33,6 +33,7 @@ import javax.swing.border.EmptyBorder;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.CardUtil;
|
||||
import forge.Singletons;
|
||||
import forge.card.spellability.SpellAbilityStackInstance;
|
||||
import forge.control.FControl;
|
||||
import forge.game.player.Player;
|
||||
@@ -118,7 +119,7 @@ public enum VStack implements IVDoc<CStack> {
|
||||
/**
|
||||
* @param stack
|
||||
* @param viewer */
|
||||
public void updateStack(final MagicStack stack, Player viewer) {
|
||||
public void updateStack(final MagicStack stack, final Player viewer) {
|
||||
// No need to update this unless it's showing
|
||||
if (!parentCell.getSelected().equals(this)) { return; }
|
||||
|
||||
@@ -133,7 +134,7 @@ public enum VStack implements IVDoc<CStack> {
|
||||
|
||||
final Border border = new EmptyBorder(5, 5, 5, 5);
|
||||
Color[] scheme;
|
||||
|
||||
|
||||
stackTARs.clear();
|
||||
boolean isFirst = true;
|
||||
for (final SpellAbilityStackInstance spell : stack) {
|
||||
@@ -171,13 +172,13 @@ public enum VStack implements IVDoc<CStack> {
|
||||
}
|
||||
});
|
||||
|
||||
if(spell.getSpellAbility().isOptionalTrigger()) {
|
||||
if(spell.getSpellAbility().isOptionalTrigger() && spell.getSpellAbility().getActivatingPlayer() == viewer) {
|
||||
tar.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e){
|
||||
if (e.getButton() == MouseEvent.BUTTON3)
|
||||
{
|
||||
otMenu.setStackInstance(spell);
|
||||
otMenu.setStackInstance(spell, viewer);
|
||||
otMenu.show(e.getComponent(), e.getX(), e.getY());
|
||||
}
|
||||
}
|
||||
@@ -272,10 +273,9 @@ public enum VStack implements IVDoc<CStack> {
|
||||
add(jmiAsk);
|
||||
}
|
||||
|
||||
public void setStackInstance(final SpellAbilityStackInstance SI)
|
||||
public void setStackInstance(final SpellAbilityStackInstance SI, Player viewer)
|
||||
{
|
||||
if(localPlayer == null)
|
||||
localPlayer = FControl.SINGLETON_INSTANCE.getPlayer().getController();
|
||||
localPlayer = viewer.getController();
|
||||
|
||||
triggerID = SI.getSpellAbility().getSourceTrigger();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user