Create Start Menu

This commit is contained in:
2022-08-17 13:58:44 +02:00
parent 894af94d62
commit bef6296b22
7 changed files with 229 additions and 11 deletions

View File

@@ -0,0 +1,47 @@
package com.bartlomiejpluta.demo.gui;
import lombok.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.input.*;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
public class Button extends Label {
private Color color;
@Setter
private Runnable action;
public Button(Context context, GUI gui) {
super(context, gui);
this.color = gui.createColor();
this.color.setRGBA(1, 1, 1, 0);
setText("");
setFontSize(17f);
setAlignment(GUI.ALIGN_TOP | GUI.ALIGN_CENTER);
setColor(0.4f, 0.7f, 0.0f, 1f);
setPadding(10f);
addEventListener(KeyEvent.TYPE, this::handleKeyEvent);
}
private void handleKeyEvent(KeyEvent event) {
if(event.getKey() == Key.KEY_ENTER && event.getAction() == KeyAction.PRESS && action != null) {
event.consume();
action.run();
}
}
@Override
public void draw(Screen screen, GUI gui) {
color.setAlpha(focused ? 0.7f : 0f);
gui.beginPath();
gui.drawRectangle(x, y, getWidth(), getHeight());
gui.setFillColor(color);
gui.fill();
super.draw(screen, gui);
}
}

View File

@@ -0,0 +1,35 @@
package com.bartlomiejpluta.demo.gui;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
public abstract class DecoratedWindow extends BaseWindow {
private Paint paint;
private Color inner;
private Color outer;
public DecoratedWindow(Context context, GUI gui) {
super(context, gui);
this.inner = gui.createColor();
this.outer = gui.createColor();
this.paint = gui.createPaint();
inner.setRGBA(0.1f, 0.1f, 0.1f, 1f);
outer.setRGBA(0.2f, 0.2f, 0.2f, 1f);
}
@Override
public void draw(Screen screen, GUI gui) {
gui.beginPath();
gui.drawRectangle(x, y, getWidth(), getHeight());
gui.setFillPaint(paint);
gui.boxGradient(x, y, getWidth(), getHeight(), 10f, 100f, inner, outer, paint);
gui.fill();
gui.stroke();
super.draw(screen, gui);
}
}

View File

@@ -0,0 +1,27 @@
package com.bartlomiejpluta.demo.gui;
import lombok.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
public class StartMenuWindow extends DecoratedWindow implements Inflatable {
@Ref("new_game")
@Getter
private Button newGameBtn;
@Ref("exit")
@Getter
private Button exitBtn;
public StartMenuWindow(Context context, GUI gui) {
super(context, gui);
}
@Override
public void onInflate() {
newGameBtn.focus();
}
}