feat(ui): Implemented "Save and Exit" in Escape
This commit is contained in:
parent
4dd785fdfc
commit
aa6a47fff9
@ -56,6 +56,7 @@ public class InputHandlerThread extends Thread {
|
||||
.toList().getFirst().getData()).click(game, mouseEvent, terminal,
|
||||
screenRenderer);
|
||||
case ESC -> game.getGameStates().dependencies.escape.mouse(mouseEvent, terminal, screenRenderer);
|
||||
case SAVE_EXIT -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -93,10 +94,6 @@ public class InputHandlerThread extends Thread {
|
||||
game.getGameStates().dependencies.escape.reset();
|
||||
}
|
||||
screenRenderer.render(game);
|
||||
// System.out.println("Exiting game...");
|
||||
// isRunning[0] = false;
|
||||
// game.getGameStates().dependencies.gameSaver.save(game);
|
||||
// System.exit(0);
|
||||
}
|
||||
default -> {
|
||||
}
|
||||
|
@ -24,7 +24,27 @@ public class Escape {
|
||||
this.game = game;
|
||||
}
|
||||
|
||||
public void render(StringBuilder buffer, Terminal terminal, Game game) {
|
||||
public void renderSave(StringBuilder buffer, Terminal terminal) {
|
||||
var font = game.getGameStates().dependencies.font;
|
||||
var savingText = font.line(terminal, "Saving", Size.LARGE, Align.CENTER);
|
||||
|
||||
int top = (terminal.getHeight() - savingText.getHeight()) / 2;
|
||||
|
||||
buffer.append("\n".repeat(top));
|
||||
buffer.append(savingText.getData());
|
||||
}
|
||||
|
||||
public void renderSaved(StringBuilder buffer, Terminal terminal) {
|
||||
var font = game.getGameStates().dependencies.font;
|
||||
var savingText = font.line(terminal, "Saved", Size.LARGE, Align.CENTER);
|
||||
|
||||
int top = (terminal.getHeight() - savingText.getHeight()) / 2;
|
||||
|
||||
buffer.append("\n".repeat(top));
|
||||
buffer.append(savingText.getData());
|
||||
}
|
||||
|
||||
public void render(StringBuilder buffer, Terminal terminal) {
|
||||
var font = game.getGameStates().dependencies.font;
|
||||
var width = terminal.getWidth();
|
||||
var height = terminal.getHeight();
|
||||
@ -65,6 +85,7 @@ public class Escape {
|
||||
boolean changed = false;
|
||||
|
||||
if (buttonx > 0 && buttonx <= btnWidth) {
|
||||
// Continue
|
||||
if (buttony > 0 && buttony < buttonHeight) {
|
||||
if (type == MouseEvent.Type.Pressed) {
|
||||
game.setWindow(Window.WORLD);
|
||||
@ -81,6 +102,7 @@ public class Escape {
|
||||
changed = true;
|
||||
}
|
||||
|
||||
// Options
|
||||
if (buttony > buttonHeight + margin && buttony < 2 * buttonHeight + margin) {
|
||||
if (type == MouseEvent.Type.Pressed) {
|
||||
return;
|
||||
@ -95,9 +117,19 @@ public class Escape {
|
||||
changed = true;
|
||||
}
|
||||
|
||||
// Save and exit
|
||||
if (buttony > 2 * (buttonHeight + margin) && buttony < buttonHeight + 2 * (buttonHeight + margin)) {
|
||||
if (type == MouseEvent.Type.Pressed) {
|
||||
return;
|
||||
game.setWindow(Window.SAVE_EXIT);
|
||||
screenRenderer.render(game);
|
||||
|
||||
// Save game
|
||||
game.getGameStates().dependencies.gameSaver.save(game);
|
||||
|
||||
game.setWindow(Window.SAVED);
|
||||
screenRenderer.render(game);
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
if (buttonsHover[2] == false) {
|
||||
@ -108,7 +140,6 @@ public class Escape {
|
||||
buttonsHover[2] = false;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
package cz.jzitnik.game.ui;
|
||||
|
||||
public enum Window {
|
||||
WORLD, INVENTORY, CRAFTING_TABLE, CHEST, FURNACE, ESC
|
||||
WORLD, INVENTORY, CRAFTING_TABLE, CHEST, FURNACE, ESC, SAVE_EXIT, SAVED
|
||||
}
|
||||
|
@ -80,7 +80,9 @@ public class ScreenRenderer {
|
||||
case FURNACE -> ((Furnace) game.getWorld()[game.getGameStates().clickY][game.getGameStates().clickX]
|
||||
.stream().filter(i -> i.getBlockId().equals("furnace")).toList().getFirst().getData()).render(game,
|
||||
main, terminal, spriteList);
|
||||
case ESC -> game.getGameStates().dependencies.escape.render(main, terminal, game);
|
||||
case ESC -> game.getGameStates().dependencies.escape.render(main, terminal);
|
||||
case SAVE_EXIT -> game.getGameStates().dependencies.escape.renderSave(main, terminal);
|
||||
case SAVED -> game.getGameStates().dependencies.escape.renderSaved(main, terminal);
|
||||
case WORLD -> {
|
||||
// World
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user