magarena/src/magic/model/MagicObjectImpl.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();
}
}
}