mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2025-01-18 22:56:15 +01:00
Merge branch 'gui' of https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02 into gui
This commit is contained in:
commit
4b5a156865
@ -262,6 +262,16 @@ selector("settings-title", "pp") {
|
||||
textHAlignment = HAlignment.Center
|
||||
textVAlignment = VAlignment.Center
|
||||
}
|
||||
selector("warning-title", "pp") {
|
||||
def outerBackground = new QuadBackgroundComponent(color(1, 0.5, 0, 1)) // Grey inner border
|
||||
def innerBackground = new QuadBackgroundComponent(buttonBgColor) // White outer border background
|
||||
font = font("Interface/Fonts/Metropolis/Metropolis-Bold-42.fnt")
|
||||
background = outerBackground
|
||||
fontSize = 40
|
||||
insets = new Insets3f(3, 3, 3, 3)
|
||||
textHAlignment = HAlignment.Center
|
||||
textVAlignment = VAlignment.Center
|
||||
}
|
||||
|
||||
selector("menu-button", "pp") {
|
||||
fontSize = 40 // Set font size
|
||||
|
@ -124,7 +124,7 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
||||
private final ActionListener escapeListener = (name, isPressed, tpf) -> escape(isPressed);
|
||||
|
||||
//TODO temp for testing
|
||||
private EventCard eventCard;
|
||||
private EventCardPopup eventCard;
|
||||
private BuildingPropertyCard buildingProperty;
|
||||
private FoodFieldCard foodField;
|
||||
private GateFieldCard gateField;
|
||||
@ -274,7 +274,7 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
||||
//logik zum wechselnden erscheinen und verschwinden beim drücken von B //TODO süäter entfernen
|
||||
private void handleB(boolean isPressed) {
|
||||
if (isPressed) {
|
||||
Dialog tmp = new Bankrupt(this);
|
||||
Dialog tmp = new TimeOut(this);
|
||||
tmp.open();
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ public class BuildingAdminMenu extends Dialog {
|
||||
private final Button takeMortgageButton = new Button("Hypothek aufnehmen");
|
||||
private final Button payMortgageButton = new Button("Hypothek bezahlen");
|
||||
private final Button overviewButton = new Button("Übersicht");
|
||||
private Geometry background;
|
||||
|
||||
public BuildingAdminMenu(MonopolyApp app) {
|
||||
super(app.getDialogManager());
|
||||
@ -42,7 +43,7 @@ public class BuildingAdminMenu extends Dialog {
|
||||
// Add content
|
||||
mainContainer.addChild(createContent());
|
||||
// Attach main container to GUI node
|
||||
app.getGuiNode().attachChild(mainContainer);
|
||||
attachChild(mainContainer);
|
||||
mainContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - mainContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + mainContainer.getPreferredSize().y) / 2,
|
||||
@ -146,29 +147,23 @@ public class BuildingAdminMenu extends Dialog {
|
||||
private void addBackgroundImage() {
|
||||
Texture backgroundImage = app.getAssetManager().loadTexture("Pictures/unibw-Bib2.png");
|
||||
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
|
||||
Geometry background = new Geometry("Background", quad);
|
||||
background = new Geometry("Background", quad);
|
||||
Material backgroundMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||
backgroundMaterial.setTexture("ColorMap", backgroundImage);
|
||||
background.setMaterial(backgroundMaterial);
|
||||
background.setLocalTranslation(0, 0, 6); // Position behind other GUI elements
|
||||
app.getGuiNode().attachChild(background);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the "Zurück" action.
|
||||
*/
|
||||
private void handleBack() {
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
close();
|
||||
attachChild(background);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void escape() {
|
||||
handleBack();
|
||||
new SettingsMenu(app).open();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float delta) {
|
||||
// Periodic updates if necessary
|
||||
public void close() {
|
||||
detachChild(background);
|
||||
detachChild(mainContainer);
|
||||
super.close();
|
||||
}
|
||||
}
|
@ -93,7 +93,7 @@ public class PropertyOverviewMenu extends Dialog {
|
||||
*/
|
||||
private void populatePlayerProperties() {
|
||||
// Fetch the current player
|
||||
Player currentPlayer = app.getGameLogic().getPlayerHandler().getPlayers().get(0);
|
||||
Player currentPlayer = app.getGameLogic().getPlayerHandler().getPlayerById(app.getId());
|
||||
|
||||
// Iterate through the player's properties
|
||||
for (PropertyField property : currentPlayer.getPropertyFields()) {
|
||||
|
@ -4,9 +4,11 @@ import java.util.List;
|
||||
|
||||
import pp.monopoly.client.MonopolyApp;
|
||||
import pp.monopoly.client.gui.popups.BuyCard;
|
||||
import pp.monopoly.client.gui.popups.EventCard;
|
||||
import pp.monopoly.client.gui.popups.EventCardPopup;
|
||||
import pp.monopoly.client.gui.popups.FoodFieldCard;
|
||||
import pp.monopoly.client.gui.popups.GateFieldCard;
|
||||
import pp.monopoly.client.gui.popups.LooserPopUp;
|
||||
import pp.monopoly.client.gui.popups.WinnerPopUp;
|
||||
import pp.monopoly.game.server.Player;
|
||||
import pp.monopoly.model.fields.BuildingProperty;
|
||||
import pp.monopoly.model.fields.FoodField;
|
||||
@ -135,9 +137,8 @@ public class TestWorld implements GameEventListener{
|
||||
|
||||
@Override
|
||||
public void receivedEvent(PopUpEvent event) {
|
||||
System.err.println("Trigger ?");
|
||||
// if (event.desc() == "BuyCard") {
|
||||
int field = app.getGameLogic().getPlayerHandler().getPlayers().get(0).getFieldID();
|
||||
if(event.msg().equals("Buy")) {
|
||||
int field = app.getGameLogic().getPlayerHandler().getPlayerById(app.getId()).getFieldID();
|
||||
Object fieldObject = app.getGameLogic().getBoardManager().getFieldAtIndex(field);
|
||||
|
||||
if (fieldObject instanceof BuildingProperty) {
|
||||
@ -147,10 +148,15 @@ public class TestWorld implements GameEventListener{
|
||||
} else if (fieldObject instanceof FoodField) {
|
||||
new FoodFieldCard(app).open();
|
||||
}
|
||||
} else if(event.msg().equals("Winner")) {
|
||||
new WinnerPopUp(app).open();
|
||||
} else if(event.msg().equals("Looser")) {
|
||||
new LooserPopUp(app).open();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receivedEvent(EventCardEvent event) {
|
||||
new EventCard(app, event.description()).open();
|
||||
new EventCardPopup(app, event.description()).open();
|
||||
}
|
||||
}
|
||||
|
@ -250,6 +250,8 @@ public class Toolbar extends Dialog implements GameEventListener {
|
||||
|
||||
@Override
|
||||
public void receivedEvent(UpdatePlayerView event) {
|
||||
|
||||
System.out.println("Update Player View");
|
||||
accountContainer.clearChildren();
|
||||
overviewContainer.clearChildren();
|
||||
|
||||
@ -306,4 +308,10 @@ public class Toolbar extends Dialog implements GameEventListener {
|
||||
public void escape() {
|
||||
new SettingsMenu(app).open();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
receivedEvent(new UpdatePlayerView());
|
||||
super.update();
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ import com.simsilica.lemur.core.VersionedList;
|
||||
import com.simsilica.lemur.style.ElementId;
|
||||
import pp.dialog.Dialog;
|
||||
import pp.monopoly.client.MonopolyApp;
|
||||
import pp.monopoly.game.server.Player;
|
||||
import pp.monopoly.model.TradeHandler;
|
||||
import pp.monopoly.model.fields.PropertyField;
|
||||
import pp.monopoly.notification.Sound;
|
||||
@ -99,6 +100,7 @@ public class TradeMenu extends Dialog {
|
||||
|
||||
column.addChild(new Label("Gebäude:"));
|
||||
Selector<String> buildingSelector = createPropertySelector(isLeft);
|
||||
buildingSelector.getPopupContainer().setBackground(new QuadBackgroundComponent(ColorRGBA.Orange));
|
||||
column.addChild(buildingSelector);
|
||||
|
||||
column.addChild(new Label("Währung:"));
|
||||
@ -107,6 +109,7 @@ public class TradeMenu extends Dialog {
|
||||
|
||||
column.addChild(new Label("Sonderkarten:"));
|
||||
Selector<String> specialCardSelector = createSpecialCardSelector();
|
||||
specialCardSelector.getPopupContainer().setBackground(new QuadBackgroundComponent(ColorRGBA.Orange));
|
||||
styleSelector(specialCardSelector);
|
||||
column.addChild(specialCardSelector);
|
||||
|
||||
@ -253,4 +256,24 @@ public class TradeMenu extends Dialog {
|
||||
app.getGuiNode().detachChild(mainContainer);
|
||||
super.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles dropdown selection changes and updates the trade handler.
|
||||
*
|
||||
* @param selected The selected item from the dropdown.
|
||||
*/
|
||||
private void onDropdownSelectionChanged(String selected) {
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
int idStart = selected.indexOf("(ID: ") + 5; // Find start of the ID
|
||||
int idEnd = selected.indexOf(")", idStart); // Find end of the ID
|
||||
String idStr = selected.substring(idStart, idEnd); // Extract the ID as a string
|
||||
int playerId = Integer.parseInt(idStr); // Convert the ID to an integer
|
||||
|
||||
// Find the player by ID
|
||||
Player selectedPlayer = app.getGameLogic().getPlayerHandler().getPlayerById(playerId);
|
||||
|
||||
if (selectedPlayer != null) {
|
||||
tradeHandler.setReceiver(selectedPlayer); // Set the receiver in TradeHandler
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import pp.dialog.Dialog;
|
||||
import pp.monopoly.client.MonopolyApp;
|
||||
|
||||
/**
|
||||
* Bankrupt ist ein Overlay-Menü, welches aufgerufen werden kann, wenn man mit einem negativen Kontostand den Zug beenden möchte. // TODO welche menü-Klasse
|
||||
* Bankrupt is a Warning-Popup which appears when the balance is negative at the end of a player´s turn
|
||||
*/
|
||||
public class Bankrupt extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -40,26 +40,26 @@ public class Bankrupt extends Dialog {
|
||||
app.getGuiNode().attachChild(backgroundContainer);
|
||||
|
||||
|
||||
// Hauptcontainer für die Gebäudekarte
|
||||
// Hauptcontainer für die Warnung
|
||||
bankruptContainer = new Container();
|
||||
bankruptContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f)));
|
||||
bankruptContainer.setPreferredSize(new Vector3f(550,250,10));
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des bankruptContainers an
|
||||
backgroundContainer.setPreferredSize(bankruptContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
// Titel
|
||||
// Die Namen werden dynamisch dem BoardManager entnommen
|
||||
Label gateFieldTitle = bankruptContainer.addChild(new Label("Vorsicht !", new ElementId("settings-title"))); //TODO Dicke Schrift
|
||||
Label gateFieldTitle = bankruptContainer.addChild(new Label("Vorsicht !", new ElementId("warning-title")));
|
||||
gateFieldTitle.setFontSize(48);
|
||||
gateFieldTitle.setColor(ColorRGBA.Black);
|
||||
|
||||
// Text, der auf der Karte steht
|
||||
// Die Preise werden dynamisch dem BoardManager entnommen
|
||||
Container Container = bankruptContainer.addChild(new Container());
|
||||
Container.addChild(new Label("Du hast noch einen negativen Kontostand. Wenn du jetzt deinen Zug beendest, gehst du Bankrott und verlierst das Spiel!", new ElementId("label-Text")));
|
||||
Container.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
Container.setPreferredSize(bankruptContainer.getPreferredSize().addLocal(-250,-200,0));
|
||||
// Text, der im Popup steht
|
||||
Container textContainer = bankruptContainer.addChild(new Container());
|
||||
textContainer.addChild(new Label("Du hast noch einen negativen Kontostand. Wenn du jetzt deinen Zug beendest, gehst du Bankrott und verlierst das Spiel!", new ElementId("label-Text")));
|
||||
textContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
|
||||
// Passt den textContainer an die Größe des bankruptContainers an
|
||||
textContainer.setPreferredSize(bankruptContainer.getPreferredSize().addLocal(-250,-200,0));
|
||||
|
||||
// Beenden-Button
|
||||
Button quitButton = bankruptContainer.addChild(new Button("Bestätigen", new ElementId("button")));
|
||||
@ -67,14 +67,14 @@ public class Bankrupt extends Dialog {
|
||||
quitButton.addClickCommands(source -> close());
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
bankruptContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - bankruptContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + bankruptContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - bankruptContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + bankruptContainer.getPreferredSize().y+ padding) / 2,
|
||||
@ -101,7 +101,7 @@ public class Bankrupt extends Dialog {
|
||||
}
|
||||
|
||||
/**
|
||||
* Schließt das Menü und entfernt die GUI-Elemente.
|
||||
* Closes the menu and removes the GUI elements.
|
||||
*/
|
||||
@Override
|
||||
public void close() {
|
||||
@ -115,5 +115,4 @@ public class Bankrupt extends Dialog {
|
||||
public void escape() {
|
||||
close();
|
||||
}
|
||||
|
||||
}
|
@ -16,8 +16,7 @@ import pp.monopoly.client.gui.SettingsMenu;
|
||||
import pp.monopoly.model.fields.BuildingProperty;
|
||||
|
||||
/**
|
||||
* TODO Kommentare fixen
|
||||
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||
* BuildingPropertyCard creates the popup for field information
|
||||
*/
|
||||
public class BuildingPropertyCard extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -46,6 +45,9 @@ public class BuildingPropertyCard extends Dialog {
|
||||
buildingPropertyContainer = new Container();
|
||||
buildingPropertyContainer.setBackground(new QuadBackgroundComponent(field.getColor().getColor()));
|
||||
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des buildingPropertyContainer an
|
||||
backgroundContainer.setPreferredSize(buildingPropertyContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
Label settingsTitle = buildingPropertyContainer.addChild(new Label( field.getName(), new ElementId("settings-title")));
|
||||
settingsTitle.setFontSize(48);
|
||||
@ -66,28 +68,14 @@ public class BuildingPropertyCard extends Dialog {
|
||||
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)));
|
||||
|
||||
//TODO eventuell diese Stelle löschen, da nur die BuyCard Kaufen und beenden hat
|
||||
|
||||
/*
|
||||
// Beenden-Button
|
||||
Button quitButton = foodFieldContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||
quitButton.setFontSize(32);
|
||||
// Kaufen-Button
|
||||
Button buyButton = foodFieldContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||
buyButton.setFontSize(32);
|
||||
*/
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
backgroundContainer.setPreferredSize(buildingPropertyContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
buildingPropertyContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - buildingPropertyContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + buildingPropertyContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - buildingPropertyContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + buildingPropertyContainer.getPreferredSize().y+ padding) / 2,
|
||||
|
@ -15,7 +15,7 @@ import pp.monopoly.model.fields.BuildingProperty;
|
||||
import pp.monopoly.notification.Sound;
|
||||
|
||||
/**
|
||||
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||
* BuyCard is a popup that appears when a player lands on a field that is still available for purchase.
|
||||
*/
|
||||
public class BuyCard extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -28,7 +28,7 @@ public class BuyCard extends Dialog {
|
||||
this.app = app;
|
||||
|
||||
//Generate the corresponfing field
|
||||
int index = app.getGameLogic().getPlayerHandler().getPlayers().get(0).getFieldID();;
|
||||
int index = app.getGameLogic().getPlayerHandler().getPlayerById(app.getId()).getFieldID();
|
||||
BuildingProperty field = (BuildingProperty) new BoardManager().getFieldAtIndex(index);
|
||||
|
||||
// Create the background container
|
||||
@ -38,13 +38,16 @@ public class BuyCard extends Dialog {
|
||||
|
||||
// Hauptcontainer für die Gebäudekarte
|
||||
buyCardContainer = new Container();
|
||||
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des buyCardContainers an
|
||||
backgroundContainer.setPreferredSize(buyCardContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Titel
|
||||
Label title = buyCardContainer.addChild(new Label( field.getName(), new ElementId("label-Bold")));
|
||||
title.setBackground(new QuadBackgroundComponent(field.getColor().getColor()));
|
||||
title.setFontSize(48);
|
||||
|
||||
// Text, der auf der Karte steht
|
||||
// Text, der auf dem Popup steht
|
||||
// Die Preise werden dynamisch dem BoardManager entnommen
|
||||
Container propertyValuesContainer = buyCardContainer.addChild(new Container());
|
||||
propertyValuesContainer.addChild(new Label("„Grundstückswert: " + field.getPrice() + " EUR", new ElementId("label-Text")));
|
||||
@ -77,17 +80,14 @@ public class BuyCard extends Dialog {
|
||||
app.getGameLogic().send(new BuyPropertyResponse());
|
||||
}));
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
backgroundContainer.setPreferredSize(buyCardContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
buyCardContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - buyCardContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + buyCardContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - buyCardContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + buyCardContainer.getPreferredSize().y+ padding) / 2,
|
||||
|
@ -12,7 +12,7 @@ import pp.monopoly.client.gui.SettingsMenu;
|
||||
import pp.monopoly.notification.Sound;
|
||||
|
||||
/**
|
||||
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||
* ConfirmTrade is a popup which appears when a trade is proposed to this certain player.
|
||||
*/
|
||||
public class ConfirmTrade extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -23,26 +23,25 @@ public class ConfirmTrade extends Dialog {
|
||||
public ConfirmTrade(MonopolyApp app) {
|
||||
super(app.getDialogManager());
|
||||
this.app = app;
|
||||
|
||||
//Generate the corresponfing field
|
||||
//int index = app.getGameLogic().getPlayerHandler().getPlayers().get(0).getFieldID();;
|
||||
// BuildingProperty field = (BuildingProperty) new BoardManager().getFieldAtIndex(index);
|
||||
|
||||
// Create the background container
|
||||
backgroundContainer = new Container();
|
||||
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
||||
attachChild(backgroundContainer);
|
||||
|
||||
// Hauptcontainer für die Gebäudekarte
|
||||
// Hauptcontainer für das Bestätigungspopup
|
||||
confirmTradeContainer = new Container();
|
||||
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des confirmTradeContainer an
|
||||
backgroundContainer.setPreferredSize(confirmTradeContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
Label title = confirmTradeContainer.addChild(new Label( "Handel", new ElementId("label-Bold"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen
|
||||
// Titel
|
||||
Label title = confirmTradeContainer.addChild(new Label( "Handel", new ElementId("label-Bold")));
|
||||
title.setFontSize(48);
|
||||
title.setColor(ColorRGBA.Black);
|
||||
|
||||
// Text, der auf der Karte steht
|
||||
// Die Preise werden dynamisch dem BoardManager entnommen
|
||||
// Die Werte werden dem Handel entnommen (Iwas auch immer da dann ist)
|
||||
Container propertyValuesContainer = confirmTradeContainer.addChild(new Container());
|
||||
propertyValuesContainer.addChild(new Label("„Spieler XXX möchte:", new ElementId("label-Text"))); //TODO hier überall die entsprechenden Variablen einfügen
|
||||
propertyValuesContainer.addChild(new Label("", new ElementId("label-Text")));// Leerzeile
|
||||
@ -59,30 +58,26 @@ public class ConfirmTrade extends Dialog {
|
||||
propertyValuesContainer.addChild(new Label("tauschen, willst du das Angebot annehmen?", new ElementId("label-Text")));
|
||||
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
|
||||
// Beenden-Button
|
||||
Button declineButton = confirmTradeContainer.addChild(new Button("Ablehnen", new ElementId("button"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen
|
||||
// Ablehnen-Button
|
||||
Button declineButton = confirmTradeContainer.addChild(new Button("Ablehnen", new ElementId("button")));
|
||||
declineButton.setFontSize(32);
|
||||
declineButton.addClickCommands(s -> ifTopDialog(() -> {
|
||||
declineButton.addClickCommands(s -> ifTopDialog(() -> { //TODO Buttonfunktion prüfen
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
close();
|
||||
}));
|
||||
// Kaufen-Button
|
||||
Button negotiateButton = confirmTradeContainer.addChild(new Button("Verhandeln", new ElementId("button"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen
|
||||
// Verhandeln-Button
|
||||
Button negotiateButton = confirmTradeContainer.addChild(new Button("Verhandeln", new ElementId("button")));
|
||||
negotiateButton.setFontSize(32);
|
||||
negotiateButton.addClickCommands(s -> ifTopDialog( () -> { //TODO Buttonfunktion prüfen
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
}));
|
||||
// Kaufen-Button
|
||||
Button confirmButton = confirmTradeContainer.addChild(new Button("Bestätigen", new ElementId("button"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen
|
||||
// Confirm-Button
|
||||
Button confirmButton = confirmTradeContainer.addChild(new Button("Bestätigen", new ElementId("button")));
|
||||
confirmButton.setFontSize(32);
|
||||
confirmButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||
confirmButton.addClickCommands(s -> ifTopDialog( () -> { //TODO Buttonfunktion prüfen
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
}));
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
backgroundContainer.setPreferredSize(confirmTradeContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
confirmTradeContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - confirmTradeContainer.getPreferredSize().x) / 2,
|
||||
@ -90,6 +85,7 @@ public class ConfirmTrade extends Dialog {
|
||||
8
|
||||
);
|
||||
|
||||
// Zentriere das Menü
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - confirmTradeContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + confirmTradeContainer.getPreferredSize().y+ padding) / 2,
|
||||
|
@ -13,11 +13,11 @@ import com.simsilica.lemur.component.QuadBackgroundComponent;
|
||||
import com.simsilica.lemur.style.ElementId;
|
||||
import pp.dialog.Dialog;
|
||||
import pp.monopoly.client.MonopolyApp;
|
||||
import pp.monopoly.client.gui.SettingsMenu;
|
||||
|
||||
/**
|
||||
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||
* EventCardPopup is a popup which appears when a certain EventCard is triggered by entering a EventCardField
|
||||
*/
|
||||
public class EventCard extends Dialog {
|
||||
public class EventCardPopup extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
private final Geometry overlayBackground;
|
||||
private final Container eventCardContainer;
|
||||
@ -25,7 +25,7 @@ public class EventCard extends Dialog {
|
||||
private final String description;
|
||||
|
||||
|
||||
public EventCard(MonopolyApp app, String description) {
|
||||
public EventCardPopup(MonopolyApp app, String description) {
|
||||
super(app.getDialogManager());
|
||||
this.app = app;
|
||||
this.description = description;
|
||||
@ -39,19 +39,21 @@ public class EventCard extends Dialog {
|
||||
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
||||
app.getGuiNode().attachChild(backgroundContainer);
|
||||
|
||||
// Hauptcontainer für die Gebäudekarte
|
||||
// Hauptcontainer für die Eventcard
|
||||
eventCardContainer = new Container();
|
||||
eventCardContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f)));
|
||||
eventCardContainer.setPreferredSize(new Vector3f(550,400,10));
|
||||
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des eventCardContainers an
|
||||
backgroundContainer.setPreferredSize(eventCardContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
// Titel
|
||||
// Die Namen werden dynamisch dem BoardManager entnommen
|
||||
Label gateFieldTitle = eventCardContainer.addChild(new Label("Ereigniskarte", new ElementId("settings-title")));
|
||||
gateFieldTitle.setFontSize(48);
|
||||
gateFieldTitle.setColor(ColorRGBA.Black);
|
||||
|
||||
// Text, der auf der Karte steht
|
||||
// Die Preise werden dynamisch dem BoardManager entnommen
|
||||
// Die Erklärungsfelder werden automatisch den descriptions der Message entnommen
|
||||
Container propertyValuesContainer = eventCardContainer.addChild(new Container());
|
||||
propertyValuesContainer.addChild(new Label(description, new ElementId("label-Text")));
|
||||
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
@ -62,17 +64,14 @@ public class EventCard extends Dialog {
|
||||
quitButton.setFontSize(32);
|
||||
quitButton.addClickCommands(source -> close());
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
backgroundContainer.setPreferredSize(eventCardContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
eventCardContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - eventCardContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + eventCardContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - eventCardContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + eventCardContainer.getPreferredSize().y+ padding) / 2,
|
@ -19,7 +19,7 @@ import pp.monopoly.model.fields.FoodField;
|
||||
import pp.monopoly.notification.Sound;
|
||||
|
||||
/**
|
||||
* FoodFieldCard erstellt die Geböudekarte vom Brandl und der Truppenküche
|
||||
* FoodFieldCard creates the popup for field information
|
||||
*/
|
||||
public class FoodFieldCard extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -32,7 +32,7 @@ public class FoodFieldCard extends Dialog {
|
||||
this.app = app;
|
||||
|
||||
//Generate the corresponfing field
|
||||
int index = app.getGameLogic().getPlayerHandler().getPlayers().get(0).getFieldID();
|
||||
int index = app.getGameLogic().getPlayerHandler().getPlayerById(app.getId()).getFieldID();
|
||||
FoodField field = (FoodField) app.getGameLogic().getBoardManager().getFieldAtIndex(index);
|
||||
|
||||
// Halbtransparentes Overlay hinzufügen
|
||||
@ -48,7 +48,8 @@ public class FoodFieldCard extends Dialog {
|
||||
foodFieldContainer = new Container();
|
||||
foodFieldContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.1f, 0.1f, 0.1f, 0.9f)));
|
||||
|
||||
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des foodFieldContainers an
|
||||
backgroundContainer.setPreferredSize(foodFieldContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
// Titel, bestehend aus dynamischen Namen anhand der ID und der Schriftfarbe/größe
|
||||
Label settingsTitle = foodFieldContainer.addChild(new Label(field.getName(), new ElementId("settings-title")));
|
||||
@ -86,16 +87,14 @@ public class FoodFieldCard extends Dialog {
|
||||
app.getGameLogic().send(new BuyPropertyResponse());
|
||||
}));
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
backgroundContainer.setPreferredSize(foodFieldContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
foodFieldContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - foodFieldContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + foodFieldContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - foodFieldContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + foodFieldContainer.getPreferredSize().y+ padding) / 2,
|
||||
|
@ -18,7 +18,7 @@ import pp.monopoly.model.fields.GateField;
|
||||
import pp.monopoly.notification.Sound;
|
||||
|
||||
/**
|
||||
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||
* GateFieldCard creates the popup for field information
|
||||
*/
|
||||
public class GateFieldCard extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -31,7 +31,7 @@ public class GateFieldCard extends Dialog {
|
||||
this.app = app;
|
||||
|
||||
//Generate the corresponfing field
|
||||
int index = app.getGameLogic().getPlayerHandler().getPlayers().get(0).getFieldID();
|
||||
int index = app.getGameLogic().getPlayerHandler().getPlayerById(app.getId()).getFieldID();
|
||||
GateField field = (GateField) app.getGameLogic().getBoardManager().getFieldAtIndex(index);
|
||||
|
||||
// Halbtransparentes Overlay hinzufügen
|
||||
@ -47,6 +47,10 @@ public class GateFieldCard extends Dialog {
|
||||
gateFieldContainer = new Container();
|
||||
gateFieldContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f)));
|
||||
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des gateFieldContainers an
|
||||
backgroundContainer.setPreferredSize(gateFieldContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Titel
|
||||
// Die Namen werden dynamisch dem BoardManager entnommen
|
||||
Label gateFieldTitle = gateFieldContainer.addChild(new Label(field.getName(), new ElementId("settings-title")));
|
||||
@ -80,19 +84,16 @@ public class GateFieldCard extends Dialog {
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
app.getGameLogic().send(new BuyPropertyResponse());
|
||||
close();
|
||||
}));
|
||||
}));
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
backgroundContainer.setPreferredSize(gateFieldContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
gateFieldContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - gateFieldContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + gateFieldContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - gateFieldContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + gateFieldContainer.getPreferredSize().y+ padding) / 2,
|
||||
|
@ -25,7 +25,7 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||
* SellHouse is a popup which appears when a player clicks on the demolish-button in the BuildingAdminMenu
|
||||
*/
|
||||
public class SellHouse extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -36,65 +36,42 @@ public class SellHouse extends Dialog {
|
||||
public SellHouse(MonopolyApp app) {
|
||||
super(app.getDialogManager());
|
||||
this.app = app;
|
||||
|
||||
//Generate the corresponfing field
|
||||
//int index = app.getGameLogic().getPlayerHandler().getPlayers().get(0).getFieldID();;
|
||||
// BuildingProperty field = (BuildingProperty) new BoardManager().getFieldAtIndex(index);
|
||||
|
||||
// Create the background container
|
||||
backgroundContainer = new Container();
|
||||
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
||||
attachChild(backgroundContainer);
|
||||
|
||||
// Hauptcontainer für die Gebäudekarte
|
||||
// Hauptcontainer für das Menü
|
||||
sellhouseContainer = new Container();
|
||||
sellhouseContainer.setPreferredSize(new Vector3f(800, 600, 0));
|
||||
|
||||
|
||||
Label title = sellhouseContainer.addChild(new Label( "Gebäude Abreißen", new ElementId("label-Bold"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen
|
||||
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des sellhouseContainers an
|
||||
backgroundContainer.setPreferredSize(sellhouseContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
// Titel
|
||||
Label title = sellhouseContainer.addChild(new Label( "Gebäude Abreißen", new ElementId("warining-Bold")));
|
||||
title.setFontSize(48);
|
||||
title.setColor(ColorRGBA.Black);
|
||||
|
||||
//Unterteilund des sellHouseContainer in drei "Untercontainer"
|
||||
Container upContainer = sellhouseContainer.addChild(new Container());
|
||||
Container middleContainer = sellhouseContainer.addChild(new Container());
|
||||
Container downContainer = sellhouseContainer.addChild(new Container());
|
||||
|
||||
// Text, der auf der Karte steht
|
||||
// Die Preise werden dynamisch dem BoardManager entnommen
|
||||
upContainer.addChild(new Label("„Grundstück wählen:", new ElementId("label-Text"))); //TODO hier überall die entsprechenden Variablen einfügen
|
||||
upContainer.addChild(new Label("", new ElementId("label-Text")));// Leerzeile
|
||||
upContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
|
||||
middleContainer.setPreferredSize(new Vector3f(100, 150, 0));
|
||||
middleContainer.setBackground(new QuadBackgroundComponent(ColorRGBA.Orange));
|
||||
/*
|
||||
// Create a VersionedList for the ListBox model
|
||||
VersionedList<String> checkboxListModel = new VersionedList<>();
|
||||
for (int i = 1; i <= 10; i++) {
|
||||
checkboxListModel.add("Option " + i); // Add items to the list
|
||||
}
|
||||
|
||||
// Create a ListBox with the "glass" style and the model
|
||||
ListBox<String> checkboxListBox = new ListBox<>(checkboxListModel, "glass");
|
||||
checkboxListBox.setPreferredSize(new Vector3f(300, 200, 0)); // Adjust size as needed
|
||||
|
||||
// Add the ListBox to the middle container
|
||||
middleContainer.addChild(checkboxListBox);
|
||||
|
||||
// If you need separate checkboxes (optional), render them separately
|
||||
for (String option : checkboxListModel) {
|
||||
Checkbox checkbox = new Checkbox(option);
|
||||
checkbox.setFontSize(16); // Optional: adjust font size
|
||||
middleContainer.addChild(checkbox); // Add it to the middle container
|
||||
}
|
||||
// Add the ListBox to the middle container
|
||||
middleContainer.addChild(checkboxListBox); */
|
||||
|
||||
// Create a VersionedList for the ListBox model
|
||||
VersionedList<BuildingProperty> listModel = new VersionedList<>();
|
||||
|
||||
// Retrieve current player and their properties
|
||||
Player currentPlayer = app.getGameLogic().getPlayerHandler().getPlayers().get(0);
|
||||
Player currentPlayer = app.getGameLogic().getPlayerHandler().getPlayerById(app.getId());
|
||||
BoardManager boardManager = app.getGameLogic().getBoardManager();
|
||||
|
||||
List<BuildingProperty> playerProperties = boardManager.getPropertyFields(
|
||||
@ -129,14 +106,14 @@ public class SellHouse extends Dialog {
|
||||
downContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
|
||||
// Beenden-Button
|
||||
Button cancelButton = sellhouseContainer.addChild(new Button("Abbrechen", new ElementId("button"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen
|
||||
Button cancelButton = sellhouseContainer.addChild(new Button("Abbrechen", new ElementId("button")));
|
||||
cancelButton.setFontSize(32);
|
||||
cancelButton.addClickCommands(s -> ifTopDialog(() -> {
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
close();
|
||||
}));
|
||||
// Kaufen-Button
|
||||
Button confirmButton = sellhouseContainer.addChild(new Button("Bestätigen", new ElementId("button"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen
|
||||
Button confirmButton = sellhouseContainer.addChild(new Button("Bestätigen", new ElementId("button")));
|
||||
confirmButton.setFontSize(32);
|
||||
confirmButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||
app.getGameLogic().playSound(Sound.BUTTON);
|
||||
@ -148,19 +125,14 @@ public class SellHouse extends Dialog {
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
backgroundContainer.setPreferredSize(sellhouseContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
sellhouseContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - sellhouseContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + sellhouseContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - sellhouseContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + sellhouseContainer.getPreferredSize().y+ padding) / 2,
|
||||
|
@ -17,7 +17,7 @@ import pp.monopoly.notification.Sound;
|
||||
import static pp.monopoly.Resources.lookup;
|
||||
|
||||
/**
|
||||
* TimeOut ist ein Overlay-Menü, welches aufgerufen wird, wenn die Verbindung zum Server unterbrochen wurde.
|
||||
* TimeOut is a warning popup that is triggered when the connection to the server is interrupted.
|
||||
*/
|
||||
public class TimeOut extends Dialog {
|
||||
private final MonopolyApp app;
|
||||
@ -43,26 +43,24 @@ public class TimeOut extends Dialog {
|
||||
|
||||
|
||||
|
||||
// Hauptcontainer für die Gebäudekarte
|
||||
// Hauptcontainer für die Warnung
|
||||
timeOutContainer = new Container();
|
||||
timeOutContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f)));
|
||||
timeOutContainer.setPreferredSize(new Vector3f(550,250,10));
|
||||
|
||||
float padding = 10; // Padding around the settingsContainer for the background
|
||||
float padding = 10; // Passt den backgroundContainer an die Größe des bankruptContainers an
|
||||
backgroundContainer.setPreferredSize(timeOutContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||
|
||||
// Titel
|
||||
// Die Namen werden dynamisch dem BoardManager entnommen
|
||||
Label gateFieldTitle = timeOutContainer.addChild(new Label("Vorsicht !", new ElementId("settings-title"))); //TODO dicke Schrift
|
||||
Label gateFieldTitle = timeOutContainer.addChild(new Label("Vorsicht !", new ElementId("warning-title")));
|
||||
gateFieldTitle.setFontSize(48);
|
||||
gateFieldTitle.setColor(ColorRGBA.Black);
|
||||
|
||||
// Text, der auf der Karte steht
|
||||
// Die Preise werden dynamisch dem BoardManager entnommen
|
||||
Container propertyValuesContainer = timeOutContainer.addChild(new Container());
|
||||
propertyValuesContainer.addChild(new Label("Du hast die Verbindung verloren und kannst nichts dagegen machen. Akzeptiere einfach, dass du verloren hast!", new ElementId("label-Text")));
|
||||
propertyValuesContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
propertyValuesContainer.setPreferredSize(timeOutContainer.getPreferredSize().addLocal(-250,-200,0));
|
||||
Container textContainer = timeOutContainer.addChild(new Container());
|
||||
textContainer.addChild(new Label("Du hast die Verbindung verloren und kannst nichts dagegen machen. Akzeptiere einfach, dass du verloren hast!", new ElementId("label-Text")));
|
||||
textContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f)));
|
||||
textContainer.setPreferredSize(timeOutContainer.getPreferredSize().addLocal(-250,-200,0));
|
||||
|
||||
// Beenden-Button
|
||||
Button quitButton = timeOutContainer.addChild(new Button("Bestätigen", new ElementId("button")));
|
||||
@ -70,14 +68,14 @@ public class TimeOut extends Dialog {
|
||||
quitButton.addClickCommands(source -> close());
|
||||
|
||||
|
||||
// Zentriere das Menü
|
||||
// Zentriere das Popup
|
||||
timeOutContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - timeOutContainer.getPreferredSize().x) / 2,
|
||||
(app.getCamera().getHeight() + timeOutContainer.getPreferredSize().y) / 2,
|
||||
8
|
||||
);
|
||||
|
||||
|
||||
// Zentriere das Popup
|
||||
backgroundContainer.setLocalTranslation(
|
||||
(app.getCamera().getWidth() - timeOutContainer.getPreferredSize().x - padding) / 2,
|
||||
(app.getCamera().getHeight() + timeOutContainer.getPreferredSize().y+ padding) / 2,
|
||||
|
@ -226,12 +226,10 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
||||
@Override
|
||||
public void received(GameOver msg) {
|
||||
if (msg.isWinner()) {
|
||||
|
||||
//Winner popup
|
||||
notifyListeners(new PopUpEvent("Winner"));
|
||||
playSound(Sound.WINNER);
|
||||
} else {
|
||||
|
||||
// Looser popup
|
||||
notifyListeners(new PopUpEvent("Looser"));
|
||||
playSound(Sound.LOSER);
|
||||
}
|
||||
}
|
||||
@ -271,6 +269,7 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
||||
@Override
|
||||
public void received(PlayerStatusUpdate msg) {
|
||||
playerHandler = msg.getPlayerHandler();
|
||||
System.out.println("Update Player");
|
||||
notifyListeners(new UpdatePlayerView());
|
||||
}
|
||||
|
||||
@ -333,6 +332,6 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
||||
|
||||
@Override
|
||||
public void received(BuyPropertyRequest msg) {
|
||||
notifyListeners(new PopUpEvent());
|
||||
notifyListeners(new PopUpEvent("Buy"));
|
||||
}
|
||||
}
|
||||
|
@ -152,6 +152,7 @@ public class ServerGameLogic implements ClientInterpreter {
|
||||
System.out.println("Properties:" +player.getProperties().toString());
|
||||
LOGGER.log(Level.INFO, "Player {0} bought property {1}", player.getName(), property.getName());
|
||||
}
|
||||
updateAllPlayers();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -173,6 +174,7 @@ public class ServerGameLogic implements ClientInterpreter {
|
||||
send(player, new PlayerStatusUpdate(playerHandler));
|
||||
}
|
||||
}
|
||||
updateAllPlayers();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -218,6 +220,7 @@ public class ServerGameLogic implements ClientInterpreter {
|
||||
if (player != null) {
|
||||
send(player, player.rollDice());
|
||||
}
|
||||
updateAllPlayers();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -266,9 +269,13 @@ public class ServerGameLogic implements ClientInterpreter {
|
||||
if (sender != null) {
|
||||
LOGGER.log(Level.DEBUG, "Processing ViewAssetsRequest for player {0}", sender.getName());
|
||||
send(sender, new ViewAssetsResponse(boardManager));
|
||||
for (Player player : playerHandler.getPlayers()) {
|
||||
send(player, new PlayerStatusUpdate(playerHandler));
|
||||
}
|
||||
updateAllPlayers();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateAllPlayers() {
|
||||
for (Player player : playerHandler.getPlayers()) {
|
||||
send(player, new PlayerStatusUpdate(playerHandler));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package pp.monopoly.notification;
|
||||
|
||||
public record PopUpEvent() implements GameEvent{
|
||||
public record PopUpEvent(String msg) implements GameEvent{
|
||||
|
||||
@Override
|
||||
public void notifyListener(GameEventListener listener) {
|
||||
|
Loading…
Reference in New Issue
Block a user