1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.magicproject.action.handler;
20
21 import net.sf.magicproject.action.context.ActionContextWrapper;
22 import net.sf.magicproject.clickable.ability.Ability;
23 import net.sf.magicproject.event.context.ContextEventListener;
24
25 /***
26 * An init action is an action played during the initialization phase of an
27 * ability, and also replayed during the replay phase.
28 *
29 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
30 * @since 0.90
31 */
32 public interface InitAction extends Replayable {
33
34 /***
35 * No generated event. Let the active player playing this action.<br>
36 * Generally, this method is used to initialize the context of this action
37 * such as required mana, or fixing some values.<br>
38 * Be aware this method can be called several times if there it is in a loop
39 * (hop usage), so manage this case to prevent a reset of context each time
40 * this method is called during the initialization phase.
41 *
42 * @param actionContext
43 * the context containing data saved by this action during the
44 * 'choose" proceess.
45 * @param ability
46 * is the ability owning this test. The card component of this
47 * ability should correspond to the card owning this test too.
48 * @param context
49 * is the context attached to this action.
50 * @return true if the stack can be resolved just after this call.
51 */
52 boolean init(ActionContextWrapper actionContext,
53 ContextEventListener context, Ability ability);
54
55 /***
56 * Generate event associated to this action. One or several events are
57 * generated and may be collected by event listeners. Then play this action.<br>
58 * In this method, you should use the context you have stored in the
59 * initialization phase with the init method.<br>
60 * This method is only called once, so all stuffs (action and event) must be
61 * done in one shot.
62 *
63 * @param actionContext
64 * the context containing data saved by this action during the
65 * 'choose" proceess.
66 * @param ability
67 * is the ability owning this test. The card component of this
68 * ability should correspond to the card owning this test too.
69 * @param context
70 * is the context attached to this action.
71 * @return true if the stack can be resolved just after this call.
72 */
73 boolean replay(ActionContextWrapper actionContext,
74 ContextEventListener context, Ability ability);
75 }