mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2024-11-24 22:49:44 +01:00
Compare commits
10 Commits
10e24cf30e
...
44c55ce3a6
Author | SHA1 | Date | |
---|---|---|---|
|
44c55ce3a6 | ||
|
895bea048c | ||
|
885ab5bdc9 | ||
|
c6355b2c09 | ||
|
ada6bf3f24 | ||
|
db471ac679 | ||
|
84059c4085 | ||
|
09b363f943 | ||
|
fd347c7780 | ||
|
b38a34efa5 |
@ -258,3 +258,30 @@ selector("menu-button", "pp") {
|
|||||||
buttonCommands = stdButtonCommands
|
buttonCommands = stdButtonCommands
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Style for Selector text
|
||||||
|
selector("selector.item.label") {
|
||||||
|
color = color(0, 0, 0, 1) // Black text
|
||||||
|
fontSize = 16 // Optional: Adjust the text size if needed
|
||||||
|
textHAlignment = HAlignment.Left // Optional: Align text to the left
|
||||||
|
insets = new Insets3f(2, 2, 2, 2) // Optional: Add padding around text
|
||||||
|
}
|
||||||
|
// Style the popup container background
|
||||||
|
selector("selector.popup") {
|
||||||
|
background = new QuadBackgroundComponent(new ColorRGBA(1, 1, 1, 0.8f)) // Translucent white background
|
||||||
|
insets = new Insets3f(5, 5, 5, 5) // Padding inside the popup container
|
||||||
|
}
|
||||||
|
|
||||||
|
// Style the text of dropdown options
|
||||||
|
selector("selector.item.label") {
|
||||||
|
color = color(0, 0, 0, 1) // Black text
|
||||||
|
fontSize = 16 // Optional: Adjust font size
|
||||||
|
textHAlignment = HAlignment.Left // Align text to the left
|
||||||
|
insets = new Insets3f(2, 5, 2, 5) // Add padding for each option
|
||||||
|
}
|
||||||
|
|
||||||
|
// Style the hover state of dropdown options
|
||||||
|
selector("selector.item.label", "hover") {
|
||||||
|
color = color(1, 1, 1, 1) // White text when hovered
|
||||||
|
background = new QuadBackgroundComponent(new ColorRGBA(0.2f, 0.6f, 1.0f, 0.9f)) // Highlighted background
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -16,12 +16,15 @@ import com.simsilica.lemur.style.BaseStyles;
|
|||||||
import pp.dialog.DialogBuilder;
|
import pp.dialog.DialogBuilder;
|
||||||
import pp.dialog.DialogManager;
|
import pp.dialog.DialogManager;
|
||||||
import pp.graphics.Draw;
|
import pp.graphics.Draw;
|
||||||
import pp.monopoly.client.gui.SettingsMenu;
|
import pp.monopoly.client.gui.*;
|
||||||
import pp.monopoly.client.gui.TestWorld;
|
import pp.monopoly.client.gui.popups.BuildingPropertyCard;
|
||||||
import pp.monopoly.client.gui.popups.BuyCard;
|
import pp.monopoly.client.gui.popups.BuyCard;
|
||||||
|
import pp.monopoly.client.gui.popups.FoodFieldCard;
|
||||||
|
import pp.monopoly.client.gui.popups.GateFieldCard;
|
||||||
import pp.monopoly.game.client.ClientGameLogic;
|
import pp.monopoly.game.client.ClientGameLogic;
|
||||||
import pp.monopoly.game.client.MonopolyClient;
|
import pp.monopoly.game.client.MonopolyClient;
|
||||||
import pp.monopoly.game.client.ServerConnection;
|
import pp.monopoly.game.client.ServerConnection;
|
||||||
|
import pp.monopoly.model.fields.BoardManager;
|
||||||
import pp.monopoly.notification.GameEventListener;
|
import pp.monopoly.notification.GameEventListener;
|
||||||
import pp.monopoly.notification.InfoTextEvent;
|
import pp.monopoly.notification.InfoTextEvent;
|
||||||
import pp.monopoly.server.MonopolyServer;
|
import pp.monopoly.server.MonopolyServer;
|
||||||
@ -42,8 +45,13 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
private boolean inputBlocked = false;
|
private boolean inputBlocked = false;
|
||||||
private MonopolyServer monopolyServer;
|
private MonopolyServer monopolyServer;
|
||||||
private NetworkSupport networkSupport;
|
private NetworkSupport networkSupport;
|
||||||
|
private BoardManager boardManager = new BoardManager();
|
||||||
|
|
||||||
|
// TODO Temp später entfernen
|
||||||
|
|
||||||
|
private BuildingPropertyCard buildingProperty;
|
||||||
|
private FoodFieldCard foodField;
|
||||||
|
private GateFieldCard gateField;
|
||||||
private BuyCard buyCard;
|
private BuyCard buyCard;
|
||||||
private boolean isBuyCardPopupOpen = false;
|
private boolean isBuyCardPopupOpen = false;
|
||||||
private final ActionListener BListener = (name, isPressed, tpf) -> handleB(isPressed);
|
private final ActionListener BListener = (name, isPressed, tpf) -> handleB(isPressed);
|
||||||
@ -82,6 +90,10 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
return logic;
|
return logic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BoardManager getBoardManager() {
|
||||||
|
return boardManager;
|
||||||
|
}
|
||||||
|
|
||||||
public NetworkSupport getNetworkSupport() {
|
public NetworkSupport getNetworkSupport() {
|
||||||
return networkSupport;
|
return networkSupport;
|
||||||
}
|
}
|
||||||
@ -99,6 +111,8 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
GuiGlobals.initialize(this);
|
GuiGlobals.initialize(this);
|
||||||
BaseStyles.loadStyleResources(STYLES_SCRIPT);
|
BaseStyles.loadStyleResources(STYLES_SCRIPT);
|
||||||
GuiGlobals.getInstance().getStyles().setDefaultStyle("pp"); // NON-NLS
|
GuiGlobals.getInstance().getStyles().setDefaultStyle("pp"); // NON-NLS
|
||||||
|
BaseStyles.loadStyleResources("com/simsilica/lemur/style/base/glass-styles.groovy");
|
||||||
|
GuiGlobals.getInstance().getStyles();
|
||||||
final BitmapFont normalFont = assetManager.loadFont(FONT); // NON-NLS
|
final BitmapFont normalFont = assetManager.loadFont(FONT); // NON-NLS
|
||||||
|
|
||||||
setupInput();
|
setupInput();
|
||||||
@ -143,20 +157,20 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//logik zum wechselnden erscheinen und verschwinden beim drücken von B
|
//logik zum wechselnden erscheinen und verschwinden beim drücken von B //TODO süäter entfernen
|
||||||
private void handleB(boolean isPressed) {
|
private void handleB(boolean isPressed) {
|
||||||
if (isPressed) {
|
if (isPressed) {
|
||||||
if (buyCard != null && isBuyCardPopupOpen) {
|
if (gateField != null && isBuyCardPopupOpen) {
|
||||||
// Schließe das SettingsMenu
|
// Schließe das SettingsMenu
|
||||||
System.out.println("Schließe BuyCardPopup...");
|
System.out.println("Schließe BuyCardPopup...");
|
||||||
buyCard.close();
|
gateField.close();
|
||||||
buyCard = null;
|
gateField = null;
|
||||||
setBuyCardPopupOpen(false);
|
setBuyCardPopupOpen(false);
|
||||||
} else {
|
} else {
|
||||||
// Öffne das SettingsMenu
|
// Öffne das SettingsMenu
|
||||||
System.out.println("Öffne BuyCardPopup...");
|
System.out.println("Öffne BuyCardPopup...");
|
||||||
buyCard = new BuyCard(this);
|
gateField = new GateFieldCard(this);
|
||||||
buyCard.open();
|
gateField.open();
|
||||||
setBuyCardPopupOpen(true);
|
setBuyCardPopupOpen(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -224,6 +238,8 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
this.isSettingsMenuOpen = isOpen;
|
this.isSettingsMenuOpen = isOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO später entfernen
|
||||||
|
|
||||||
public void setBuyCardPopupOpen(boolean isOpen) {
|
public void setBuyCardPopupOpen(boolean isOpen) {
|
||||||
this.isBuyCardPopupOpen = isOpen;
|
this.isBuyCardPopupOpen = isOpen;
|
||||||
}
|
}
|
||||||
@ -241,8 +257,9 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
testWorld.initializeScene(); // Initialisiere die Szene
|
testWorld.initializeScene(); // Initialisiere die Szene
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startBuyCard() {
|
// TODO später entfernen
|
||||||
|
|
||||||
|
public void startBuyCard() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void returnToMenu() {
|
public void returnToMenu() {
|
||||||
|
@ -110,6 +110,8 @@ public class CreateGameMenu {
|
|||||||
}
|
}
|
||||||
}, "OpenTestWorld");
|
}, "OpenTestWorld");
|
||||||
|
|
||||||
|
// TODO später entfernen
|
||||||
|
|
||||||
app.getInputManager().addMapping("OpenBuyCard", new com.jme3.input.controls.KeyTrigger(com.jme3.input.KeyInput.KEY_B));
|
app.getInputManager().addMapping("OpenBuyCard", new com.jme3.input.controls.KeyTrigger(com.jme3.input.KeyInput.KEY_B));
|
||||||
app.getInputManager().addListener(new com.jme3.input.controls.ActionListener() {
|
app.getInputManager().addListener(new com.jme3.input.controls.ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package pp.monopoly.client.gui;
|
package pp.monopoly.client.gui;
|
||||||
|
|
||||||
|
import com.jme3.app.Application;
|
||||||
|
import com.jme3.app.state.BaseAppState;
|
||||||
import com.jme3.material.Material;
|
import com.jme3.material.Material;
|
||||||
import com.jme3.math.ColorRGBA;
|
import com.jme3.math.ColorRGBA;
|
||||||
import com.jme3.math.Vector3f;
|
import com.jme3.math.Vector3f;
|
||||||
@ -16,14 +18,19 @@ import com.simsilica.lemur.TextField;
|
|||||||
import com.simsilica.lemur.component.QuadBackgroundComponent;
|
import com.simsilica.lemur.component.QuadBackgroundComponent;
|
||||||
import com.simsilica.lemur.component.SpringGridLayout;
|
import com.simsilica.lemur.component.SpringGridLayout;
|
||||||
|
|
||||||
|
import com.simsilica.lemur.core.VersionedList;
|
||||||
|
import com.simsilica.lemur.core.VersionedReference;
|
||||||
import com.simsilica.lemur.style.ElementId;
|
import com.simsilica.lemur.style.ElementId;
|
||||||
import pp.monopoly.client.MonopolyApp;
|
import pp.monopoly.client.MonopolyApp;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class LobbyMenu {
|
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;
|
||||||
@ -41,15 +48,15 @@ public class LobbyMenu {
|
|||||||
menuContainer.setPreferredSize(new Vector3f(1000, 600, 0)); // Fixed size of the container
|
menuContainer.setPreferredSize(new Vector3f(1000, 600, 0)); // Fixed size of the container
|
||||||
menuContainer.setBackground(translucentWhiteBackground);
|
menuContainer.setBackground(translucentWhiteBackground);
|
||||||
|
|
||||||
// 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, 50, 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(48);
|
||||||
|
|
||||||
// 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
|
||||||
spacerBeforeInput.setPreferredSize(new Vector3f(20, 1, 0)); // Width of the spacer
|
spacerBeforeInput.setPreferredSize(new Vector3f(20, 1, 0)); // Width of the spacer
|
||||||
|
|
||||||
@ -59,7 +66,7 @@ public class LobbyMenu {
|
|||||||
startingCapital.setPreferredSize(new Vector3f(150, 50, 0));
|
startingCapital.setPreferredSize(new Vector3f(150, 50, 0));
|
||||||
startingCapital.setInsets(new Insets3f(5, 10, 5, 10)); // Add padding around the text inside the field
|
startingCapital.setInsets(new Insets3f(5, 10, 5, 10)); // Add padding around the text inside the field
|
||||||
|
|
||||||
// Add a spacer after the input field
|
// Add a spacer after the input field
|
||||||
Label spacerAfterInput = horizontalContainer.addChild(new Label("")); // Invisible spacer
|
Label spacerAfterInput = horizontalContainer.addChild(new Label("")); // Invisible spacer
|
||||||
spacerAfterInput.setPreferredSize(new Vector3f(20, 1, 0)); // Width of the spacer
|
spacerAfterInput.setPreferredSize(new Vector3f(20, 1, 0)); // Width of the spacer
|
||||||
|
|
||||||
@ -76,20 +83,20 @@ public class LobbyMenu {
|
|||||||
playerListContainer.setBackground(null);
|
playerListContainer.setBackground(null);
|
||||||
Label playersLabel = playerListContainer.addChild(new Label("Noch keine Spieler verbunden.")); // Beispieltext
|
Label playersLabel = playerListContainer.addChild(new Label("Noch keine Spieler verbunden.")); // Beispieltext
|
||||||
|
|
||||||
// Dropdown menu for game options
|
VersionedList<String> items = new VersionedList<>();
|
||||||
Selector<String> dropdown = new Selector<>();
|
items.add("Alpha");
|
||||||
for (int i = 1; i <= 10; i++) { // Generate 10 options
|
items.add("Beta");
|
||||||
dropdown.getModel().add("Option " + i);
|
items.add("Gamma");
|
||||||
}
|
items.add("Back");
|
||||||
|
|
||||||
menuContainer.addChild(new Label("Game Options:")); // Add a label for clarity
|
dropdown = new Selector<>(items,"glass");
|
||||||
|
dropdown.setBackground(new QuadBackgroundComponent(ColorRGBA.Black));
|
||||||
menuContainer.addChild(dropdown);
|
menuContainer.addChild(dropdown);
|
||||||
|
|
||||||
// Adjust the dropdown's popup container size if necessary
|
// Add the custom action listener
|
||||||
Vector3f dimens = menuContainer.getPreferredSize();
|
addSelectionActionListener(dropdown, this::onDropdownSelectionChanged);
|
||||||
Vector3f dimens2 = dropdown.getPopupContainer().getPreferredSize();
|
|
||||||
dimens2.setX(dimens.getX());
|
|
||||||
dropdown.getPopupContainer().setPreferredSize(dimens2);
|
|
||||||
|
|
||||||
// Buttons
|
// 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)));
|
||||||
@ -146,4 +153,71 @@ public class LobbyMenu {
|
|||||||
app.getGuiNode().detachChild(background); // Entfernt das Hintergrundbild
|
app.getGuiNode().detachChild(background); // Entfernt das Hintergrundbild
|
||||||
new CreateGameMenu(app);
|
new CreateGameMenu(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a custom action listener to the Selector.
|
||||||
|
*/
|
||||||
|
private void addSelectionActionListener(Selector<String> selector, SelectionActionListener<String> listener) {
|
||||||
|
VersionedReference<Set<Integer>> selectionRef = selector.getSelectionModel().createReference();
|
||||||
|
|
||||||
|
app.getStateManager().attach(new BaseAppState() {
|
||||||
|
@Override
|
||||||
|
public void update(float tpf) {
|
||||||
|
if (selectionRef.update()) {
|
||||||
|
String selected = selectionRef.get().toString();
|
||||||
|
System.out.println(selected);
|
||||||
|
listener.onSelectionChanged(selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize(Application app) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void cleanup(Application app) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onEnable() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDisable() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for when the dropdown selection changes.
|
||||||
|
*/
|
||||||
|
private void onDropdownSelectionChanged(String selected) {
|
||||||
|
System.out.println("Selected: " + selected);
|
||||||
|
switch (selected) {
|
||||||
|
case "[0]":
|
||||||
|
System.out.println("Alpha selected");
|
||||||
|
break;
|
||||||
|
case "[1]":
|
||||||
|
System.out.println("Beta selected");
|
||||||
|
break;
|
||||||
|
case "[2]":
|
||||||
|
System.out.println("Gamma selected");
|
||||||
|
break;
|
||||||
|
case "[3]":
|
||||||
|
goBackToCreateGame();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.println("Unknown selection");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functional interface for a selection action listener.
|
||||||
|
*/
|
||||||
|
@FunctionalInterface
|
||||||
|
private interface SelectionActionListener<T> {
|
||||||
|
void onSelectionChanged(T selection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,133 @@
|
|||||||
|
package pp.monopoly.client.gui.popups;
|
||||||
|
|
||||||
|
import com.jme3.material.Material;
|
||||||
|
import com.jme3.material.RenderState.BlendMode;
|
||||||
|
import com.jme3.math.ColorRGBA;
|
||||||
|
import com.jme3.scene.Geometry;
|
||||||
|
import com.jme3.scene.shape.Quad;
|
||||||
|
import com.simsilica.lemur.Button;
|
||||||
|
import com.simsilica.lemur.Container;
|
||||||
|
import com.simsilica.lemur.Label;
|
||||||
|
import com.simsilica.lemur.component.QuadBackgroundComponent;
|
||||||
|
import com.simsilica.lemur.style.ElementId;
|
||||||
|
|
||||||
|
import pp.dialog.Dialog;
|
||||||
|
import pp.monopoly.client.MonopolyApp;
|
||||||
|
import pp.monopoly.model.fields.BuildingProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Kommentare fixen
|
||||||
|
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||||
|
*/
|
||||||
|
public class BuildingPropertyCard extends Dialog {
|
||||||
|
private final MonopolyApp app;
|
||||||
|
private final Geometry overlayBackground;
|
||||||
|
private final Container settingsContainer;
|
||||||
|
private final Container backgroundContainer;
|
||||||
|
private int index = 23;
|
||||||
|
|
||||||
|
public BuildingPropertyCard(MonopolyApp app) {
|
||||||
|
super(app.getDialogManager());
|
||||||
|
this.app = app;
|
||||||
|
|
||||||
|
// Titel
|
||||||
|
//Generate the corresponfing field
|
||||||
|
BuildingProperty field = (BuildingProperty) app.getBoardManager().getFieldAtIndex(index);
|
||||||
|
|
||||||
|
// Halbtransparentes Overlay hinzufügen
|
||||||
|
overlayBackground = createOverlayBackground();
|
||||||
|
app.getGuiNode().attachChild(overlayBackground);
|
||||||
|
|
||||||
|
// Create the background container
|
||||||
|
backgroundContainer = new Container();
|
||||||
|
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
||||||
|
app.getGuiNode().attachChild(backgroundContainer);
|
||||||
|
|
||||||
|
// Hauptcontainer für das Menü
|
||||||
|
settingsContainer = new Container();
|
||||||
|
//settingsContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(170 / 255f, 223 / 255f, 246 / 255f, 1))); // hell
|
||||||
|
settingsContainer.setBackground(new QuadBackgroundComponent(field.getColor().getColor())); //dunkel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Label settingsTitle = settingsContainer.addChild(new Label( field.getName(), new ElementId("settings-title")));
|
||||||
|
settingsTitle.setFontSize(48);
|
||||||
|
|
||||||
|
// Effekt-Sound: Slider und Checkbox
|
||||||
|
Container propertyValuesContainer = settingsContainer.addChild(new Container());
|
||||||
|
propertyValuesContainer.addChild(new Label("„Grundstückswert: " + field.getPrice() + " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„Miete allein: " + field.getAllRent().get(0)+ " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„-mit 1 Haus: " + field.getAllRent().get(1) + " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„-mit 2 Häuser: " + field.getAllRent().get(2) + " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„-mit 3 Häuser: " + field.getAllRent().get(3) + " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„-mit 4 Häuser: " + field.getAllRent().get(4) + " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„-mit 1 Hotel: " + field.getAllRent().get(5) + " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„-1 Haus kostet: " + field.getHousePrice()+ " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.addChild(new Label("„Hypothek: " + field.getHypo() + " EUR", new ElementId("label-Text")));
|
||||||
|
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||||
|
|
||||||
|
// Beenden-Button
|
||||||
|
Button quitButton = settingsContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||||
|
quitButton.setFontSize(32);
|
||||||
|
// Kaufen-Button
|
||||||
|
Button buyButton = settingsContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||||
|
buyButton.setFontSize(32);
|
||||||
|
|
||||||
|
float padding = 10; // Padding around the settingsContainer for the background
|
||||||
|
backgroundContainer.setPreferredSize(settingsContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||||
|
|
||||||
|
|
||||||
|
// Zentriere das Menü
|
||||||
|
settingsContainer.setLocalTranslation(
|
||||||
|
(app.getCamera().getWidth() - settingsContainer.getPreferredSize().x) / 2,
|
||||||
|
(app.getCamera().getHeight() + settingsContainer.getPreferredSize().y) / 2,
|
||||||
|
8
|
||||||
|
);
|
||||||
|
|
||||||
|
backgroundContainer.setLocalTranslation(
|
||||||
|
(app.getCamera().getWidth() - settingsContainer.getPreferredSize().x - padding) / 2,
|
||||||
|
(app.getCamera().getHeight() + settingsContainer.getPreferredSize().y+ padding) / 2,
|
||||||
|
7
|
||||||
|
);
|
||||||
|
|
||||||
|
app.getGuiNode().attachChild(settingsContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt einen halbtransparenten Hintergrund für das Menü.
|
||||||
|
*
|
||||||
|
* @return Geometrie des Overlays
|
||||||
|
*/
|
||||||
|
private Geometry createOverlayBackground() {
|
||||||
|
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
|
||||||
|
Geometry overlay = new Geometry("Overlay", quad);
|
||||||
|
Material material = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
|
material.setColor("Color", new ColorRGBA(0, 0, 0, 0.5f)); // Halbtransparent
|
||||||
|
material.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
||||||
|
overlay.setMaterial(material);
|
||||||
|
overlay.setLocalTranslation(0, 0, 0);
|
||||||
|
return overlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Schließt das Menü und entfernt die GUI-Elemente.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
System.out.println("Schließe SettingsMenu..."); // Debugging-Ausgabe
|
||||||
|
app.getGuiNode().detachChild(settingsContainer); // Entferne das Menü
|
||||||
|
app.getGuiNode().detachChild(backgroundContainer); //Entfernt Rand
|
||||||
|
app.getGuiNode().detachChild(overlayBackground); // Entferne das Overlay
|
||||||
|
app.setSettingsMenuOpen(false); // Menü als geschlossen markieren
|
||||||
|
app.unblockInputs(); // Eingaben wieder aktivieren
|
||||||
|
System.out.println("SettingsMenu geschlossen."); // Debugging-Ausgabe
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIndex(int index) {
|
||||||
|
this.index = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -41,14 +41,18 @@ public class BuyCard extends Dialog {
|
|||||||
|
|
||||||
|
|
||||||
// Titel
|
// Titel
|
||||||
Label settingsTitle = settingsContainer.addChild(new Label("Gebäude XX", new ElementId("settings-title"))); //TODO Dynamische Gebäudezahl einfügen
|
Label settingsTitle = settingsContainer.addChild(new Label("Gebäude 30", new ElementId("settings-title"))); //TODO Dynamische Gebäudezahl einfügen
|
||||||
settingsTitle.setFontSize(48);
|
settingsTitle.setFontSize(48);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
int a = 10;
|
||||||
|
int b = -45;
|
||||||
|
|
||||||
// Effekt-Sound: Slider und Checkbox
|
// Effekt-Sound: Slider und Checkbox
|
||||||
Container propertyValuesContainer = settingsContainer.addChild(new Container());
|
Container propertyValuesContainer = settingsContainer.addChild(new Container());
|
||||||
propertyValuesContainer.addChild(new Label("„Preis: XXXX", new ElementId("label-Text")));//TODO Variable hier einsetzen
|
propertyValuesContainer.addChild(new Label("„Preis:" + i, new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
propertyValuesContainer.addChild(new Label("„Miete: XXXX", new ElementId("label-Text")));//TODO Variable hier einsetzen
|
propertyValuesContainer.addChild(new Label("„Miete:" + a, new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
propertyValuesContainer.addChild(new Label("„Hypothek: XXXX", new ElementId("label-Text")));//TODO Variable hier einsetzen
|
propertyValuesContainer.addChild(new Label("„Hypothek:" + b, new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||||
|
|
||||||
// Beenden-Button
|
// Beenden-Button
|
||||||
|
@ -0,0 +1,117 @@
|
|||||||
|
package pp.monopoly.client.gui.popups;
|
||||||
|
|
||||||
|
import com.jme3.material.Material;
|
||||||
|
import com.jme3.material.RenderState.BlendMode;
|
||||||
|
import com.jme3.math.ColorRGBA;
|
||||||
|
import com.jme3.scene.Geometry;
|
||||||
|
import com.jme3.scene.shape.Quad;
|
||||||
|
import com.simsilica.lemur.Button;
|
||||||
|
import com.simsilica.lemur.Container;
|
||||||
|
import com.simsilica.lemur.Label;
|
||||||
|
import com.simsilica.lemur.component.QuadBackgroundComponent;
|
||||||
|
import com.simsilica.lemur.style.ElementId;
|
||||||
|
import pp.dialog.Dialog;
|
||||||
|
import pp.monopoly.client.MonopolyApp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||||
|
*/
|
||||||
|
public class FoodFieldCard extends Dialog {
|
||||||
|
private final MonopolyApp app;
|
||||||
|
private final Geometry overlayBackground;
|
||||||
|
private final Container settingsContainer;
|
||||||
|
private final Container backgroundContainer;
|
||||||
|
|
||||||
|
public FoodFieldCard(MonopolyApp app) {
|
||||||
|
super(app.getDialogManager());
|
||||||
|
this.app = app;
|
||||||
|
|
||||||
|
// Halbtransparentes Overlay hinzufügen
|
||||||
|
overlayBackground = createOverlayBackground();
|
||||||
|
app.getGuiNode().attachChild(overlayBackground);
|
||||||
|
|
||||||
|
// Create the background container
|
||||||
|
backgroundContainer = new Container();
|
||||||
|
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
||||||
|
app.getGuiNode().attachChild(backgroundContainer);
|
||||||
|
|
||||||
|
// Hauptcontainer für das Menü
|
||||||
|
settingsContainer = new Container();
|
||||||
|
settingsContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.1f, 0.1f, 0.1f, 0.9f)));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Titel
|
||||||
|
Label settingsTitle = settingsContainer.addChild(new Label("Gebäude 30", new ElementId("settings-title"))); //TODO Dynamische Gebäudezahl einfügen
|
||||||
|
settingsTitle.setFontSize(48);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
int a = 10;
|
||||||
|
int b = -45;
|
||||||
|
|
||||||
|
// Effekt-Sound: Slider und Checkbox
|
||||||
|
Container propertyValuesContainer = settingsContainer.addChild(new Container());
|
||||||
|
propertyValuesContainer.addChild(new Label("„Preis:" + i, new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
|
propertyValuesContainer.addChild(new Label("„Miete:" + a, new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
|
propertyValuesContainer.addChild(new Label("„Hypothek:" + b, new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
|
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||||
|
|
||||||
|
// Beenden-Button
|
||||||
|
Button quitButton = settingsContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||||
|
quitButton.setFontSize(32);
|
||||||
|
// Kaufen-Button
|
||||||
|
Button buyButton = settingsContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||||
|
buyButton.setFontSize(32);
|
||||||
|
|
||||||
|
float padding = 10; // Padding around the settingsContainer for the background
|
||||||
|
backgroundContainer.setPreferredSize(settingsContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||||
|
|
||||||
|
|
||||||
|
// Zentriere das Menü
|
||||||
|
settingsContainer.setLocalTranslation(
|
||||||
|
(app.getCamera().getWidth() - settingsContainer.getPreferredSize().x) / 2,
|
||||||
|
(app.getCamera().getHeight() + settingsContainer.getPreferredSize().y) / 2,
|
||||||
|
8
|
||||||
|
);
|
||||||
|
|
||||||
|
backgroundContainer.setLocalTranslation(
|
||||||
|
(app.getCamera().getWidth() - settingsContainer.getPreferredSize().x - padding) / 2,
|
||||||
|
(app.getCamera().getHeight() + settingsContainer.getPreferredSize().y+ padding) / 2,
|
||||||
|
7
|
||||||
|
);
|
||||||
|
|
||||||
|
app.getGuiNode().attachChild(settingsContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt einen halbtransparenten Hintergrund für das Menü.
|
||||||
|
*
|
||||||
|
* @return Geometrie des Overlays
|
||||||
|
*/
|
||||||
|
private Geometry createOverlayBackground() {
|
||||||
|
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
|
||||||
|
Geometry overlay = new Geometry("Overlay", quad);
|
||||||
|
Material material = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
|
material.setColor("Color", new ColorRGBA(0, 0, 0, 0.5f)); // Halbtransparent
|
||||||
|
material.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
||||||
|
overlay.setMaterial(material);
|
||||||
|
overlay.setLocalTranslation(0, 0, 0);
|
||||||
|
return overlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Schließt das Menü und entfernt die GUI-Elemente.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
System.out.println("Schließe SettingsMenu..."); // Debugging-Ausgabe
|
||||||
|
app.getGuiNode().detachChild(settingsContainer); // Entferne das Menü
|
||||||
|
app.getGuiNode().detachChild(backgroundContainer); //Entfernt Rand
|
||||||
|
app.getGuiNode().detachChild(overlayBackground); // Entferne das Overlay
|
||||||
|
app.setSettingsMenuOpen(false); // Menü als geschlossen markieren
|
||||||
|
app.unblockInputs(); // Eingaben wieder aktivieren
|
||||||
|
System.out.println("SettingsMenu geschlossen."); // Debugging-Ausgabe
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,115 @@
|
|||||||
|
package pp.monopoly.client.gui.popups;
|
||||||
|
|
||||||
|
import com.jme3.material.Material;
|
||||||
|
import com.jme3.material.RenderState.BlendMode;
|
||||||
|
import com.jme3.math.ColorRGBA;
|
||||||
|
import com.jme3.scene.Geometry;
|
||||||
|
import com.jme3.scene.shape.Quad;
|
||||||
|
import com.simsilica.lemur.Button;
|
||||||
|
import com.simsilica.lemur.Container;
|
||||||
|
import com.simsilica.lemur.Label;
|
||||||
|
import com.simsilica.lemur.component.QuadBackgroundComponent;
|
||||||
|
import com.simsilica.lemur.style.ElementId;
|
||||||
|
import pp.dialog.Dialog;
|
||||||
|
import pp.monopoly.client.MonopolyApp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||||
|
*/
|
||||||
|
public class GateFieldCard extends Dialog {
|
||||||
|
private final MonopolyApp app;
|
||||||
|
private final Geometry overlayBackground;
|
||||||
|
private final Container settingsContainer;
|
||||||
|
private final Container backgroundContainer;
|
||||||
|
|
||||||
|
public GateFieldCard(MonopolyApp app) {
|
||||||
|
super(app.getDialogManager());
|
||||||
|
this.app = app;
|
||||||
|
|
||||||
|
// Halbtransparentes Overlay hinzufügen
|
||||||
|
overlayBackground = createOverlayBackground();
|
||||||
|
app.getGuiNode().attachChild(overlayBackground);
|
||||||
|
|
||||||
|
// Create the background container
|
||||||
|
backgroundContainer = new Container();
|
||||||
|
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
||||||
|
app.getGuiNode().attachChild(backgroundContainer);
|
||||||
|
|
||||||
|
// Hauptcontainer für das Menü
|
||||||
|
settingsContainer = new Container();
|
||||||
|
settingsContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0 / 255f, 0 / 255f, 0 / 255f, 1)));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Titel
|
||||||
|
Label settingsTitle = settingsContainer.addChild(new Label("Gebäude 30", new ElementId("settings-title"))); //TODO Dynamische Gebäudezahl einfügen
|
||||||
|
settingsTitle.setFontSize(48);
|
||||||
|
settingsTitle.setColor(ColorRGBA.Black);
|
||||||
|
|
||||||
|
|
||||||
|
// Effekt-Sound: Slider und Checkbox
|
||||||
|
Container propertyValuesContainer = settingsContainer.addChild(new Container());
|
||||||
|
propertyValuesContainer.addChild(new Label("„Preis:", new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
|
propertyValuesContainer.addChild(new Label("„Miete:", new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
|
propertyValuesContainer.addChild(new Label("„Hypothek:", new ElementId("label-Text")));//TODO Variable hier einsetzen
|
||||||
|
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||||
|
|
||||||
|
// Beenden-Button
|
||||||
|
Button quitButton = settingsContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||||
|
quitButton.setFontSize(32);
|
||||||
|
// Kaufen-Button
|
||||||
|
Button buyButton = settingsContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||||
|
buyButton.setFontSize(32);
|
||||||
|
|
||||||
|
float padding = 10; // Padding around the settingsContainer for the background
|
||||||
|
backgroundContainer.setPreferredSize(settingsContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||||
|
|
||||||
|
|
||||||
|
// Zentriere das Menü
|
||||||
|
settingsContainer.setLocalTranslation(
|
||||||
|
(app.getCamera().getWidth() - settingsContainer.getPreferredSize().x) / 2,
|
||||||
|
(app.getCamera().getHeight() + settingsContainer.getPreferredSize().y) / 2,
|
||||||
|
8
|
||||||
|
);
|
||||||
|
|
||||||
|
backgroundContainer.setLocalTranslation(
|
||||||
|
(app.getCamera().getWidth() - settingsContainer.getPreferredSize().x - padding) / 2,
|
||||||
|
(app.getCamera().getHeight() + settingsContainer.getPreferredSize().y+ padding) / 2,
|
||||||
|
7
|
||||||
|
);
|
||||||
|
|
||||||
|
app.getGuiNode().attachChild(settingsContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt einen halbtransparenten Hintergrund für das Menü.
|
||||||
|
*
|
||||||
|
* @return Geometrie des Overlays
|
||||||
|
*/
|
||||||
|
private Geometry createOverlayBackground() {
|
||||||
|
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
|
||||||
|
Geometry overlay = new Geometry("Overlay", quad);
|
||||||
|
Material material = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
|
material.setColor("Color", new ColorRGBA(0, 0, 0, 0.5f)); // Halbtransparent
|
||||||
|
material.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
||||||
|
overlay.setMaterial(material);
|
||||||
|
overlay.setLocalTranslation(0, 0, 0);
|
||||||
|
return overlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Schließt das Menü und entfernt die GUI-Elemente.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
System.out.println("Schließe SettingsMenu..."); // Debugging-Ausgabe
|
||||||
|
app.getGuiNode().detachChild(settingsContainer); // Entferne das Menü
|
||||||
|
app.getGuiNode().detachChild(backgroundContainer); //Entfernt Rand
|
||||||
|
app.getGuiNode().detachChild(overlayBackground); // Entferne das Overlay
|
||||||
|
app.setSettingsMenuOpen(false); // Menü als geschlossen markieren
|
||||||
|
app.unblockInputs(); // Eingaben wieder aktivieren
|
||||||
|
System.out.println("SettingsMenu geschlossen."); // Debugging-Ausgabe
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package pp.monopoly.client.gui.popups;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2013 jMonkeyEngine
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import com.jme3.scene.Spatial;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notified when the current selection changes.
|
||||||
|
*
|
||||||
|
* @author Paul Speed
|
||||||
|
*/
|
||||||
|
public interface SelectionListener {
|
||||||
|
|
||||||
|
public void selectionChanged( Spatial selection, Spatial previous );
|
||||||
|
}
|
@ -63,6 +63,10 @@ public class Player implements FieldVisitor<Void>{
|
|||||||
this.handler = handler;
|
this.handler = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFigure(Figure figure) {
|
||||||
|
this.figure = figure;
|
||||||
|
}
|
||||||
|
|
||||||
public PlayerColor getColor() {
|
public PlayerColor getColor() {
|
||||||
switch ((id%6)+1) {
|
switch ((id%6)+1) {
|
||||||
case 1: return PlayerColor.BLUE;
|
case 1: return PlayerColor.BLUE;
|
||||||
|
@ -19,6 +19,9 @@ import pp.monopoly.message.server.ServerMessage;
|
|||||||
import pp.monopoly.message.server.TradeReply;
|
import pp.monopoly.message.server.TradeReply;
|
||||||
import pp.monopoly.message.server.TradeRequest;
|
import pp.monopoly.message.server.TradeRequest;
|
||||||
import pp.monopoly.message.server.ViewAssetsResponse;
|
import pp.monopoly.message.server.ViewAssetsResponse;
|
||||||
|
import pp.monopoly.model.Board;
|
||||||
|
import pp.monopoly.model.Figure;
|
||||||
|
import pp.monopoly.model.Rotation;
|
||||||
import pp.monopoly.model.fields.BoardManager;
|
import pp.monopoly.model.fields.BoardManager;
|
||||||
import pp.monopoly.model.fields.PropertyField;
|
import pp.monopoly.model.fields.PropertyField;
|
||||||
|
|
||||||
@ -187,6 +190,8 @@ public class ServerGameLogic implements ClientInterpreter {
|
|||||||
|
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
player.setName(msg.getName());
|
player.setName(msg.getName());
|
||||||
|
player.setFigure(new Figure(1, -10, -10, Rotation.LEFT, msg.getFigure()));
|
||||||
|
//TODO add figure to the map
|
||||||
playerHandler.setPlayerReady(player, true);
|
playerHandler.setPlayerReady(player, true);
|
||||||
LOGGER.log(Level.DEBUG, "Player {0} is ready", player.getName());
|
LOGGER.log(Level.DEBUG, "Player {0} is ready", player.getName());
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,6 @@ public class Board {
|
|||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
this.eventBroker = eventBroker;
|
this.eventBroker = eventBroker;
|
||||||
addItem(new Figure(5, 5, 5, Rotation.LEFT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,6 +8,7 @@ import static java.lang.Math.max;
|
|||||||
import static java.lang.Math.min;
|
import static java.lang.Math.min;
|
||||||
|
|
||||||
public class Figure implements Item{
|
public class Figure implements Item{
|
||||||
|
private final String type;
|
||||||
private final int length; // The length of the Figure
|
private final int length; // The length of the Figure
|
||||||
private int x; // The x-coordinate of the Figure's position
|
private int x; // The x-coordinate of the Figure's position
|
||||||
private int y; // The y-coordinate of the Figure's position
|
private int y; // The y-coordinate of the Figure's position
|
||||||
@ -19,7 +20,7 @@ public class Figure implements Item{
|
|||||||
* at position (0, 0), with a default rotation of RIGHT.
|
* at position (0, 0), with a default rotation of RIGHT.
|
||||||
*/
|
*/
|
||||||
private Figure() {
|
private Figure() {
|
||||||
this(0, 0, 0, Rotation.RIGHT);
|
this(0, 0, 0, Rotation.RIGHT, "cube");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,11 +31,12 @@ public class Figure implements Item{
|
|||||||
* @param y the y-coordinate of the Figure's initial position
|
* @param y the y-coordinate of the Figure's initial position
|
||||||
* @param rot the rotation of the Figure
|
* @param rot the rotation of the Figure
|
||||||
*/
|
*/
|
||||||
public Figure(int length, int x, int y, Rotation rot) {
|
public Figure(int length, int x, int y, Rotation rot, String type) {
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
this.rot = rot;
|
this.rot = rot;
|
||||||
this.length = length;
|
this.length = length;
|
||||||
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,7 +5,7 @@ import com.jme3.math.ColorRGBA;
|
|||||||
/**
|
/**
|
||||||
* Enum representing eight distinct colors for properties in the game.
|
* Enum representing eight distinct colors for properties in the game.
|
||||||
*/
|
*/
|
||||||
enum FieldColor {
|
public enum FieldColor {
|
||||||
BROWN(new ColorRGBA(148 / 255f, 86 / 255f, 57 / 255f, 1)),
|
BROWN(new ColorRGBA(148 / 255f, 86 / 255f, 57 / 255f, 1)),
|
||||||
GREEN(new ColorRGBA(30 / 255f, 179 / 255f, 90 / 255f, 1)),
|
GREEN(new ColorRGBA(30 / 255f, 179 / 255f, 90 / 255f, 1)),
|
||||||
YELLOW(new ColorRGBA(252 / 255f, 241 / 255f, 1 / 255f, 1)),
|
YELLOW(new ColorRGBA(252 / 255f, 241 / 255f, 1 / 255f, 1)),
|
||||||
|
Loading…
Reference in New Issue
Block a user