From 511650023fe6b4b4ed071d613ac5ad3532789914 Mon Sep 17 00:00:00 2001 From: Armin Reichert Date: Sun, 15 Dec 2024 14:08:04 +0100 Subject: [PATCH] Standalone apps 3D --- .../games/pacman/ui3d/PacManGames3dApp.java | 16 +++--- .../pacman/ui3d/apps/ArcadeMsPacManApp.java | 47 +++++++++++++++++ .../pacman/ui3d/apps/ArcadePacManApp.java | 47 +++++++++++++++++ .../pacman/ui3d/apps/ArcadePacManXXLApp.java | 49 ++++++++++++++++++ .../pacman/ui3d/apps/TengenMsPacManApp.java | 51 +++++++++++++++++++ ...java => MsPacManGameConfiguration_3D.java} | 4 +- ...> MsPacManGameTengenConfiguration_3D.java} | 4 +- ...D.java => PacManGameConfiguration_3D.java} | 4 +- ...ava => PacManGameXXLConfiguration_3D.java} | 4 +- 9 files changed, 210 insertions(+), 16 deletions(-) create mode 100644 pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadeMsPacManApp.java create mode 100644 pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManApp.java create mode 100644 pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManXXLApp.java create mode 100644 pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/TengenMsPacManApp.java rename pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/{MsPacManGameConfiguration3D.java => MsPacManGameConfiguration_3D.java} (87%) rename pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/{MsPacManGameTengenConfiguration3D.java => MsPacManGameTengenConfiguration_3D.java} (86%) rename pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/{PacManGameConfiguration3D.java => PacManGameConfiguration_3D.java} (88%) rename pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/{PacManGameXXLConfiguration3D.java => PacManGameXXLConfiguration_3D.java} (87%) diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/PacManGames3dApp.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/PacManGames3dApp.java index a464cddd77..9b3cb7172d 100644 --- a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/PacManGames3dApp.java +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/PacManGames3dApp.java @@ -12,10 +12,10 @@ import de.amr.games.pacman.model.ms_pacman_tengen.MsPacManGameTengen; import de.amr.games.pacman.ui3d.model.Model3D; import de.amr.games.pacman.ui3d.scene3d.Perspective; -import de.amr.games.pacman.ui3d.variants.MsPacManGameConfiguration3D; -import de.amr.games.pacman.ui3d.variants.MsPacManGameTengenConfiguration3D; -import de.amr.games.pacman.ui3d.variants.PacManGameConfiguration3D; -import de.amr.games.pacman.ui3d.variants.PacManGameXXLConfiguration3D; +import de.amr.games.pacman.ui3d.variants.MsPacManGameConfiguration_3D; +import de.amr.games.pacman.ui3d.variants.MsPacManGameTengenConfiguration_3D; +import de.amr.games.pacman.ui3d.variants.PacManGameConfiguration_3D; +import de.amr.games.pacman.ui3d.variants.PacManGameXXLConfiguration_3D; import javafx.application.Application; import javafx.beans.property.*; import javafx.geometry.Dimension2D; @@ -77,10 +77,10 @@ public void init() { public void start(Stage stage) { ui = new PacManGamesUI_3D(); ui.loadAssets(); - ui.setGameConfiguration(GameVariant.MS_PACMAN, new MsPacManGameConfiguration3D()); - ui.setGameConfiguration(GameVariant.MS_PACMAN_TENGEN, new MsPacManGameTengenConfiguration3D()); - ui.setGameConfiguration(GameVariant.PACMAN, new PacManGameConfiguration3D()); - ui.setGameConfiguration(GameVariant.PACMAN_XXL, new PacManGameXXLConfiguration3D()); + ui.setGameConfiguration(GameVariant.MS_PACMAN, new MsPacManGameConfiguration_3D()); + ui.setGameConfiguration(GameVariant.MS_PACMAN_TENGEN, new MsPacManGameTengenConfiguration_3D()); + ui.setGameConfiguration(GameVariant.PACMAN, new PacManGameConfiguration_3D()); + ui.setGameConfiguration(GameVariant.PACMAN_XXL, new PacManGameXXLConfiguration_3D()); for (GameVariant variant : GameVariant.values()) { ui.assets().addAll(ui.gameConfiguration(variant).assets()); } diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadeMsPacManApp.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadeMsPacManApp.java new file mode 100644 index 0000000000..8d43b1f701 --- /dev/null +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadeMsPacManApp.java @@ -0,0 +1,47 @@ +package de.amr.games.pacman.ui3d.apps; + +import de.amr.games.pacman.arcade.pacman.PacManGame; +import de.amr.games.pacman.controller.GameController; +import de.amr.games.pacman.model.GameVariant; +import de.amr.games.pacman.ui3d.PacManGamesUI_3D; +import de.amr.games.pacman.ui3d.variants.MsPacManGameConfiguration_3D; +import javafx.application.Application; +import javafx.geometry.Dimension2D; +import javafx.geometry.Rectangle2D; +import javafx.stage.Screen; +import javafx.stage.Stage; +import org.tinylog.Logger; + +import java.io.File; + +public class ArcadeMsPacManApp extends Application { + + private PacManGamesUI_3D ui; + + @Override + public void init() throws Exception { + File userDir = new File(System.getProperty("user.home"), ".pacmanfx"); + if (userDir.mkdir()) { + Logger.info("User dir '{}' created", userDir); + } + GameController.it().addGameImplementation(GameVariant.MS_PACMAN, new PacManGame(userDir)); + GameController.it().selectGame(GameVariant.MS_PACMAN); + } + + @Override + public void start(Stage stage) throws Exception { + ui = new PacManGamesUI_3D(); + ui.loadAssets(); + var config = new MsPacManGameConfiguration_3D(); + ui.setGameConfiguration(GameVariant.MS_PACMAN, config); + ui.assets().addAll(config.assets()); + ui.createAndStart(stage, initialSize()); + } + + private static Dimension2D initialSize() { + Rectangle2D screenSize = Screen.getPrimary().getBounds(); + double aspect = 1.2; + double height = 0.8 * screenSize.getHeight(); + return new Dimension2D(aspect * height, height); + } +} diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManApp.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManApp.java new file mode 100644 index 0000000000..dd085025e8 --- /dev/null +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManApp.java @@ -0,0 +1,47 @@ +package de.amr.games.pacman.ui3d.apps; + +import de.amr.games.pacman.arcade.pacman.PacManGame; +import de.amr.games.pacman.controller.GameController; +import de.amr.games.pacman.model.GameVariant; +import de.amr.games.pacman.ui3d.PacManGamesUI_3D; +import de.amr.games.pacman.ui3d.variants.PacManGameConfiguration_3D; +import javafx.application.Application; +import javafx.geometry.Dimension2D; +import javafx.geometry.Rectangle2D; +import javafx.stage.Screen; +import javafx.stage.Stage; +import org.tinylog.Logger; + +import java.io.File; + +public class ArcadePacManApp extends Application { + + private PacManGamesUI_3D ui; + + @Override + public void init() throws Exception { + File userDir = new File(System.getProperty("user.home"), ".pacmanfx"); + if (userDir.mkdir()) { + Logger.info("User dir '{}' created", userDir); + } + GameController.it().addGameImplementation(GameVariant.PACMAN, new PacManGame(userDir)); + GameController.it().selectGame(GameVariant.PACMAN); + } + + @Override + public void start(Stage stage) throws Exception { + ui = new PacManGamesUI_3D(); + ui.loadAssets(); + var config = new PacManGameConfiguration_3D(); + ui.setGameConfiguration(GameVariant.PACMAN, config); + ui.assets().addAll(config.assets()); + ui.createAndStart(stage, initialSize()); + } + + private static Dimension2D initialSize() { + Rectangle2D screenSize = Screen.getPrimary().getBounds(); + double aspect = 1.2; + double height = 0.8 * screenSize.getHeight(); + return new Dimension2D(aspect * height, height); + } +} diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManXXLApp.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManXXLApp.java new file mode 100644 index 0000000000..6aef850372 --- /dev/null +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/ArcadePacManXXLApp.java @@ -0,0 +1,49 @@ +package de.amr.games.pacman.ui3d.apps; + +import de.amr.games.pacman.arcade.pacman_xxl.PacManGameXXL; +import de.amr.games.pacman.arcade.pacman_xxl.PacManGameXXLConfiguration; +import de.amr.games.pacman.controller.GameController; +import de.amr.games.pacman.model.GameVariant; +import de.amr.games.pacman.ui2d.PacManGamesUI; +import de.amr.games.pacman.ui3d.PacManGamesUI_3D; +import de.amr.games.pacman.ui3d.variants.PacManGameXXLConfiguration_3D; +import javafx.application.Application; +import javafx.geometry.Dimension2D; +import javafx.geometry.Rectangle2D; +import javafx.stage.Screen; +import javafx.stage.Stage; +import org.tinylog.Logger; + +import java.io.File; + +public class ArcadePacManXXLApp extends Application { + + private PacManGamesUI_3D ui; + + @Override + public void init() throws Exception { + File userDir = new File(System.getProperty("user.home"), ".pacmanfx"); + if (userDir.mkdir()) { + Logger.info("User dir '{}' created", userDir); + } + GameController.it().addGameImplementation(GameVariant.PACMAN_XXL, new PacManGameXXL(userDir)); + GameController.it().selectGame(GameVariant.PACMAN_XXL); + } + + @Override + public void start(Stage stage) throws Exception { + ui = new PacManGamesUI_3D(); + ui.loadAssets(); + var config = new PacManGameXXLConfiguration_3D(); + ui.setGameConfiguration(GameVariant.PACMAN_XXL, config); + ui.assets().addAll(config.assets()); + ui.createAndStart(stage, initialSize()); + } + + private static Dimension2D initialSize() { + Rectangle2D screenSize = Screen.getPrimary().getBounds(); + double aspect = screenSize.getWidth() / screenSize.getHeight(); + double height = 0.8 * screenSize.getHeight(); + return new Dimension2D(aspect * height, height); + } +} diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/TengenMsPacManApp.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/TengenMsPacManApp.java new file mode 100644 index 0000000000..0a7eb0bc70 --- /dev/null +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/apps/TengenMsPacManApp.java @@ -0,0 +1,51 @@ +package de.amr.games.pacman.ui3d.apps; + +import de.amr.games.pacman.controller.GameController; +import de.amr.games.pacman.model.GameVariant; +import de.amr.games.pacman.model.ms_pacman_tengen.MsPacManGameTengen; +import de.amr.games.pacman.tengen.ms_pacman.MsPacManGameTengenConfiguration; +import de.amr.games.pacman.ui2d.PacManGamesUI; +import de.amr.games.pacman.ui3d.PacManGamesUI_3D; +import de.amr.games.pacman.ui3d.variants.MsPacManGameTengenConfiguration_3D; +import javafx.application.Application; +import javafx.geometry.Dimension2D; +import javafx.geometry.Rectangle2D; +import javafx.stage.Screen; +import javafx.stage.Stage; +import org.tinylog.Logger; + +import java.io.File; + +import static de.amr.games.pacman.tengen.ms_pacman.MsPacManGameTengenConfiguration.NES_SIZE; + +public class TengenMsPacManApp extends Application { + + private PacManGamesUI_3D ui; + + @Override + public void init() throws Exception { + File userDir = new File(System.getProperty("user.home"), ".pacmanfx"); + if (userDir.mkdir()) { + Logger.info("User dir '{}' created", userDir); + } + GameController.it().addGameImplementation(GameVariant.MS_PACMAN_TENGEN, new MsPacManGameTengen(userDir)); + GameController.it().selectGame(GameVariant.MS_PACMAN_TENGEN); + } + + @Override + public void start(Stage stage) throws Exception { + ui = new PacManGamesUI_3D(); + ui.loadAssets(); + var config = new MsPacManGameTengenConfiguration_3D(); + ui.setGameConfiguration(GameVariant.MS_PACMAN_TENGEN, config); + ui.assets().addAll(config.assets()); + ui.createAndStart(stage, initialSize()); + } + + private static Dimension2D initialSize() { + Rectangle2D screenSize = Screen.getPrimary().getBounds(); + double aspect = (double) NES_SIZE.x() / NES_SIZE.y(); + double height = 0.8 * screenSize.getHeight(); + return new Dimension2D(aspect * height, height); + } +} diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameConfiguration3D.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameConfiguration_3D.java similarity index 87% rename from pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameConfiguration3D.java rename to pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameConfiguration_3D.java index be2e78849e..d484c97943 100644 --- a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameConfiguration3D.java +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameConfiguration_3D.java @@ -11,9 +11,9 @@ import static de.amr.games.pacman.ui3d.PacManGames3dApp.PY_3D_ENABLED; -public class MsPacManGameConfiguration3D extends MsPacManGameConfiguration { +public class MsPacManGameConfiguration_3D extends MsPacManGameConfiguration { - public MsPacManGameConfiguration3D() { + public MsPacManGameConfiguration_3D() { set("PlayScene3D", new PlayScene3D()); } diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameTengenConfiguration3D.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameTengenConfiguration_3D.java similarity index 86% rename from pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameTengenConfiguration3D.java rename to pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameTengenConfiguration_3D.java index 224ba944f7..660b676392 100644 --- a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameTengenConfiguration3D.java +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/MsPacManGameTengenConfiguration_3D.java @@ -11,9 +11,9 @@ import static de.amr.games.pacman.ui3d.PacManGames3dApp.PY_3D_ENABLED; -public class MsPacManGameTengenConfiguration3D extends MsPacManGameTengenConfiguration { +public class MsPacManGameTengenConfiguration_3D extends MsPacManGameTengenConfiguration { - public MsPacManGameTengenConfiguration3D() { + public MsPacManGameTengenConfiguration_3D() { set("PlayScene3D", new PlayScene3D()); } diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameConfiguration3D.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameConfiguration_3D.java similarity index 88% rename from pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameConfiguration3D.java rename to pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameConfiguration_3D.java index e1a383d02a..ca9d93ed69 100644 --- a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameConfiguration3D.java +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameConfiguration_3D.java @@ -11,9 +11,9 @@ import static de.amr.games.pacman.ui3d.PacManGames3dApp.PY_3D_ENABLED; -public class PacManGameConfiguration3D extends PacManGameConfiguration { +public class PacManGameConfiguration_3D extends PacManGameConfiguration { - public PacManGameConfiguration3D() { + public PacManGameConfiguration_3D() { set("PlayScene3D", new PlayScene3D()); } diff --git a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameXXLConfiguration3D.java b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameXXLConfiguration_3D.java similarity index 87% rename from pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameXXLConfiguration3D.java rename to pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameXXLConfiguration_3D.java index 29eb72f936..06d915f6c8 100644 --- a/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameXXLConfiguration3D.java +++ b/pacman-ui-3d/src/main/java/de/amr/games/pacman/ui3d/variants/PacManGameXXLConfiguration_3D.java @@ -11,9 +11,9 @@ import static de.amr.games.pacman.ui3d.PacManGames3dApp.PY_3D_ENABLED; -public class PacManGameXXLConfiguration3D extends PacManGameXXLConfiguration { +public class PacManGameXXLConfiguration_3D extends PacManGameXXLConfiguration { - public PacManGameXXLConfiguration3D() { + public PacManGameXXLConfiguration_3D() { set("PlayScene3D", new PlayScene3D()); }