started working on the game selection layer

This commit is contained in:
ramollia
2025-10-03 21:31:42 +02:00
parent 82f8d00625
commit 754c8fea2e
6 changed files with 48 additions and 11 deletions

View File

@@ -3,13 +3,13 @@ package org.toop.app;
import org.toop.app.layer.Layer; import org.toop.app.layer.Layer;
import org.toop.app.layer.layers.MainLayer; import org.toop.app.layer.layers.MainLayer;
import org.toop.app.layer.layers.QuitLayer; import org.toop.app.layer.layers.QuitLayer;
import org.toop.framework.asset.ResourceManager;
import org.toop.framework.asset.resources.CssAsset;
import javafx.application.Application; import javafx.application.Application;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.stage.Stage; import javafx.stage.Stage;
import org.toop.framework.asset.ResourceManager;
import org.toop.framework.asset.resources.CssAsset;
public final class App extends Application { public final class App extends Application {
private static Stage stage; private static Stage stage;
@@ -56,7 +56,12 @@ public final class App extends Application {
App.isQuitting = false; App.isQuitting = false;
push(new MainLayer()); activate(new MainLayer());
}
public static void activate(Layer layer) {
popAll();
push(layer);
} }
public static void push(Layer layer) { public static void push(Layer layer) {
@@ -68,6 +73,14 @@ public final class App extends Application {
isQuitting = false; isQuitting = false;
} }
public static void popAll() {
final int childrenCount = root.getChildren().size();
for (int i = 0; i < childrenCount; i++) {
root.getChildren().removeLast();
}
}
public static void quitPopup() { public static void quitPopup() {
push(new QuitLayer()); push(new QuitLayer());
isQuitting = true; isQuitting = true;

View File

@@ -1,19 +1,19 @@
package org.toop.app; package org.toop.app;
public enum GameType { public enum GameType {
TICTACTOE, REVERSI; TICTACTOE, OTHELLO;
public static String toName(GameType type) { public static String toName(GameType type) {
return switch (type) { return switch (type) {
case TICTACTOE -> "Tic Tac Toe"; case TICTACTOE -> "Tic Tac Toe";
case REVERSI -> "Reversi"; case OTHELLO -> "Othello";
}; };
} }
public static GameType toType(String name) { public static GameType toType(String name) {
return switch (name) { return switch (name) {
case "Tic Tac Toe" -> TICTACTOE; case "Tic Tac Toe" -> TICTACTOE;
case "Reversi" -> REVERSI; case "Reversi" -> OTHELLO;
default -> TICTACTOE; default -> TICTACTOE;
}; };

View File

@@ -1,6 +1,7 @@
package org.toop.app.layer.layers; package org.toop.app.layer.layers;
import org.toop.app.App; import org.toop.app.App;
import org.toop.app.GameType;
import org.toop.app.layer.Container; import org.toop.app.layer.Container;
import org.toop.app.layer.Layer; import org.toop.app.layer.Layer;
@@ -10,11 +11,11 @@ public final class MainLayer extends Layer {
public MainLayer() { public MainLayer() {
super("main.css"); super("main.css");
final Container gamesContainer = Container.create(Container.Type.VERTICAL, 10); final Container gamesContainer = Container.create(Container.Type.VERTICAL, 5);
gamesContainer.addButton("Tic Tac Toe", () -> {}); gamesContainer.addButton("Tic Tac Toe", () -> { App.activate(new SelectionLayer(GameType.TICTACTOE)); });
gamesContainer.addButton("Othello", () -> {}); gamesContainer.addButton("Othello", () -> { App.activate(new SelectionLayer(GameType.OTHELLO)); });
final Container controlContainer = Container.create(Container.Type.VERTICAL, 10); final Container controlContainer = Container.create(Container.Type.VERTICAL, 5);
controlContainer.addButton("Credits", () -> {}); controlContainer.addButton("Credits", () -> {});
controlContainer.addButton("Options", () -> {}); controlContainer.addButton("Options", () -> {});
controlContainer.addButton("Quit", () -> { App.quitPopup(); }); controlContainer.addButton("Quit", () -> { App.quitPopup(); });

View File

@@ -1,10 +1,11 @@
package org.toop.app.layer.layers; package org.toop.app.layer.layers;
import javafx.geometry.Pos;
import org.toop.app.App; import org.toop.app.App;
import org.toop.app.layer.Container; import org.toop.app.layer.Container;
import org.toop.app.layer.Layer; import org.toop.app.layer.Layer;
import javafx.geometry.Pos;
public final class QuitLayer extends Layer { public final class QuitLayer extends Layer {
public QuitLayer() { public QuitLayer() {
super("quit.css"); super("quit.css");

View File

@@ -0,0 +1,19 @@
package org.toop.app.layer.layers;
import org.toop.app.App;
import org.toop.app.GameType;
import org.toop.app.layer.Container;
import org.toop.app.layer.Layer;
import javafx.geometry.Pos;
public class SelectionLayer extends Layer {
protected SelectionLayer(GameType type) {
super("selection.css");
final Container controlContainer = Container.create(Container.Type.VERTICAL, 5);
controlContainer.addButton("Back", () -> { App.activate(new MainLayer()); });
addContainer(controlContainer, Pos.BOTTOM_LEFT, 2, -2);
}
}

View File

@@ -0,0 +1,3 @@
.background {
-fx-background-color: linear-gradient(to bottom right, #21a7b2, #8f32b9);
}