package joshie.progression.criteria.conditions;
import joshie.progression.Progression;
import joshie.progression.api.IPlayerTeam;
import joshie.progression.api.criteria.ProgressionRule;
import joshie.progression.api.special.ICustomDescription;
import net.minecraft.entity.player.EntityPlayer;
@ProgressionRule(name="ifHasXP", color=0xFF589653, icon="minecraft:experience_bottle")
public class ConditionXP extends ConditionBase implements ICustomDescription {
public boolean checkLevel;
public int amount = 1;
public boolean greaterThan = true;
public boolean isEqualTo = true;
public boolean lesserThan = false;
@Override
public String getDescription() {
String suffix = getProvider().isInverted() ? ".inverted" : "";
if (greaterThan && isEqualTo) return Progression.format(getProvider().getUnlocalisedName() + ".greater.equal" + suffix, amount);
else if (lesserThan && isEqualTo) return Progression.format(getProvider().getUnlocalisedName() + ".lesser.equal" + suffix, amount);
else if (greaterThan) return Progression.format(getProvider().getUnlocalisedName() + ".greater" + suffix, amount);
else if (lesserThan) return Progression.format(getProvider().getUnlocalisedName() + ".lesser" + suffix, amount);
else if (isEqualTo) return Progression.format(getProvider().getUnlocalisedName() + ".equal" + suffix, amount);
else return "INVALID SETUP";
}
@Override
public boolean isSatisfied(IPlayerTeam team) {
int counter = 0;
for (EntityPlayer player: team.getTeamEntities()) {
if (!team.isTrueTeam()) counter = 0; //Reset the counter
if (!checkLevel) counter += player.experienceTotal;
else counter += player.experienceLevel;
if (isValidValue(counter)) return true;
}
return false;
}
//Helper Methods
private boolean isValidValue(double total) {
if (greaterThan && total > amount) return true;
if (isEqualTo && total == amount) return true;
if (lesserThan && total < amount) return true;
//FALSE BABY!!!
return false;
}
}