package com.thecherno.cherno.engine.menu;
import java.awt.Font;
import java.awt.event.KeyEvent;
import com.thecherno.cherno.engine.graphics.Color;
import com.thecherno.cherno.engine.graphics.Screen;
import com.thecherno.cherno.engine.input.Keyboard;
import com.thecherno.cherno.engine.interfaces.Renderable;
import com.thecherno.cherno.engine.interfaces.Updatable;
public class Menu implements Renderable, Updatable {
protected int selected;
protected final int MAX_SELECTED;
private MenuOption[] options;
protected Font font = new Font("Helvetica", 0, 40);
public Menu(MenuOption[] options) {
this.options = options;
MAX_SELECTED = options.length - 1;
}
public void update() {
if (Keyboard.keyTyped(KeyEvent.VK_UP) && selected > 0) {
selected--;
} else if (Keyboard.keyTyped(KeyEvent.VK_DOWN) && selected < MAX_SELECTED) {
selected++;
}
if (Keyboard.keyTyped(KeyEvent.VK_ENTER) || Keyboard.keyTyped(KeyEvent.VK_SPACE)) {
options[selected].action();
}
}
public int getWidth() {
return 0;
}
public int getHeight() {
return 0;
}
public int[] getPixels() {
return null;
}
public void render(int x, int y, Screen screen) {
Color color = Color.WHITE;
for (int i = 0; i < options.length; i++) {
if (selected == i) color = new Color(0x444444);
else color = Color.ORANGE;
screen.drawString(options[i].getTitle(), x, y + i * 44, font, color);
}
}
}