diff --git a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/MonopolyApp.java b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/MonopolyApp.java index 1bb4c98..be35056 100644 --- a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/MonopolyApp.java +++ b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/MonopolyApp.java @@ -217,7 +217,12 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga setupInput(); setupStates(); setupGui(); - serverConnection.connect(); + createStartMenu(); + //serverConnection.connect(); + } + + private void createStartMenu() { + StartMenu.createStartMenu(); } /** diff --git a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/StartMenu.java b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/StartMenu.java index 75c37a2..d634bd2 100644 --- a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/StartMenu.java +++ b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/StartMenu.java @@ -1,22 +1,18 @@ package pp.monopoly.client; -import com.jme3.asset.TextureKey; -import com.jme3.material.Material; -import com.jme3.math.Vector3f; -import com.jme3.scene.Geometry; -import com.jme3.scene.shape.Quad; -import com.jme3.texture.Texture; -import com.simsilica.lemur.Button; -import com.simsilica.lemur.Insets3f; -import com.simsilica.lemur.Label; -import com.simsilica.lemur.Panel; -import com.simsilica.lemur.style.ElementId; -import com.simsilica.lemur.component.QuadBackgroundComponent; -import com.jme3.math.ColorRGBA; -import pp.dialog.Dialog; -import pp.monopoly.client.gui.GameMenu; -import pp.dialog.DialogManager; +import com.jme3.math.Vector3f; +import com.simsilica.lemur.Button; +import com.simsilica.lemur.Checkbox; +import com.simsilica.lemur.Container; +import com.simsilica.lemur.Label; +import com.simsilica.lemur.style.ElementId; +import pp.dialog.Dialog; +import pp.dialog.StateCheckboxModel; +import pp.dialog.TextInputDialog; + +import java.io.File; +import java.io.IOException; import java.util.prefs.Preferences; import static pp.monopoly.Resources.lookup; @@ -24,94 +20,49 @@ import static pp.util.PreferencesUtils.getPreferences; public class StartMenu extends Dialog { private static final Preferences PREFERENCES = getPreferences(StartMenu.class); + private static final String LAST_PATH = "last.file.path"; private final MonopolyApp app; - - // Buttons for the menu - private final Button playButton = new Button(lookup("button.play")); - private final Button quitButton = new Button(lookup("menu.quit")); - private final Button settingsButton = new Button("Einstellungen", new ElementId("menu-button")); + //private final Button playButton = new Button(lookup("Button.Play")); + //private final Button QuitButton = new Button(lookup("menu.quit")); + // private final Button GameMenu = new Button();/TODO Spielmenü Button funktionalität implementieren /** - * Constructs the StartMenu dialog for the Monopoly application. + * Constructs the Startup Menu dialog for the Monopoly application. * * @param app the MonopolyApp instance */ public StartMenu(MonopolyApp app) { super(app.getDialogManager()); this.app = app; + } - // Load and display the background image - TextureKey backgroundKey = new TextureKey("unibw-bib", false); - Texture backgroundTexture = app.getAssetManager().loadTexture(backgroundKey); - Material backgroundMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); - backgroundMaterial.setTexture("ColorMap", backgroundTexture); + public static void createStartMenu() { + Container mainMenu = new Container(); + mainMenu.setLocalTranslation(new Vector3f(300, 300, 0)); // Positionierung - // Create a large Quad for the background - Quad backgroundQuad = new Quad(16, 9); // Adjust size as necessary to fill the screen - Geometry background = new Geometry("Background", backgroundQuad); - background.setMaterial(backgroundMaterial); - background.setLocalTranslation(new Vector3f(-8, -4.5f, -1)); // Position it behind the UI components + // Titel des Hauptmenüs + mainMenu.addChild(new Label("Hauptmenü")); - // Attach the background as the first element - app.getGuiNode().attachChild(background); + // Schaltflächen hinzufügen + Button startButton = mainMenu.addChild(new Button("Spielen")); + startButton.addClickCommands(source -> startGame()); - // Load and display the Monopoly logo - TextureKey monopolyLogoKey = new TextureKey("log-Monopoly", false); - Texture monopolyLogoTexture = app.getAssetManager().loadTexture(monopolyLogoKey); - Material monopolyLogoMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); - monopolyLogoMaterial.setTexture("ColorMap", monopolyLogoTexture); - - Quad monopolyQuad = new Quad(5, 1.5f); // Adjust dimensions as necessary - Geometry monopolyLogo = new Geometry("MonopolyLogo", monopolyQuad); - monopolyLogo.setMaterial(monopolyLogoMaterial); - monopolyLogo.setLocalTranslation(new Vector3f(0, 5, 0)); // Position Monopoly logo at the top - - Panel monopolyLogoPanel = new Panel(); - addChild(monopolyLogoPanel); - - // Load and display the university logo - TextureKey universityLogoKey = new TextureKey("unibw-logo.png", false); - Texture universityLogoTexture = app.getAssetManager().loadTexture(universityLogoKey); - Material universityLogoMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); - universityLogoMaterial.setTexture("ColorMap", universityLogoTexture); - - Quad universityQuad = new Quad(4, 1); // Adjust dimensions to fit below Monopoly logo - Geometry universityLogo = new Geometry("UniversityLogo", universityQuad); - universityLogo.setMaterial(universityLogoMaterial); - universityLogo.setLocalTranslation(new Vector3f(0, 3, 0)); // Position below the Monopoly logo - - Panel universityLogoPanel = new Panel(); - addChild(universityLogoPanel); - - - - // Button actions - playButton.addClickCommands(source -> startGame()); - quitButton.addClickCommands(source -> app.closeApp()); + Button settingsButton = mainMenu.addChild(new Button("Einstellungen")); settingsButton.addClickCommands(source -> openSettings()); - addChild(monopolyLogoPanel); - addChild(universityLogoPanel); - addChild(playButton); - addChild(quitButton); - addChild(settingsButton); + Button quitButton = mainMenu.addChild(new Button("Spiel beenden")); + quitButton.addClickCommands(source -> quitGame()); + + attachChild(mainMenu); } private void startGame() { - System.out.println("Starting game..."); + app.serverConnection.connect(); } - private void openSettings() { - app.getDialogManager().close(this); - app.getDialogManager().open(new GameMenu(app)); + private void quitGame() { + } - @Override - public void update() { - } - - @Override - public void escape() { - close(); - } } + diff --git a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/GameMenu.java b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/SettingsMenu.java similarity index 94% rename from Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/GameMenu.java rename to Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/SettingsMenu.java index ef5dd78..2db9af4 100644 --- a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/GameMenu.java +++ b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/SettingsMenu.java @@ -8,7 +8,7 @@ import com.simsilica.lemur.style.ElementId; import pp.dialog.Dialog; import pp.monopoly.client.MonopolyApp; -public class GameMenu extends Dialog { +public class SettingsMenu extends Dialog { private final MonopolyApp app; /** @@ -16,7 +16,7 @@ public class GameMenu extends Dialog { * * @param app the MonopolyApp instance */ - public GameMenu(MonopolyApp app) { + public SettingsMenu(MonopolyApp app) { super(app.getDialogManager()); this.app = app; diff --git a/Projekte/monopoly/client/src/main/resources/Pictures/unibw-Bib.jpeg b/Projekte/monopoly/client/src/main/resources/Pictures/unibw-Bib.jpeg deleted file mode 100644 index 18d6092..0000000 Binary files a/Projekte/monopoly/client/src/main/resources/Pictures/unibw-Bib.jpeg and /dev/null differ diff --git a/Projekte/monopoly/client/src/main/resources/Pictures/unibw-Bib.png b/Projekte/monopoly/client/src/main/resources/Pictures/unibw-Bib.png new file mode 100644 index 0000000..38ba294 Binary files /dev/null and b/Projekte/monopoly/client/src/main/resources/Pictures/unibw-Bib.png differ diff --git a/Projekte/monopoly/model/src/main/resources/monopoly.properties b/Projekte/monopoly/model/src/main/resources/monopoly.properties index 95ff4be..b2c6e77 100644 --- a/Projekte/monopoly/model/src/main/resources/monopoly.properties +++ b/Projekte/monopoly/model/src/main/resources/monopoly.properties @@ -40,3 +40,4 @@ dialog.question=Question port.must.be.integer=Port must be an integer number map.doesnt.fit=The map doesn't fit to this game client.server-start=Start server +menu.settings=Open Settings