package joshie.progression.plugins.enchiridion.actions; import joshie.enchiridion.api.book.IButtonAction; import joshie.progression.api.criteria.ICriteria; import joshie.progression.api.criteria.IRewardProvider; import joshie.progression.api.criteria.ITriggerProvider; import joshie.progression.player.PlayerTracker; import static joshie.progression.gui.core.GuiList.REWARDS; public class ActionClaimCriteria extends AbstractActionCriteria implements IButtonAction { public ActionClaimCriteria() { super(null, "criteria.claim"); } public ActionClaimCriteria(ICriteria criteria) { super(criteria, "criteria.claim"); } @Override public IButtonAction copy() { return copyAbstract(new ActionClaimCriteria()); } @Override public IButtonAction create() { return new ActionClaimCriteria(); } @Override public boolean isVisible() { ICriteria criteria = getCriteria(); if (criteria == null || criteria.getRewards().size() == 0) return true; for (ITriggerProvider trigger: criteria.getTriggers()) { if (!trigger.getProvided().isCompleted()) return false; } if (!criteria.canRepeatInfinite() && PlayerTracker.getClientPlayer().getMappings().getCriteriaCount(criteria) >= criteria.getRepeatAmount()) return false; if (criteria.givesAllRewards()) return true; return REWARDS.select(criteria.getRewards().get(0), true); } @Override public boolean performAction() { ICriteria criteria = getCriteria(); if (criteria.givesAllRewards()) { for (IRewardProvider provider: criteria.getRewards()) { if (provider.mustClaim() && !REWARDS.getSelected().contains(provider)) REWARDS.select(provider); } } REWARDS.sendToServer(); return true; } }