1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.magicproject.action;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23
24 import net.sf.magicproject.action.handler.StandardAction;
25 import net.sf.magicproject.clickable.ability.Ability;
26 import net.sf.magicproject.clickable.targetable.card.MCard;
27 import net.sf.magicproject.event.context.ContextEventListener;
28 import net.sf.magicproject.expression.Expression;
29 import net.sf.magicproject.expression.ExpressionFactory;
30 import net.sf.magicproject.stack.StackManager;
31
32 /***
33 * Change the card id of the targeted card.
34 *
35 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
36 * @since 0.7
37 */
38 class SetIdCard extends UserAction implements StandardAction {
39
40 /***
41 * Create an instance of Tap by reading a file Offset's file must pointing on
42 * the first byte of this action. <br>
43 * <ul>
44 * Structure of InputStream : Data[size]
45 * <li>idCard [Expression]</li>
46 * </ul>
47 *
48 * @param inputFile
49 * file containing this action
50 * @throws IOException
51 * if error occurred during the reading process from the specified
52 * input stream
53 */
54 SetIdCard(InputStream inputFile) throws IOException {
55 super(inputFile);
56 idCard = ExpressionFactory.readNextExpression(inputFile);
57 }
58
59 @Override
60 public final Actiontype getIdAction() {
61 return Actiontype.SET_ID_CARD;
62 }
63
64 public boolean play(ContextEventListener context, Ability ability) {
65 for (int i = StackManager.getInstance().getTargetedList().size(); i-- > 0;) {
66 MCard card = (MCard) StackManager.getInstance().getTargetedList().get(i);
67 card.cachedIdCard = idCard.getValue(ability, null, context);
68 }
69 return true;
70 }
71
72 @Override
73 public String toString(Ability ability) {
74 return "set card identifiant";
75 }
76
77 /***
78 * Indicates the new idCard to be set to the current target list
79 */
80 private Expression idCard;
81
82 }