use of buildcraft.lib.gui.button.IButtonBehaviour in project BuildCraft by BuildCraft.
the class ElementTypeButton method deserialize0.
@Override
public IGuiElement deserialize0(BuildCraftJsonGui gui, IGuiPosition parent, JsonGuiInfo info, JsonGuiElement json) {
FunctionContext ctx = createContext(json);
// TODO: Find a sane way of making the position variable!
inheritProperty(json, "area[0]", "pos[0]");
inheritProperty(json, "area[1]", "pos[1]");
inheritProperty(json, "area[2]", "size[0]");
inheritProperty(json, "area[3]", "size[1]");
inheritProperty(json, "size[0]", "modes.enabled[2]");
inheritProperty(json, "size[1]", "modes.enabled[3]");
inheritProperty(json, "sprite", "modes.enabled.sprite");
inheritProperty(json, "texture", "modes.enabled.texture");
inheritProperty(json, "size[0]", "modes.disabled[2]");
inheritProperty(json, "size[1]", "modes.disabled[3]");
inheritProperty(json, "sprite", "modes.disabled.sprite");
inheritProperty(json, "texture", "modes.disabled.texture");
inheritProperty(json, "size[0]", "modes.active[2]");
inheritProperty(json, "size[1]", "modes.active[3]");
inheritProperty(json, "sprite", "modes.active.sprite");
inheritProperty(json, "texture", "modes.active.texture");
inheritProperty(json, "size[0]", "modes.hovered[2]");
inheritProperty(json, "size[1]", "modes.hovered[3]");
inheritProperty(json, "sprite", "modes.hovered.sprite");
inheritProperty(json, "texture", "modes.hovered.texture");
inheritProperty(json, "size[0]", "modes.active_hovered[2]");
inheritProperty(json, "size[1]", "modes.active_hovered[3]");
inheritProperty(json, "sprite", "modes.active_hovered.sprite");
inheritProperty(json, "texture", "modes.active_hovered.texture");
int posX = resolveEquationInt(json, "pos[0]", ctx);
int posY = resolveEquationInt(json, "pos[1]", ctx);
int sizeX = resolveEquationInt(json, "size[0]", ctx);
int sizeY = resolveEquationInt(json, "size[1]", ctx);
String buttonId;
if (json.properties.containsKey("button")) {
buttonId = json.properties.get("button");
} else {
buttonId = resolveEquation(json, "button_expression", ctx);
}
ISimpleDrawable drEnabled = resolveDrawable(ctx, info, json, gui, sizeX, sizeY, "modes.enabled");
GuiRectangle rect = new GuiRectangle(posX, posY, sizeX, sizeY);
GuiButtonDrawable.Builder buttonBuilder = new GuiButtonDrawable.Builder(rect, drEnabled);
buttonBuilder.active = resolveDrawable(ctx, info, json, gui, sizeX, sizeY, "modes.active");
buttonBuilder.hovered = resolveDrawable(ctx, info, json, gui, sizeX, sizeY, "modes.hovered");
buttonBuilder.activeHovered = resolveDrawable(ctx, info, json, gui, sizeX, sizeY, "modes.active_hovered");
buttonBuilder.disabled = resolveDrawable(ctx, info, json, gui, sizeX, sizeY, "modes.disabled");
buttonBuilder.disabledActive = resolveDrawable(ctx, info, json, gui, sizeX, sizeY, "modes.active_disabled");
GuiButtonDrawable button = new GuiButtonDrawable(gui, json.name, parent, buttonBuilder);
IButtonBehaviour behaviour = gui.properties.get(buttonId, IButtonBehaviour.class);
if (behaviour != null) {
button.setBehaviour(behaviour);
}
Boolean current = gui.properties.get(buttonId, Boolean.class);
if (current != null) {
button.setActive(current.booleanValue());
}
IButtonClickEventListener listener = gui.properties.get(buttonId, IButtonClickEventListener.class);
if (listener == null) {
BCLog.logger.warn("[lib.gui.json] Unknown button id '" + buttonId + "'");
} else {
button.registerListener(listener);
}
return button;
}
Aggregations