package com.gameminers.glasspane.testharness;
import gminers.glasspane.GlassPane;
import gminers.glasspane.VertAlignment;
import gminers.glasspane.component.PaneImage;
import gminers.glasspane.component.text.PaneLabel;
import gminers.glasspane.ease.PaneEaser;
import gminers.glasspane.event.ComponentTickEvent;
import gminers.glasspane.event.MouseDownEvent;
import gminers.glasspane.listener.PaneEventHandler;
import gminers.kitchensink.Hues;
import net.minecraft.util.ResourceLocation;
public class PaneHarnessOptionsOverlay
extends GlassPane {
public PaneHarnessOptionsOverlay() {
final PaneImage enter = new PaneImage(new ResourceLocation("textures/blocks/glass.png"));
enter.setWidth(16);
enter.setHeight(16);
enter.setAutoPosition(true);
enter.setRelativeX(1.0);
enter.setRelativeY(1.0);
enter.setRelativeXOffset(-24);
enter.setRelativeYOffset(-24);
enter.registerListeners(new Object() {
private int hue = 0;
@PaneEventHandler
public void onClick(MouseDownEvent e) {
if (e.getMouseButton() == 0) {
// We don't cache the object, since if we did, it would be annoying to make changes
// to the test harness using hot code replace.
new PaneTestHarness().show();
}
}
@PaneEventHandler
public void onTick(ComponentTickEvent e) {
hue = (hue + 1) % 360;
enter.setColor(Hues.hueToRGB(hue));
}
});
add(enter);
final PaneLabel label = new PaneLabel("Glass Pane Test Harness ");
label.setAutoPosition(true);
label.setRelativeX(1.0);
label.setRelativeY(1.0);
label.setHeight(16);
label.setAlignmentY(VertAlignment.MIDDLE);
label.setRelativeXOffset(-(24 + label.getWidth()));
label.setRelativeYOffset(-24);
label.setTranslateX(label.getWidth() + 4);
label.setClipToSize(true);
final PaneEaser labelEaser = new PaneEaser(label);
label.registerListeners(new Object() {
@PaneEventHandler
public void onTick(ComponentTickEvent e) {
if (enter.withinBounds(mouseX, mouseY)) {
labelEaser.easeFloat("translateX", 0);
} else {
labelEaser.easeFloat("translateX", label.getWidth() + 4);
}
}
});
add(label);
}
}