WarpPI/core/src/main/java/it/cavallium/warppi/gui/CalculatorHUD.java

169 lines
5.7 KiB
Java
Raw Normal View History

package it.cavallium.warppi.gui;
2019-02-27 23:29:03 +01:00
import it.cavallium.warppi.WarpPI;
import it.cavallium.warppi.device.display.DisplayOutputDevice;
import it.cavallium.warppi.device.input.Keyboard;
import it.cavallium.warppi.StaticVars;
import it.cavallium.warppi.gui.graphicengine.GraphicEngine;
import it.cavallium.warppi.gui.graphicengine.Renderer;
import it.cavallium.warppi.gui.graphicengine.Skin;
2018-10-04 12:38:54 +02:00
import it.cavallium.warppi.gui.screens.Screen;
import it.cavallium.warppi.util.Utils;
2018-10-04 12:38:54 +02:00
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
2018-03-17 00:09:40 +01:00
public class CalculatorHUD extends HUD {
@Override
public void created() throws InterruptedException {
// TODO Auto-generated method stub
2018-05-12 21:18:29 +02:00
2018-03-17 00:09:40 +01:00
}
@Override
public void initialized() throws InterruptedException {
// TODO Auto-generated method stub
2018-05-12 21:18:29 +02:00
2018-03-17 00:09:40 +01:00
}
@Override
public void graphicInitialized() throws InterruptedException {
// TODO Auto-generated method stub
}
2018-03-17 00:09:40 +01:00
@Override
public void render() {
// TODO Auto-generated method stub
2018-05-12 21:18:29 +02:00
2018-03-17 00:09:40 +01:00
}
@Override
public void renderTopmostBackground() {
2018-10-04 12:38:54 +02:00
final Renderer r = d.renderer;
final DisplayOutputDevice display = d.display;
final GraphicEngine engine = display.getGraphicEngine();
2018-05-12 21:18:29 +02:00
2018-10-04 12:38:54 +02:00
r.glColor(0xFFc5c2af);
r.glFillColor(0, 0, engine.getWidth(), 20);
2018-03-17 00:09:40 +01:00
}
2018-05-12 21:18:29 +02:00
2018-03-17 00:09:40 +01:00
@Override
public void renderTopmost() {
2018-10-04 12:38:54 +02:00
final Renderer r = d.renderer;
final DisplayOutputDevice display = d.display;
final GraphicEngine engine = display.getGraphicEngine();
2018-05-12 21:18:29 +02:00
final Skin guiSkin = d.guiSkin;
2018-03-17 00:09:40 +01:00
//DRAW TOP
2018-10-04 12:38:54 +02:00
r.glColor3i(0, 0, 0);
r.glDrawLine(0, 20, engine.getWidth() - 1, 20);
r.glColor3i(255, 255, 255);
guiSkin.use(display);
2018-09-28 11:39:28 +02:00
if (Keyboard.shift) {
2018-10-04 12:38:54 +02:00
r.glFillRect(2 + 18 * 0, 2, 16, 16, 16 * 2, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
} else {
2018-10-04 12:38:54 +02:00
r.glFillRect(2 + 18 * 0, 2, 16, 16, 16 * 3, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
}
if (Keyboard.alpha) {
2018-10-04 12:38:54 +02:00
r.glFillRect(2 + 18 * 1, 2, 16, 16, 16 * 0, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
} else {
2018-10-04 12:38:54 +02:00
r.glFillRect(2 + 18 * 1, 2, 16, 16, 16 * 1, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
}
2018-03-17 00:09:40 +01:00
int padding = 2;
2019-02-27 23:29:03 +01:00
final int brightness = (int) Math.ceil(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getBrightness() * 9);
2018-09-28 11:39:28 +02:00
if (brightness <= 10) {
r.glFillRect(display.getDisplaySize()[0] - (padding + 16), 2, 16, 16, 16 * brightness, 16 * 1, 16, 16);
2018-09-28 11:39:28 +02:00
} else {
2019-02-27 23:29:03 +01:00
WarpPI.getPlatform().getConsoleUtils().out().println(1, "Brightness error");
2018-09-28 11:39:28 +02:00
}
2018-03-17 00:09:40 +01:00
padding += 18 + 6;
2019-02-27 23:29:03 +01:00
final boolean canGoBack = WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().canGoBack();
final boolean canGoForward = WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().canGoForward();
2018-03-17 00:09:40 +01:00
2019-02-27 23:29:03 +01:00
if (WarpPI.getPlatform().getSettings().isDebugEnabled()) {
r.glFillRect(display.getDisplaySize()[0] - (padding + 16), 2, 16, 16, 16 * 18, 16 * 0, 16, 16);
2018-03-17 00:09:40 +01:00
padding += 18 + 6;
}
2018-09-28 11:39:28 +02:00
if (canGoBack && canGoForward) {
r.glFillRect(display.getDisplaySize()[0] - (padding + 16), 2, 16, 16, 16 * 14, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
} else if (canGoBack) {
r.glFillRect(display.getDisplaySize()[0] - (padding + 16), 2, 16, 16, 16 * 15, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
} else if (canGoForward) {
r.glFillRect(display.getDisplaySize()[0] - (padding + 16), 2, 16, 16, 16 * 16, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
} else {
r.glFillRect(display.getDisplaySize()[0] - (padding + 16), 2, 16, 16, 16 * 17, 16 * 0, 16, 16);
2018-09-28 11:39:28 +02:00
}
2018-03-17 00:09:40 +01:00
padding += 18;
2018-05-12 21:18:29 +02:00
2018-03-17 00:09:40 +01:00
//DRAW BOTTOM
2018-10-04 12:38:54 +02:00
r.glDrawStringLeft(2, 90, d.displayDebugString);
Utils.getFont(true, false).use(display);
2018-10-04 12:38:54 +02:00
r.glColor4i(255, 0, 0, 40);
r.glDrawStringLeft(1 + 1, display.getDisplaySize()[1] - 7 - 7 + 1, "WORK IN");
2018-10-04 12:38:54 +02:00
r.glColor4i(255, 0, 0, 80);
r.glDrawStringLeft(1, display.getDisplaySize()[1] - 7 - 7, "WORK IN");
2018-10-04 12:38:54 +02:00
r.glColor4i(255, 0, 0, 40);
r.glDrawStringLeft(1 + 1, display.getDisplaySize()[1] - 7 + 1, "PROGRESS.");
2018-10-04 12:38:54 +02:00
r.glColor4i(255, 0, 0, 80);
r.glDrawStringLeft(1, display.getDisplaySize()[1] - 7, "PROGRESS.");
2018-10-04 12:38:54 +02:00
int currentDebugLine = 2;
2019-02-27 23:29:03 +01:00
if (WarpPI.getPlatform().getSettings().isDebugEnabled()) {
2018-10-04 12:38:54 +02:00
ObjectArrayList<Screen> allSessions = new ObjectArrayList<>();
2019-02-27 23:29:03 +01:00
for (Screen session : WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().sessions) {
2018-10-04 12:38:54 +02:00
allSessions.add(0, session);
}
2019-02-27 23:29:03 +01:00
Screen curScreen = WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen();
2018-10-05 16:00:15 +02:00
if (curScreen.historyBehavior == HistoryBehavior.DONT_KEEP_IN_HISTORY) {
2018-10-04 12:38:54 +02:00
allSessions.add(curScreen);
}
for (Screen session : allSessions) {
if (session != null) {
String title = session.getSessionTitle();
if (title != null && title.length() > 0) {
Utils.getFont(true).use(display);
2018-10-05 16:00:15 +02:00
if (session.historyBehavior == HistoryBehavior.DONT_KEEP_IN_HISTORY) {
2018-10-04 12:38:54 +02:00
r.glColor(0xFF3333FF);
2018-10-05 16:00:15 +02:00
} else if (session.historyBehavior == HistoryBehavior.ALWAYS_KEEP_IN_HISTORY) {
r.glColor(0xFFFF33FF);
2018-10-04 12:38:54 +02:00
} else {
r.glColor(0xFF990000);
}
r.glDrawStringLeft(0, display.getDisplaySize()[1] - ((currentDebugLine+1) * (r.getCurrentFont().getCharacterHeight()+1)), "[" + String.format("%1$03d", session.debugScreenID) + "] " + title.toUpperCase());
2019-02-27 23:29:03 +01:00
if (session == WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().getScreen()) {
2018-10-04 12:38:54 +02:00
r.glColor(0xFF00CC00);
} else {
r.glColor(0xFF990000);
}
r.glDrawStringLeft(0, display.getDisplaySize()[1] - ((currentDebugLine+1) * (r.getCurrentFont().getCharacterHeight()+1)), " " + title.toUpperCase());
2018-10-04 12:38:54 +02:00
}
currentDebugLine++;
}
}
2018-10-04 23:39:19 +02:00
r.glColor(0xFF000000);
r.glDrawStringLeft(5, display.getDisplaySize()[1] - ((currentDebugLine+1) * (r.getCurrentFont().getCharacterHeight()+1)), "DEBUG ENABLED");
2018-10-04 12:38:54 +02:00
}
2018-03-17 00:09:40 +01:00
}
@Override
2018-09-22 11:17:30 +02:00
public void beforeRender(final float dt) {
2018-03-17 00:09:40 +01:00
// TODO Auto-generated method stub
2018-05-12 21:18:29 +02:00
2018-03-17 00:09:40 +01:00
}
@Override
public void renderBackground() {
// TODO Auto-generated method stub
2018-05-12 21:18:29 +02:00
2018-03-17 00:09:40 +01:00
}
}