73 lines
1.9 KiB
Java
73 lines
1.9 KiB
Java
package magic.model;
|
|
|
|
public abstract class MagicObjectImpl implements MagicObject {
|
|
@Override
|
|
public boolean isFriend(final MagicObject other) {
|
|
return getController() == other.getController();
|
|
}
|
|
|
|
@Override
|
|
public boolean isEnemy(final MagicObject other) {
|
|
return getOpponent() == other.getController();
|
|
}
|
|
|
|
@Override
|
|
public MagicPlayer getOpponent() {
|
|
return getController().getOpponent();
|
|
}
|
|
|
|
@Override
|
|
public boolean isCreaturePermanent() {
|
|
return isPermanent() && hasType(MagicType.Creature);
|
|
}
|
|
|
|
@Override
|
|
public boolean isPlaneswalkerPermanent() {
|
|
return isPermanent() && hasType(MagicType.Planeswalker);
|
|
}
|
|
|
|
@Override
|
|
public boolean isInstantOrSorcerySpell() {
|
|
return isSpell(MagicType.Instant) || isSpell(MagicType.Sorcery);
|
|
}
|
|
|
|
@Override
|
|
public boolean isSpell(MagicType type) {
|
|
return isSpell() && hasType(type);
|
|
}
|
|
|
|
@Override
|
|
public boolean isSpell(MagicSubType subType) {
|
|
return isSpell() && hasSubType(subType);
|
|
}
|
|
|
|
@Override
|
|
public boolean isToken() {
|
|
return isPermanent() && ((MagicPermanent)this).isToken();
|
|
}
|
|
|
|
@Override
|
|
public boolean hasCounters(final MagicCounterType counterType) {
|
|
return getCounters(counterType) > 0;
|
|
}
|
|
|
|
@Override
|
|
public boolean shareColor(final MagicObject other) {
|
|
return (getColorFlags() & other.getColorFlags()) != 0;
|
|
}
|
|
|
|
public static long getStateId(final Object obj) {
|
|
if (obj == null) {
|
|
return -1L;
|
|
} else if (obj instanceof MagicPlayer) {
|
|
return ((MagicPlayer)obj).getId();
|
|
} else if (obj instanceof MagicObject) {
|
|
return ((MagicObject)obj).getStateId();
|
|
} else if (obj instanceof MagicMappable) {
|
|
return ((MagicMappable)obj).getId();
|
|
} else {
|
|
return obj.hashCode();
|
|
}
|
|
}
|
|
}
|