1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.firemox.modifier;
20
21 import java.awt.Graphics;
22 import java.awt.Image;
23
24 import net.sf.firemox.clickable.ability.Ability;
25 import net.sf.firemox.clickable.target.card.CardFactory;
26 import net.sf.firemox.modifier.model.ObjectFactory;
27 import net.sf.firemox.operation.Operation;
28 import net.sf.firemox.stack.StackManager;
29 import net.sf.firemox.test.Test;
30
31 /***
32 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
33 * @since 0.86
34 */
35 public class ObjectAbilityModifier extends AbilityModifier {
36
37 /***
38 * Creates a new instance of ObjectColorModifier <br>
39 *
40 * @param context
41 * the modifier context.
42 * @param abilitiesToAdd
43 * the abilities to add/remove/...
44 * @param op
45 * the operation applied to previous value with the value of this
46 * modifier.
47 * @param main
48 * is this object modifier is the main modifier ?.
49 */
50 public ObjectAbilityModifier(ModifierContext context, Operation op,
51 Ability[] abilitiesToAdd, boolean main) {
52 super(context, op, abilitiesToAdd);
53 objectPicture = ObjectFactory.getObjectPicture(name);
54 this.main = main;
55 }
56
57 @Override
58 public Modifier removeObject(String objectName, Test objectTest) {
59 if (name.equals(objectName) && objectTest.test(ability, to)) {
60 StackManager.postRefreshAbilities(to);
61 return next;
62 }
63 return super.removeObject(objectName, objectTest);
64 }
65
66 @Override
67 public int paintObject(Graphics g, int startX, int startY) {
68 if (main) {
69 if (startX + 13 > CardFactory.cardWidth) {
70 return paintObject(g, 3, startY - 16);
71 }
72 g.drawImage(objectPicture, startX, startY, 13, 15, null);
73 return super.paintObject(g, startX + 3, startY);
74 }
75 return super.paintObject(g, startX, startY);
76 }
77
78 @Override
79 public int getNbObjects(String objectName, Test objectTest) {
80 if (main && objectName.equals(name) && objectTest.test(ability, to)) {
81 if (next == null) {
82 return 1;
83 }
84 return 1 + next.getNbObjects(objectName, objectTest);
85 }
86 return super.getNbObjects(objectName, objectTest);
87 }
88
89 /***
90 * Picture representing this object
91 */
92 private Image objectPicture;
93
94 /***
95 * is this object modifier is the main modifier
96 */
97 private boolean main;
98 }