mirror of
				https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
				synced 2025-11-04 04:15:52 +01:00 
			
		
		
		
	oberfläche der lobby fertig
This commit is contained in:
		@@ -7,6 +7,7 @@ import com.jme3.math.ColorRGBA;
 | 
				
			|||||||
import com.jme3.math.Vector3f;
 | 
					import com.jme3.math.Vector3f;
 | 
				
			||||||
import com.jme3.scene.Geometry;
 | 
					import com.jme3.scene.Geometry;
 | 
				
			||||||
import com.jme3.scene.shape.Quad;
 | 
					import com.jme3.scene.shape.Quad;
 | 
				
			||||||
 | 
					import com.jme3.scene.shape.Sphere;
 | 
				
			||||||
import com.jme3.texture.Texture;
 | 
					import com.jme3.texture.Texture;
 | 
				
			||||||
import com.simsilica.lemur.Axis;
 | 
					import com.simsilica.lemur.Axis;
 | 
				
			||||||
import com.simsilica.lemur.Button;
 | 
					import com.simsilica.lemur.Button;
 | 
				
			||||||
@@ -30,7 +31,6 @@ public class LobbyMenu {
 | 
				
			|||||||
    private final MonopolyApp app;
 | 
					    private final MonopolyApp app;
 | 
				
			||||||
    private final Container menuContainer;
 | 
					    private final Container menuContainer;
 | 
				
			||||||
    private Geometry background;
 | 
					    private Geometry background;
 | 
				
			||||||
    private final Selector<String> dropdown;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public LobbyMenu(MonopolyApp app) {
 | 
					    public LobbyMenu(MonopolyApp app) {
 | 
				
			||||||
        this.app = app;
 | 
					        this.app = app;
 | 
				
			||||||
@@ -50,11 +50,11 @@ public class LobbyMenu {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Create a smaller horizontal container for the label, input field, and spacers
 | 
					        // Create a smaller horizontal container for the label, input field, and spacers
 | 
				
			||||||
        Container horizontalContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.X, Axis.Y)));
 | 
					        Container horizontalContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.X, Axis.Y)));
 | 
				
			||||||
        horizontalContainer.setPreferredSize(new Vector3f(600, 50, 0)); // Adjust container size
 | 
					        horizontalContainer.setPreferredSize(new Vector3f(600, 40, 0)); // Adjust container size
 | 
				
			||||||
        horizontalContainer.setBackground(null);
 | 
					        horizontalContainer.setBackground(null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Label title = horizontalContainer.addChild(new Label("Startkapital:", new ElementId("label-Bold")));
 | 
					        Label title = horizontalContainer.addChild(new Label("Startkapital:", new ElementId("label-Bold")));
 | 
				
			||||||
        title.setFontSize(48);
 | 
					        title.setFontSize(40);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Add a spacer between the title and the input field
 | 
					        // Add a spacer between the title and the input field
 | 
				
			||||||
        Label spacerBeforeInput = horizontalContainer.addChild(new Label("")); // Invisible spacer
 | 
					        Label spacerBeforeInput = horizontalContainer.addChild(new Label("")); // Invisible spacer
 | 
				
			||||||
@@ -77,40 +77,81 @@ public class LobbyMenu {
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
        app.getGuiNode().attachChild(menuContainer);
 | 
					        app.getGuiNode().attachChild(menuContainer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Spielerstatus anzeigen
 | 
					        // Dropdowns and Labels
 | 
				
			||||||
        Container playerListContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.Y, Axis.X)));
 | 
					        Container dropdownContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.X, Axis.Y)));
 | 
				
			||||||
        playerListContainer.addChild(new Label("Spieler in der Lobby:"));
 | 
					        dropdownContainer.setPreferredSize(new Vector3f(800, 200, 0));
 | 
				
			||||||
        playerListContainer.setBackground(null);
 | 
					        dropdownContainer.setBackground(null);
 | 
				
			||||||
        Label playersLabel = playerListContainer.addChild(new Label("Noch keine Spieler verbunden.")); // Beispieltext
 | 
					        dropdownContainer.setInsets(new Insets3f(10, 0, 0, 0));
 | 
				
			||||||
 | 
					        // Player Input Field
 | 
				
			||||||
        VersionedList<String> items = new VersionedList<>();
 | 
					        Container playerInputContainer = dropdownContainer.addChild(new Container(new SpringGridLayout(Axis.Y, Axis.X)));
 | 
				
			||||||
        items.add("Alpha");
 | 
					        playerInputContainer.addChild(new Label("Spieler:"));
 | 
				
			||||||
        items.add("Beta");
 | 
					        playerInputContainer.setBackground(null);
 | 
				
			||||||
        items.add("Gamma");
 | 
					 | 
				
			||||||
        items.add("Back");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        dropdown = new Selector<>(items,"glass");
 | 
					 | 
				
			||||||
        dropdown.setBackground(new QuadBackgroundComponent(ColorRGBA.Black));
 | 
					 | 
				
			||||||
        menuContainer.addChild(dropdown);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Add the custom action listener
 | 
					 | 
				
			||||||
        addSelectionActionListener(dropdown, this::onDropdownSelectionChanged);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TextField playerInputField = new TextField("");
 | 
				
			||||||
 | 
					        playerInputField.setPreferredSize(new Vector3f(100, 20, 0));
 | 
				
			||||||
 | 
					        playerInputField.setInsets(new Insets3f(5, 10, 5, 10)); // Add padding for the text inside the field
 | 
				
			||||||
 | 
					        playerInputField.setBackground(new QuadBackgroundComponent(ColorRGBA.Black));
 | 
				
			||||||
 | 
					        playerInputContainer.addChild(playerInputField);
 | 
				
			||||||
 | 
					        // Spacer (Center Circle Area)
 | 
				
			||||||
 | 
					        Label spacer = dropdownContainer.addChild(new Label(""));
 | 
				
			||||||
 | 
					        spacer.setPreferredSize(new Vector3f(200, 200, 0)); // Adjust this to fit the center graphic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Figur Dropdown
 | 
				
			||||||
 | 
					        Container figureDropdownContainer = dropdownContainer.addChild(new Container(new SpringGridLayout(Axis.Y, Axis.X)));
 | 
				
			||||||
 | 
					        figureDropdownContainer.addChild(new Label("Figur:"));
 | 
				
			||||||
 | 
					        figureDropdownContainer.setBackground(null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        VersionedList<String> figures = new VersionedList<>();
 | 
				
			||||||
 | 
					        figures.add("Hund");
 | 
				
			||||||
 | 
					        figures.add("Katze");
 | 
				
			||||||
 | 
					        figures.add("Panzer");
 | 
				
			||||||
 | 
					        figures.add("Pot");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Selector<String> figureDropdown = new Selector<>(figures, "glass");
 | 
				
			||||||
 | 
					        figureDropdown.setBackground(new QuadBackgroundComponent(ColorRGBA.DarkGray));
 | 
				
			||||||
 | 
					        figureDropdown.setPreferredSize(new Vector3f(100, 20, 0));
 | 
				
			||||||
 | 
					        figureDropdownContainer.addChild(figureDropdown);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        addSelectionActionListener(figureDropdown, this::onDropdownSelectionChanged);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Buttons
 | 
					 | 
				
			||||||
        Container buttonContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.X, Axis.Y)));
 | 
					        Container buttonContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.X, Axis.Y)));
 | 
				
			||||||
        buttonContainer.setPreferredSize(new Vector3f(400, 50, 0));
 | 
					        buttonContainer.setPreferredSize(new Vector3f(100, 40, 0));
 | 
				
			||||||
 | 
					        buttonContainer.setInsets(new Insets3f(20, 0, 10, 0)); // Add spacing above the buttons
 | 
				
			||||||
 | 
					        buttonContainer.setBackground(null);
 | 
				
			||||||
 | 
					        // Lower-left container for "Abbrechen" button
 | 
				
			||||||
 | 
					        Container lowerLeftMenu = new Container();
 | 
				
			||||||
 | 
					        Button cancelButton = new Button("Abbrechen");
 | 
				
			||||||
 | 
					        cancelButton.setPreferredSize(new Vector3f(200, 60, 0)); // Set size to match the appearance in the image
 | 
				
			||||||
 | 
					        cancelButton.setFontSize(18); // Adjust font size
 | 
				
			||||||
 | 
					        cancelButton.addClickCommands(source -> goBackToCreateGame()); // Add functionality
 | 
				
			||||||
 | 
					        lowerLeftMenu.addChild(cancelButton);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // "Bereit"-Button
 | 
					// Position the container near the bottom-left corner
 | 
				
			||||||
        Button readyButton = buttonContainer.addChild(new Button("Bereit"));
 | 
					        lowerLeftMenu.setLocalTranslation(new Vector3f(120, 170, 3)); // Adjust X and Y to align with the bottom-left corner
 | 
				
			||||||
        readyButton.setPreferredSize(new Vector3f(120, 40, 0));
 | 
					        app.getGuiNode().attachChild(lowerLeftMenu);
 | 
				
			||||||
        readyButton.addClickCommands(source -> toggleReady(playersLabel));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // "Zurück"-Button
 | 
					// Lower-right container for "Bereit" button
 | 
				
			||||||
        Button backButton = buttonContainer.addChild(new Button("Zurück"));
 | 
					        Container lowerRightMenu = new Container();
 | 
				
			||||||
        backButton.setPreferredSize(new Vector3f(120, 40, 0));
 | 
					        Button readyButton = new Button("Bereit");
 | 
				
			||||||
        backButton.addClickCommands(source -> goBackToCreateGame());
 | 
					        readyButton.setPreferredSize(new Vector3f(200, 60, 0)); // Set size to match the appearance in the image
 | 
				
			||||||
 | 
					        readyButton.setFontSize(18); // Adjust font size
 | 
				
			||||||
 | 
					        readyButton.setBackground(new QuadBackgroundComponent(ColorRGBA.Green)); // Add color to match the style
 | 
				
			||||||
 | 
					        readyButton.addClickCommands(source -> toggleReady(null)); // Add functionality
 | 
				
			||||||
 | 
					        lowerRightMenu.addChild(readyButton);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Position the container near the bottom-right corner
 | 
				
			||||||
 | 
					        lowerRightMenu.setLocalTranslation(new Vector3f(app.getCamera().getWidth() - 320, 170, 3)); // X: 220px from the right, Y: 50px above the bottom
 | 
				
			||||||
 | 
					        app.getGuiNode().attachChild(lowerRightMenu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Add a colored circle between the input field and the dropdown menu
 | 
				
			||||||
 | 
					        Geometry circle = createCircle( ColorRGBA.Red); // 50 is the diameter, Red is the color
 | 
				
			||||||
 | 
					        circle.setLocalTranslation(new Vector3f(
 | 
				
			||||||
 | 
					                (app.getCamera().getWidth()) / 2, // Center horizontally
 | 
				
			||||||
 | 
					                (app.getCamera().getHeight() / 2) - 90, // Adjust Y position
 | 
				
			||||||
 | 
					                2 // Ensure it's in front of the background but behind the dropdown
 | 
				
			||||||
 | 
					        ));
 | 
				
			||||||
 | 
					        app.getGuiNode().attachChild(circle); // Attach to the GUI node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Zentrierung des Containers
 | 
					        // Zentrierung des Containers
 | 
				
			||||||
        menuContainer.setLocalTranslation(
 | 
					        menuContainer.setLocalTranslation(
 | 
				
			||||||
@@ -122,11 +163,12 @@ public class LobbyMenu {
 | 
				
			|||||||
        app.getGuiNode().attachChild(menuContainer);
 | 
					        app.getGuiNode().attachChild(menuContainer);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Lädt das Hintergrundbild und fügt es als geometrische Ebene hinzu.
 | 
					     * Lädt das Hintergrundbild und fügt es als geometrische Ebene hinzu.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void addBackgroundImage() {
 | 
					    private void addBackgroundImage() {
 | 
				
			||||||
        Texture backgroundImage = app.getAssetManager().loadTexture("Pictures/unibw-Bib2.png");
 | 
					        Texture backgroundImage = app.getAssetManager().loadTexture("Pictures/lobby.png");
 | 
				
			||||||
        Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
 | 
					        Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
 | 
				
			||||||
        background = new Geometry("Background", quad);
 | 
					        background = new Geometry("Background", quad);
 | 
				
			||||||
        Material backgroundMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
 | 
					        Material backgroundMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
 | 
				
			||||||
@@ -137,6 +179,19 @@ public class LobbyMenu {
 | 
				
			|||||||
        app.getGuiNode().attachChild(background);
 | 
					        app.getGuiNode().attachChild(background);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Geometry createCircle(ColorRGBA color) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Sphere sphere = new Sphere(90,90,60.0f);
 | 
				
			||||||
 | 
					        Geometry circleGeometry = new Geometry("Circle", sphere);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Create a material with a solid color
 | 
				
			||||||
 | 
					        Material material = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
 | 
				
			||||||
 | 
					        material.setColor("Color", color); // Set the desired color
 | 
				
			||||||
 | 
					        circleGeometry.setMaterial(material);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return circleGeometry;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Schaltet den "Bereit"-Status um.
 | 
					     * Schaltet den "Bereit"-Status um.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								Projekte/monopoly/client/src/main/resources/Pictures/lobby.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Projekte/monopoly/client/src/main/resources/Pictures/lobby.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 3.9 MiB  | 
		Reference in New Issue
	
	Block a user