mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2024-11-24 20:29:44 +01:00
oberfläche der lobby fertig
This commit is contained in:
parent
ecba1c3135
commit
738b04f2d9
@ -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 |
Loading…
Reference in New Issue
Block a user