package shipmaker.render;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import render.MouseEventType;
import render.RenderNode;
import render.RenderPreferences;
import render.XYTRenderNode;
public class Button extends XYTRenderNode {
private String text;
int tw;
int th;
private Runnable action;
public Button(double x, double y, String text, Runnable r) {
super(x, y, 0);
this.text = text;
this.action = r;
}
public void draw(Graphics2D g, RenderPreferences prefs) {
g.setFont(new Font("SansSerif", Font.BOLD, 14));
g.setColor(prefs.overlayTextColor());
g.drawString(text, 0, 0);
tw = g.getFontMetrics().stringWidth(text);
th = 14;
g.drawRoundRect(-5, -th-5, tw+10, th+10, 5, 5);
}
public boolean interacted(AffineTransform root, MouseEvent e, MouseEventType t) {
if (t != MouseEventType.MOUSE_PRESS) return false;
Point2D.Float pt = RenderNode.reverse(root, e);
if (pt.x > -5 && pt.x < tw + 5 && pt.y > -th-5 && pt.y < 5) {
action.run();
return true;
}
return false;
}
}