1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.magicproject.test;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23
24 import net.sf.magicproject.clickable.ability.Ability;
25 import net.sf.magicproject.clickable.targetable.card.MCard;
26
27 /***
28 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
29 * @since 0.90
30 */
31 public class HasPropertyIntersectionColor extends HasPropertyIntersection {
32
33 /***
34 * Create an instance of HasPropertyIntersectionColor by reading a file.
35 * Offset's file must pointing on the first byte of this test <br>
36 * <ul>
37 * Structure of InputStream : Data[size]
38 * <li>property to test [Expression]</li>
39 * </ul>
40 *
41 * @param inputFile
42 * is the file containing this event
43 * @throws IOException
44 * if error occurred during the reading process from the specified
45 * input stream
46 */
47 HasPropertyIntersectionColor(InputStream inputFile) throws IOException {
48 super(inputFile);
49 }
50
51 /***
52 * @param ability
53 * is the ability owning this test. The card component of this
54 * ability should correspond to the card owning this test too.
55 * @param tested
56 * the tested card
57 * @return true if the specified card matches with the test to do
58 */
59 @Override
60 protected boolean testCard(Ability ability, MCard tested) {
61 final MCard other = on.getCard(ability, tested);
62 final int propertyMask = this.propertyMask.getValue(ability, tested, null);
63 for (int property : onMask.getCard(ability, tested).getProperties()) {
64 if ((property & propertyMask) != 0
65 && other.hasIdColor(1 << ((property & ~propertyMask) - 1))) {
66
67 return true;
68 }
69 }
70 return false;
71 }
72
73 }