1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.magicproject.modifier;
20
21 import net.sf.magicproject.clickable.ability.Ability;
22 import net.sf.magicproject.clickable.targetable.card.MCard;
23 import net.sf.magicproject.test.Test;
24
25 /***
26 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
27 * @since 0.85
28 */
29 public interface ObjectModifierModel extends Cloneable {
30
31 /***
32 * Create modifier(s) on the specified target.
33 *
34 * @param ability
35 * is the ability owning causin the creation of this modifier. The
36 * card component of this ability should correspond to the card
37 * owning this test too.
38 * @param target
39 * is the card this new modifier would be attached to.
40 */
41 void addModifierFromModel(Ability ability, MCard target);
42
43 /***
44 * Creates and returns a copy of this object. The precise meaning of "copy"
45 * may depend on the class of the object.
46 *
47 * @return a clone of this instance.
48 * @see java.lang.Cloneable
49 */
50 Object clone();
51
52 /***
53 * Remove one instance of this object from the given card.
54 *
55 * @param fromCard
56 * @param objectTest
57 * The test applied on specific modifier to be removed.
58 */
59 void removeObject(MCard fromCard, Test objectTest);
60
61 /***
62 * Return the object name
63 *
64 * @return the object name
65 */
66 String getObjectName();
67
68 /***
69 * Return occurences number of the given object with the given name.
70 *
71 * @param card
72 * the card on which objects will be counted.
73 * @param objectTest
74 * The test applied on specific modifier to be removed.
75 * @return occurences number of this object attached to the given card.
76 */
77 int getNbObject(MCard card, Test objectTest);
78
79 }