magarena/src/magic/model/MagicDamage.java

135 lines
3.0 KiB
Java

package magic.model;
import magic.model.target.MagicTarget;
public class MagicDamage {
public static final boolean Combat = true;
public static final boolean Any = false;
private final MagicSource source;
private MagicTarget target;
private int amount;
private int dealtAmount;
private final boolean combat;
private boolean unpreventable;
private boolean noRegeneration;
private MagicDamage(final MagicSource source,final MagicTarget target,final int amount,final boolean combat) {
this.source=source;
this.target=target;
this.amount=amount;
this.combat=combat;
}
public MagicDamage(final MagicSource source,final MagicTarget target,final int amount) {
this(source, target, amount, false);
}
public static final MagicDamage Combat(final MagicSource source,final MagicTarget target,final int amount) {
return new MagicDamage(source, target, amount, true);
}
public MagicSource getSource() {
return source;
}
public boolean isSource(final MagicSource other) {
return source == other;
}
public boolean isSourcePermanent() {
return source.isPermanent();
}
public void setTarget(final MagicTarget target) {
this.target=target;
}
public MagicTarget getTarget() {
return target;
}
public boolean isTarget(final MagicTarget other) {
return target == other;
}
public boolean isTargetPlayer() {
return target.isPlayer();
}
public boolean isTargetCreature() {
return target.isCreaturePermanent();
}
public MagicPlayer getTargetPlayer() {
return (MagicPlayer)target;
}
public MagicPermanent getTargetPermanent() {
return (MagicPermanent)target;
}
public MagicPermanent getSourcePermanent() {
return (MagicPermanent)source;
}
public void setAmount(final int amt) {
amount = amt;
}
public int replace() {
final int oldAmount = amount;
amount = 0;
return oldAmount;
}
public int prevent() {
return prevent(amount);
}
public int prevent(final int amt) {
final int oldAmount = amount;
if (!unpreventable) {
amount -= amt;
}
return oldAmount - amount;
}
public int getAmount() {
return amount;
}
public void setDealtAmount(final int dealtAmount) {
this.dealtAmount=dealtAmount;
}
public int getDealtAmount() {
return dealtAmount;
}
public boolean isCombat() {
return combat;
}
public void setUnpreventable() {
unpreventable=true;
}
public boolean isPreventable() {
return !unpreventable;
}
public boolean isUnpreventable() {
return unpreventable;
}
public void setNoRegeneration() {
noRegeneration=true;
}
public boolean hasNoRegeneration() {
return noRegeneration;
}
}