mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2025-04-05 19:26:05 +02:00
Merge remote-tracking branch 'origin/gui' into gui
This commit is contained in:
commit
41127565fc
@ -15,13 +15,13 @@ import pp.monopoly.client.MonopolyApp;
|
|||||||
import pp.monopoly.client.gui.SettingsMenu;
|
import pp.monopoly.client.gui.SettingsMenu;
|
||||||
import pp.monopoly.model.fields.BoardManager;
|
import pp.monopoly.model.fields.BoardManager;
|
||||||
import pp.monopoly.model.fields.BuildingProperty;
|
import pp.monopoly.model.fields.BuildingProperty;
|
||||||
|
import pp.monopoly.notification.Sound;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
* SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann.
|
||||||
*/
|
*/
|
||||||
public class BuyCard extends Dialog {
|
public class BuyCard extends Dialog {
|
||||||
private final MonopolyApp app;
|
private final MonopolyApp app;
|
||||||
private final Geometry overlayBackground;
|
|
||||||
private final Container buyCardContainer;
|
private final Container buyCardContainer;
|
||||||
private final Container backgroundContainer;
|
private final Container backgroundContainer;
|
||||||
|
|
||||||
@ -34,22 +34,18 @@ public class BuyCard extends Dialog {
|
|||||||
//Generate the corresponfing field
|
//Generate the corresponfing field
|
||||||
BuildingProperty field = (BuildingProperty) new BoardManager().getFieldAtIndex(index);
|
BuildingProperty field = (BuildingProperty) new BoardManager().getFieldAtIndex(index);
|
||||||
|
|
||||||
// Halbtransparentes Overlay hinzufügen
|
|
||||||
overlayBackground = createOverlayBackground();
|
|
||||||
app.getGuiNode().attachChild(overlayBackground);
|
|
||||||
|
|
||||||
// Create the background container
|
// Create the background container
|
||||||
backgroundContainer = new Container();
|
backgroundContainer = new Container();
|
||||||
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
backgroundContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.8657f, 0.8735f, 0.8892f, 1.0f))); // Darker background
|
||||||
app.getGuiNode().attachChild(backgroundContainer);
|
attachChild(backgroundContainer);
|
||||||
|
|
||||||
// Hauptcontainer für die Gebäudekarte
|
// Hauptcontainer für die Gebäudekarte
|
||||||
buyCardContainer = new Container();
|
buyCardContainer = new Container();
|
||||||
buyCardContainer.setBackground(new QuadBackgroundComponent(field.getColor().getColor()));
|
|
||||||
|
|
||||||
|
Label title = buyCardContainer.addChild(new Label( field.getName(), new ElementId("label-Bold")));
|
||||||
Label settingsTitle = buyCardContainer.addChild(new Label( field.getName(), new ElementId("settings-title")));
|
title.setBackground(new QuadBackgroundComponent(field.getColor().getColor()));
|
||||||
settingsTitle.setFontSize(48);
|
title.setFontSize(48);
|
||||||
|
|
||||||
// Text, der auf der Karte steht
|
// Text, der auf der Karte steht
|
||||||
// Die Preise werden dynamisch dem BoardManager entnommen
|
// Die Preise werden dynamisch dem BoardManager entnommen
|
||||||
@ -70,9 +66,17 @@ public class BuyCard extends Dialog {
|
|||||||
// Beenden-Button
|
// Beenden-Button
|
||||||
Button quitButton = buyCardContainer.addChild(new Button("Beenden", new ElementId("button")));
|
Button quitButton = buyCardContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||||
quitButton.setFontSize(32);
|
quitButton.setFontSize(32);
|
||||||
|
quitButton.addClickCommands(s -> ifTopDialog(() -> {
|
||||||
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
|
close();
|
||||||
|
}));
|
||||||
// Kaufen-Button
|
// Kaufen-Button
|
||||||
Button buyButton = buyCardContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
Button buyButton = buyCardContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||||
buyButton.setFontSize(32);
|
buyButton.setFontSize(32);
|
||||||
|
buyButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||||
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
|
//TODO send buy property request
|
||||||
|
}));
|
||||||
|
|
||||||
float padding = 10; // Padding around the settingsContainer for the background
|
float padding = 10; // Padding around the settingsContainer for the background
|
||||||
backgroundContainer.setPreferredSize(buyCardContainer.getPreferredSize().addLocal(padding, padding, 0));
|
backgroundContainer.setPreferredSize(buyCardContainer.getPreferredSize().addLocal(padding, padding, 0));
|
||||||
@ -94,22 +98,6 @@ public class BuyCard extends Dialog {
|
|||||||
app.getGuiNode().attachChild(buyCardContainer);
|
app.getGuiNode().attachChild(buyCardContainer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.
|
* Schließt das Menü und entfernt die GUI-Elemente.
|
||||||
*/
|
*/
|
||||||
@ -117,7 +105,6 @@ public class BuyCard extends Dialog {
|
|||||||
public void close() {
|
public void close() {
|
||||||
app.getGuiNode().detachChild(buyCardContainer); // Entferne das Menü
|
app.getGuiNode().detachChild(buyCardContainer); // Entferne das Menü
|
||||||
app.getGuiNode().detachChild(backgroundContainer); //Entfernt Rand
|
app.getGuiNode().detachChild(backgroundContainer); //Entfernt Rand
|
||||||
app.getGuiNode().detachChild(overlayBackground); // Entferne das Overlay
|
|
||||||
super.close();
|
super.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pp.monopoly.game.server.Player;
|
import pp.monopoly.game.server.Player;
|
||||||
|
import pp.monopoly.game.server.PlayerHandler;
|
||||||
import pp.monopoly.message.client.ClientMessage;
|
import pp.monopoly.message.client.ClientMessage;
|
||||||
import pp.monopoly.message.server.BuyPropertyResponse;
|
import pp.monopoly.message.server.BuyPropertyResponse;
|
||||||
import pp.monopoly.message.server.DiceResult;
|
import pp.monopoly.message.server.DiceResult;
|
||||||
@ -52,7 +53,7 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
|||||||
/** The current state of the client game logic. */
|
/** The current state of the client game logic. */
|
||||||
private ClientState state = new LobbyState(this);
|
private ClientState state = new LobbyState(this);
|
||||||
|
|
||||||
private List<Player> players;
|
private PlayerHandler playerHandler;
|
||||||
|
|
||||||
private BoardManager boardManager = new BoardManager();
|
private BoardManager boardManager = new BoardManager();
|
||||||
|
|
||||||
@ -94,8 +95,8 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
|||||||
state.entry();
|
state.entry();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Player> getPlayers() {
|
public PlayerHandler getPlayerHandler() {
|
||||||
return players;
|
return playerHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -255,7 +256,7 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void received(GameStart msg) {
|
public void received(GameStart msg) {
|
||||||
players = msg.getPlayers();
|
playerHandler = msg.getPlayerHandler();
|
||||||
setState(new WaitForTurnState(this));
|
setState(new WaitForTurnState(this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -40,8 +40,8 @@ public class Player implements FieldVisitor<Void>{
|
|||||||
private int getOutOfJailCard;
|
private int getOutOfJailCard;
|
||||||
private int fieldID;
|
private int fieldID;
|
||||||
private DiceResult rollResult;
|
private DiceResult rollResult;
|
||||||
private final PlayerHandler handler;
|
private transient final PlayerHandler handler;
|
||||||
private PlayerState state = new LobbyState();
|
private transient PlayerState state = new LobbyState();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor for serialization purposes.
|
* Default constructor for serialization purposes.
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package pp.monopoly.game.server;
|
package pp.monopoly.game.server;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -18,7 +17,7 @@ import pp.monopoly.model.LimitedLinkedList;
|
|||||||
public class PlayerHandler {
|
public class PlayerHandler {
|
||||||
private List<Player> players = new LimitedLinkedList<>(6);
|
private List<Player> players = new LimitedLinkedList<>(6);
|
||||||
private Set<Player> readyPlayers = new HashSet<>();
|
private Set<Player> readyPlayers = new HashSet<>();
|
||||||
private ServerGameLogic logic;
|
private transient ServerGameLogic logic;
|
||||||
private Player hostPlayer;
|
private Player hostPlayer;
|
||||||
private Player extra = null;
|
private Player extra = null;
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ public class ServerGameLogic implements ClientInterpreter {
|
|||||||
if(playerHandler.allPlayersReady()) {
|
if(playerHandler.allPlayersReady()) {
|
||||||
playerHandler.setStartBalance(startMoney);
|
playerHandler.setStartBalance(startMoney);
|
||||||
for (Player p : playerHandler.getPlayers()) {
|
for (Player p : playerHandler.getPlayers()) {
|
||||||
send(p, new GameStart(playerHandler.getPlayers()));
|
send(p, new GameStart(playerHandler));
|
||||||
}
|
}
|
||||||
playerHandler.randomOrder();
|
playerHandler.randomOrder();
|
||||||
send(playerHandler.getPlayerAtIndex(0), new NextPlayerTurn());
|
send(playerHandler.getPlayerAtIndex(0), new NextPlayerTurn());
|
||||||
|
@ -1,27 +1,25 @@
|
|||||||
package pp.monopoly.message.server;
|
package pp.monopoly.message.server;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.jme3.network.serializing.Serializable;
|
import com.jme3.network.serializing.Serializable;
|
||||||
|
|
||||||
import pp.monopoly.game.server.Player;
|
import pp.monopoly.game.server.PlayerHandler;
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
public class GameStart extends ServerMessage{
|
public class GameStart extends ServerMessage{
|
||||||
|
|
||||||
private List<Player> players;
|
private PlayerHandler playerHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor for serialization purposes.
|
* Default constructor for serialization purposes.
|
||||||
*/
|
*/
|
||||||
private GameStart() { /* empty */ }
|
private GameStart() { /* empty */ }
|
||||||
|
|
||||||
public GameStart(List<Player> players) {
|
public GameStart(PlayerHandler playerHandler) {
|
||||||
this.players = players;
|
this.playerHandler = playerHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Player> getPlayers() {
|
public PlayerHandler getPlayerHandler() {
|
||||||
return players;
|
return playerHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -43,18 +43,6 @@ import pp.monopoly.message.server.ServerMessage;
|
|||||||
import pp.monopoly.model.Figure;
|
import pp.monopoly.model.Figure;
|
||||||
import pp.monopoly.model.IntPoint;
|
import pp.monopoly.model.IntPoint;
|
||||||
import pp.monopoly.model.LimitedLinkedList;
|
import pp.monopoly.model.LimitedLinkedList;
|
||||||
import pp.monopoly.model.fields.BuildingProperty;
|
|
||||||
import pp.monopoly.model.fields.EventField;
|
|
||||||
import pp.monopoly.model.fields.Field;
|
|
||||||
import pp.monopoly.model.fields.FieldColor;
|
|
||||||
import pp.monopoly.model.fields.FineField;
|
|
||||||
import pp.monopoly.model.fields.FoodField;
|
|
||||||
import pp.monopoly.model.fields.GateField;
|
|
||||||
import pp.monopoly.model.fields.GoField;
|
|
||||||
import pp.monopoly.model.fields.GulagField;
|
|
||||||
import pp.monopoly.model.fields.PropertyField;
|
|
||||||
import pp.monopoly.model.fields.TestStreckeField;
|
|
||||||
import pp.monopoly.model.fields.WacheField;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Server implementing the visitor pattern as MessageReceiver for ClientMessages
|
* Server implementing the visitor pattern as MessageReceiver for ClientMessages
|
||||||
@ -141,19 +129,7 @@ public class MonopolyServer implements MessageListener<HostedConnection>, Connec
|
|||||||
Serializer.registerClass(NextPlayerTurn.class);
|
Serializer.registerClass(NextPlayerTurn.class);
|
||||||
Serializer.registerClass(Player.class);
|
Serializer.registerClass(Player.class);
|
||||||
Serializer.registerClass(Figure.class);
|
Serializer.registerClass(Figure.class);
|
||||||
// Serializer.registerClass(PlayerHandler.class);
|
Serializer.registerClass(PlayerHandler.class);
|
||||||
// Serializer.registerClass(BuildingProperty.class);
|
|
||||||
// Serializer.registerClass(EventField.class);
|
|
||||||
// Serializer.registerClass(Field.class);
|
|
||||||
// // Serializer.registerClass(FieldColor.class);
|
|
||||||
// Serializer.registerClass(FineField.class);
|
|
||||||
// Serializer.registerClass(FoodField.class);
|
|
||||||
// Serializer.registerClass(GateField.class);
|
|
||||||
// Serializer.registerClass(GoField.class);
|
|
||||||
// Serializer.registerClass(GulagField.class);
|
|
||||||
// Serializer.registerClass(PropertyField.class);
|
|
||||||
// Serializer.registerClass(TestStreckeField.class);
|
|
||||||
// Serializer.registerClass(WacheField.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerListeners() {
|
private void registerListeners() {
|
||||||
|
Loading…
Reference in New Issue
Block a user