package openblocks.api;
public class FlimFlamDescriptionSimple implements IFlimFlamDescription {
private boolean isSilent;
private boolean isSafe;
private final String name;
private final int cost;
private final int weight;
private int lowerLuck;
private int upperLuck;
private final IFlimFlamAction effect;
public FlimFlamDescriptionSimple(String name, int cost, int weight, IFlimFlamAction effect) {
this.name = name;
this.cost = cost;
this.weight = weight;
this.effect = effect;
if (cost < 0) setRange(Integer.MIN_VALUE, cost);
else setRange(cost, Integer.MAX_VALUE);
}
public FlimFlamDescriptionSimple markSafe() {
isSafe = true;
return this;
}
public FlimFlamDescriptionSimple markSilent() {
isSilent = true;
return this;
}
public FlimFlamDescriptionSimple setRange(int a, int b) {
if (a < b) {
lowerLuck = a;
upperLuck = b;
} else {
lowerLuck = b;
upperLuck = a;
}
return this;
}
@Override
public String name() {
return name;
}
@Override
public int weight() {
return weight;
}
@Override
public int cost() {
return cost;
}
@Override
public boolean isSafe() {
return isSafe;
}
@Override
public boolean isSilent() {
return isSilent;
}
@Override
public IFlimFlamAction action() {
return effect;
}
@Override
public boolean canApply(int luck) {
return lowerLuck <= luck && luck <= upperLuck;
}
}