package joshie.progression.gui.editors; import joshie.progression.Progression; import joshie.progression.api.criteria.IConditionProvider; import joshie.progression.api.criteria.ITriggerProvider; import joshie.progression.gui.editors.insert.FeatureNew; import java.util.List; import static joshie.progression.api.special.DisplayMode.DISPLAY; import static joshie.progression.api.special.DisplayMode.EDIT; import static joshie.progression.gui.core.GuiList.*; public class FeatureTrigger extends FeatureDrawable<ITriggerProvider> { public FeatureTrigger() { super("trigger", 45, NEW_TRIGGER, THEME.triggerGradient1, THEME.triggerGradient2, THEME.triggerFontColor, THEME.triggerBoxGradient2); } @Override public boolean isReady() { return CRITERIA_EDITOR.get() != null; } @Override public List<ITriggerProvider> getList() { return CRITERIA_EDITOR.get().getTriggers(); } @Override public int drawSpecial(ITriggerProvider drawing, int offsetX, int offsetY, int mouseOffsetX, int mouseOffsetY) { //We have drawn the deleted button now we check for conditions for triggers. if (MODE == EDIT) { int color = THEME.blackBarBorder; if (mouseOffsetX >= 2 && mouseOffsetX <= drawing.getWidth(MODE) - 3 && mouseOffsetY >= 65 && mouseOffsetY <= 77 && !FeatureNew.IS_OPEN) { color = THEME.blackBarFontColor; } offset.drawGradient(offsetX, offsetY, 2, 65, drawing.getWidth(MODE) - 5, 11, color, THEME.blackBarGradient1, THEME.blackBarGradient2); offset.drawText(offsetX, offsetY, Progression.translate((MODE == EDIT ? "editor" : "display") + ".condition"), (drawing.getWidth(EDIT) / 5), 67, THEME.blackBarFontColor); offsetX = super.drawSpecial(drawing, offsetX, offsetY, mouseOffsetX, mouseOffsetY); } else { if (drawing.isVisible()) offsetX = super.drawSpecial(drawing, offsetX, offsetY, mouseOffsetX, mouseOffsetY); for (IConditionProvider condition: drawing.getConditions()) { if (!condition.isVisible()) continue; mouseOffsetX = mouseOffsetX - offsetX; drawingDraw(condition, offset, offsetX, offsetY, mouseOffsetX, mouseOffsetY); offsetX = offsetX + condition.getWidth(MODE); } } return offsetX; } @Override public boolean clickSpecial(ITriggerProvider provider, int mouseOffsetX, int mouseOffsetY) { if (MODE == DISPLAY) return false; if (mouseOffsetX >= 2 && mouseOffsetX <= provider.getWidth(MODE) - 3 && mouseOffsetY >= 66 && mouseOffsetY <= 77) { CONDITION_EDITOR.set(provider); CORE.setEditor(CONDITION_EDITOR); return true; } return false; } }