1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.magicproject.stack;
20
21 import net.sf.magicproject.clickable.ability.Ability;
22 import net.sf.magicproject.clickable.targetable.card.AbstractCard;
23 import net.sf.magicproject.clickable.targetable.card.MCard;
24 import net.sf.magicproject.event.context.ContextEventListener;
25
26 /***
27 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
28 * @since 0.90
29 */
30 public interface StackContext {
31
32 /***
33 * Return the target option of the current spell. this target option is owned
34 * by the current spell. May be reseted, changed by the spell itself.
35 *
36 * @return the targeted list of this context.
37 */
38 TargetedList getTargetedList();
39
40 /***
41 * Return the current context. Null if current ability is not a triggered one.
42 *
43 * @return the current context. Null if current ability is not a triggered
44 * one.
45 */
46 ContextEventListener getAbilityContext();
47
48 /***
49 * Return the action manager of this context.
50 *
51 * @return the action manager of this context.
52 */
53 ActionManager getActionManager();
54
55 /***
56 * Return the card source of the current capcity/spell in the stack
57 *
58 * @return the card source of the current capcity/spell in the stack
59 */
60 MCard getSourceCard();
61
62 /***
63 * Return the ability causing the abortion of this ability.
64 *
65 * @return the ability causing the abortion of this ability.
66 */
67 Ability getAbortingAbility();
68
69 /***
70 * Remove the specified card from the stack. If it's a spell, it goes to the
71 * abortion place, otherwise it would be simply removed. After calling this
72 * method, caller should call the normal 'resolveStack' method.
73 *
74 * @param card
75 * the card to make abort.
76 * @param source
77 * the ability source.
78 */
79 void abortion(AbstractCard card, Ability source);
80 }