package magic.model.trigger;
import magic.model.MagicCopyMap;
import magic.model.MagicPermanent;
public class MagicPermanentTrigger implements Comparable<MagicPermanentTrigger> {
private final long id;
private final MagicPermanent permanent;
private final MagicTrigger<?> trigger;
public MagicPermanentTrigger(final long aId,final MagicPermanent aPermanent,final MagicTrigger<?> aTrigger) {
id = aId;
permanent = aPermanent;
trigger = aTrigger;
}
public MagicPermanentTrigger(final MagicCopyMap copyMap,final MagicPermanentTrigger source) {
this(source.id, copyMap.copy(source.permanent), source.trigger);
}
public long getId() {
return id;
}
public MagicPermanent getPermanent() {
return permanent;
}
public MagicTrigger<?> getTrigger() {
return trigger;
}
@Override
public int compareTo(final MagicPermanentTrigger permanentTrigger) {
//sort by priority, break ties by id
final int priorityDiff = trigger.getPriority() - permanentTrigger.trigger.getPriority();
return (priorityDiff != 0) ?
priorityDiff :
Long.signum(id-permanentTrigger.id);
}
}