mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2025-04-17 12:40:59 +02:00
Compare commits
14 Commits
737576e0ca
...
a73384c436
Author | SHA1 | Date | |
---|---|---|---|
|
a73384c436 | ||
|
96542fa42b | ||
|
0d885203a7 | ||
|
e08654bb20 | ||
|
486c0a9810 | ||
|
0b71c2cb96 | ||
|
7f58558da4 | ||
|
94155d2816 | ||
|
0698c29410 | ||
|
ac9ced2cf4 | ||
|
fa554cbffc | ||
|
065049f663 | ||
|
580d81a621 | ||
|
7acf448c0c |
@ -15,7 +15,7 @@ import com.jme3.audio.AudioData;
|
|||||||
import com.jme3.audio.AudioNode;
|
import com.jme3.audio.AudioNode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the background music beeing played. Is able to start and stop the music. Set the Volume of the Audio.
|
* Handles the background music being played. Is able to start and stop the music. Set the Volume of the Audio.
|
||||||
*/
|
*/
|
||||||
public class GameMusic extends AbstractAppState{
|
public class GameMusic extends AbstractAppState{
|
||||||
private static final Logger LOGGER = System.getLogger(GameMusic.class.getName());
|
private static final Logger LOGGER = System.getLogger(GameMusic.class.getName());
|
||||||
|
@ -27,9 +27,25 @@ import static pp.util.PreferencesUtils.getPreferences;
|
|||||||
* An application state that plays sounds.
|
* An application state that plays sounds.
|
||||||
*/
|
*/
|
||||||
public class GameSound extends AbstractAppState implements GameEventListener {
|
public class GameSound extends AbstractAppState implements GameEventListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logger instance for logging messages related to GameSound.
|
||||||
|
*/
|
||||||
private static final Logger LOGGER = System.getLogger(GameSound.class.getName());
|
private static final Logger LOGGER = System.getLogger(GameSound.class.getName());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preferences instance for managing GameSound-related settings.
|
||||||
|
*/
|
||||||
private static final Preferences PREFERENCES = getPreferences(GameSound.class);
|
private static final Preferences PREFERENCES = getPreferences(GameSound.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preference key for enabling or disabling GameSound.
|
||||||
|
*/
|
||||||
private static final String ENABLED_PREF = "enabled"; //NON-NLS
|
private static final String ENABLED_PREF = "enabled"; //NON-NLS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preference key for storing the volume level of GameSound.
|
||||||
|
*/
|
||||||
private static final String VOLUME_PREF = "volume"; //NON-NLS
|
private static final String VOLUME_PREF = "volume"; //NON-NLS
|
||||||
|
|
||||||
private AudioNode passStartSound;
|
private AudioNode passStartSound;
|
||||||
@ -223,6 +239,11 @@ public class GameSound extends AbstractAppState implements GameEventListener {
|
|||||||
PREFERENCES.putFloat(VOLUME_PREF, vol);
|
PREFERENCES.putFloat(VOLUME_PREF, vol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides {@link SoundEvent#notifyListener(GameEventListener)}
|
||||||
|
* @param event the received event
|
||||||
|
*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receivedEvent(SoundEvent event) {
|
public void receivedEvent(SoundEvent event) {
|
||||||
switch (event.sound()) {
|
switch (event.sound()) {
|
||||||
|
@ -48,7 +48,7 @@ import pp.monopoly.notification.InfoTextEvent;
|
|||||||
import pp.monopoly.notification.Sound;
|
import pp.monopoly.notification.Sound;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The main class for the Battleship client application.
|
* The main class for the Monopoly client application.
|
||||||
* It manages the initialization, input setup, GUI setup, and game states for the client.
|
* It manages the initialization, input setup, GUI setup, and game states for the client.
|
||||||
*/
|
*/
|
||||||
public class MonopolyApp extends SimpleApplication implements MonopolyClient, GameEventListener {
|
public class MonopolyApp extends SimpleApplication implements MonopolyClient, GameEventListener {
|
||||||
@ -153,7 +153,7 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the Battleship application.
|
* Starts the Monopoly application.
|
||||||
*
|
*
|
||||||
* @param args Command-line arguments for launching the application.
|
* @param args Command-line arguments for launching the application.
|
||||||
*/
|
*/
|
||||||
@ -220,9 +220,9 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current configuration settings for the Battleship client.
|
* Returns the current configuration settings for the Monopoly client.
|
||||||
*
|
*
|
||||||
* @return The {@link BattleshipClientConfig} instance. //TODO Fehler im Kommentar
|
* @return The {@link pp.monopoly.game.client.MonopolyClientConfig} instance.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public MonopolyAppConfig getConfig() {
|
public MonopolyAppConfig getConfig() {
|
||||||
@ -276,7 +276,7 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//logik zum wechselnden erscheinen und verschwinden beim drücken von B //TODO süäter entfernen
|
//logik zum wechselnden erscheinen und verschwinden beim drücken von B //TODO später entfernen
|
||||||
private void handleB(boolean isPressed) {
|
private void handleB(boolean isPressed) {
|
||||||
if (isPressed) {
|
if (isPressed) {
|
||||||
Dialog tmp = new GulagInfo(this, 3);
|
Dialog tmp = new GulagInfo(this, 3);
|
||||||
@ -482,10 +482,24 @@ public class MonopolyApp extends SimpleApplication implements MonopolyClient, Ga
|
|||||||
.open();
|
.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disconnects the current server connection.
|
||||||
|
*
|
||||||
|
* This method delegates the disconnection operation to the `disconnect` method of the
|
||||||
|
* `serverConnection` object.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public void disconnect() {
|
public void disconnect() {
|
||||||
serverConnection.disconnect();
|
serverConnection.disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the unique identifier associated with the server connection.
|
||||||
|
*
|
||||||
|
* Checks if a Server is connected and returns {@Code 0} if there is no connection
|
||||||
|
*
|
||||||
|
* @return the ID of the connected Server instance.
|
||||||
|
*/
|
||||||
public int getId() {
|
public int getId() {
|
||||||
if (serverConnection != null && serverConnection instanceof NetworkSupport) return ((NetworkSupport) serverConnection).getId();
|
if (serverConnection != null && serverConnection instanceof NetworkSupport) return ((NetworkSupport) serverConnection).getId();
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -43,7 +43,6 @@ public class PropertyOverviewMenu extends Dialog {
|
|||||||
super(app.getDialogManager());
|
super(app.getDialogManager());
|
||||||
this.app = app;
|
this.app = app;
|
||||||
|
|
||||||
|
|
||||||
// Make the menu fullscreen
|
// Make the menu fullscreen
|
||||||
Vector3f screenSize = new Vector3f(app.getCamera().getWidth(), app.getCamera().getHeight(), 0);
|
Vector3f screenSize = new Vector3f(app.getCamera().getWidth(), app.getCamera().getHeight(), 0);
|
||||||
|
|
||||||
@ -231,6 +230,8 @@ public class PropertyOverviewMenu extends Dialog {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom listener for slider value changes.
|
* Custom listener for slider value changes.
|
||||||
|
* Extends {@link AbstractControl} to respond to updates in the slider's value and refresh
|
||||||
|
* the visible cards accordingly.
|
||||||
*/
|
*/
|
||||||
private class SliderValueChangeListener extends AbstractControl {
|
private class SliderValueChangeListener extends AbstractControl {
|
||||||
@Override
|
@Override
|
||||||
@ -240,6 +241,14 @@ public class PropertyOverviewMenu extends Dialog {
|
|||||||
refreshVisibleCards(sliderValue);
|
refreshVisibleCards(sliderValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides the rendering logic for the control.
|
||||||
|
* <p>
|
||||||
|
* This implementation does not require any rendering operations, so the method is left empty.
|
||||||
|
*
|
||||||
|
* @param renderManager the {@link RenderManager} handling the rendering process.
|
||||||
|
* @param viewPort the {@link ViewPort} associated with the rendering context.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void controlRender(RenderManager renderManager, ViewPort viewPort) {
|
protected void controlRender(RenderManager renderManager, ViewPort viewPort) {
|
||||||
// No rendering logic needed
|
// No rendering logic needed
|
||||||
|
@ -24,15 +24,30 @@ import pp.monopoly.notification.Sound;
|
|||||||
import static pp.util.PreferencesUtils.getPreferences;
|
import static pp.util.PreferencesUtils.getPreferences;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Menu class represents the main menu in the Battleship game application.
|
* The Menu class represents the main menu in the Monopoly game application.
|
||||||
* It extends the Dialog class and provides functionalities for loading, saving,
|
* It extends the Dialog class and provides functionalities for Volume adjustment, Sound adjustment,
|
||||||
* returning to the game, and quitting the application.
|
* returning to the game, and quitting the application.
|
||||||
*/
|
*/
|
||||||
public class SettingsMenu extends Dialog {
|
public class SettingsMenu extends Dialog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preferences instance for storing and retrieving settings specific to the SettingsMenu.
|
||||||
|
*/
|
||||||
private static final Preferences PREFERENCES = getPreferences(SettingsMenu.class);
|
private static final Preferences PREFERENCES = getPreferences(SettingsMenu.class);
|
||||||
private static final String LAST_PATH = "last.file.path";
|
|
||||||
|
/**
|
||||||
|
* Reference to the main Monopoly application instance.
|
||||||
|
*/
|
||||||
private final MonopolyApp app;
|
private final MonopolyApp app;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Slider control for adjusting the music volume.
|
||||||
|
*/
|
||||||
private final VolumeSlider musicSlider;
|
private final VolumeSlider musicSlider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Slider control for adjusting the sound effects volume.
|
||||||
|
*/
|
||||||
private final SoundSlider soundSlider;
|
private final SoundSlider soundSlider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,7 +5,14 @@ import pp.monopoly.client.GameSound;
|
|||||||
|
|
||||||
public class SoundSlider extends Slider {
|
public class SoundSlider extends Slider {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages sound effects for the game.
|
||||||
|
*/
|
||||||
private final pp.monopoly.client.GameSound sound;
|
private final pp.monopoly.client.GameSound sound;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Volume level for the game sounds.
|
||||||
|
*/
|
||||||
private double vol;
|
private double vol;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,7 +27,7 @@ public class SoundSlider extends Slider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* when triggered it updates the volume to the value set with the slider
|
* When triggered it updates the volume to the value set with the slider
|
||||||
*/
|
*/
|
||||||
public void update() {
|
public void update() {
|
||||||
if (vol != getModel().getPercent()) {
|
if (vol != getModel().getPercent()) {
|
||||||
|
@ -18,7 +18,6 @@ import pp.monopoly.notification.Sound;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs the startup menu dialog for the Monopoly application.
|
* Constructs the startup menu dialog for the Monopoly application.
|
||||||
import pp.monopoly.client.gui.GameMenu;
|
|
||||||
*/
|
*/
|
||||||
public class StartMenu extends Dialog {
|
public class StartMenu extends Dialog {
|
||||||
private final MonopolyApp app;
|
private final MonopolyApp app;
|
||||||
@ -42,25 +41,24 @@ public class StartMenu extends Dialog {
|
|||||||
Material backgroundMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
Material backgroundMaterial = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
backgroundMaterial.setTexture("ColorMap", backgroundImage);
|
backgroundMaterial.setTexture("ColorMap", backgroundImage);
|
||||||
background.setMaterial(backgroundMaterial);
|
background.setMaterial(backgroundMaterial);
|
||||||
background.setLocalTranslation(0, 0, -1); // Ensure it is behind other GUI elements
|
background.setLocalTranslation(0, 0, -1);
|
||||||
app.getGuiNode().attachChild(background);
|
app.getGuiNode().attachChild(background);
|
||||||
|
|
||||||
// Center container for title and play button
|
|
||||||
Container centerMenu = new Container(new SpringGridLayout(Axis.Y, Axis.X));
|
Container centerMenu = new Container(new SpringGridLayout(Axis.Y, Axis.X));
|
||||||
|
|
||||||
Button startButton = new Button("Spielen");
|
Button startButton = new Button("Spielen");
|
||||||
startButton.setPreferredSize(new Vector3f(190, 60, 0)); // Increase button size (width, height)
|
startButton.setPreferredSize(new Vector3f(190, 60, 0));
|
||||||
startButton.setFontSize(40); // Set the font size for the button text
|
startButton.setFontSize(40);
|
||||||
startButton.setTextHAlignment(HAlignment.Center); // Center the text horizontally
|
startButton.setTextHAlignment(HAlignment.Center);
|
||||||
|
|
||||||
startButton.addClickCommands(s -> ifTopDialog(() -> {
|
startButton.addClickCommands(s -> ifTopDialog(() -> {
|
||||||
close();
|
close();
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
app.connect(); // Perform the connection logic
|
app.connect();
|
||||||
}));
|
}));
|
||||||
centerMenu.addChild(startButton);
|
centerMenu.addChild(startButton);
|
||||||
|
|
||||||
// Position the center container in the middle of the screen
|
|
||||||
centerMenu.setLocalTranslation(new Vector3f(screenWidth / 2f - centerMenu.getPreferredSize().x / 2f,
|
centerMenu.setLocalTranslation(new Vector3f(screenWidth / 2f - centerMenu.getPreferredSize().x / 2f,
|
||||||
screenHeight / 2f - 280 + centerMenu.getPreferredSize().y / 2f,
|
screenHeight / 2f - 280 + centerMenu.getPreferredSize().y / 2f,
|
||||||
0));
|
0));
|
||||||
@ -74,38 +72,32 @@ public class StartMenu extends Dialog {
|
|||||||
QuadBackgroundComponent logoBackground = new QuadBackgroundComponent(logoTexture);
|
QuadBackgroundComponent logoBackground = new QuadBackgroundComponent(logoTexture);
|
||||||
logoContainer.setBackground(logoBackground);
|
logoContainer.setBackground(logoBackground);
|
||||||
|
|
||||||
// Set the size of the container to fit the logo
|
|
||||||
float logoWidth = 512; // Adjust these values based on the logo dimensions
|
float logoWidth = 512;
|
||||||
float logoHeight = 128; // Adjust these values based on the logo dimensions
|
float logoHeight = 128;
|
||||||
logoContainer.setPreferredSize(new Vector3f(logoWidth, logoHeight, 0));
|
logoContainer.setPreferredSize(new Vector3f(logoWidth, logoHeight, 0));
|
||||||
|
|
||||||
// Position the container at the center of the screen
|
|
||||||
logoContainer.setLocalTranslation(new Vector3f(
|
logoContainer.setLocalTranslation(new Vector3f(
|
||||||
screenWidth / 2f - logoWidth / 2f,
|
screenWidth / 2f - logoWidth / 2f,
|
||||||
screenHeight / 2f + 200, // Adjust this value for vertical position
|
screenHeight / 2f + 200,
|
||||||
0
|
0
|
||||||
));
|
));
|
||||||
|
|
||||||
// Attach the container to the GUI node
|
|
||||||
app.getGuiNode().attachChild(logoContainer);
|
app.getGuiNode().attachChild(logoContainer);
|
||||||
|
|
||||||
// Load the Unibw logo as a texture
|
|
||||||
Texture unibwTexture = app.getAssetManager().loadTexture("Pictures/logo-unibw.png");
|
Texture unibwTexture = app.getAssetManager().loadTexture("Pictures/logo-unibw.png");
|
||||||
|
|
||||||
// Create a container for the Unibw logo
|
|
||||||
Container unibwContainer = new Container();
|
Container unibwContainer = new Container();
|
||||||
QuadBackgroundComponent unibwBackground = new QuadBackgroundComponent(unibwTexture);
|
QuadBackgroundComponent unibwBackground = new QuadBackgroundComponent(unibwTexture);
|
||||||
unibwContainer.setBackground(unibwBackground);
|
unibwContainer.setBackground(unibwBackground);
|
||||||
|
|
||||||
// Set the size of the container to fit the Unibw logo
|
float unibwWidth = 512;
|
||||||
float unibwWidth = 512; // Adjust these values based on the logo dimensions
|
float unibwHeight = 128;
|
||||||
float unibwHeight = 128; // Adjust these values based on the logo dimensions
|
|
||||||
unibwContainer.setPreferredSize(new Vector3f(unibwWidth, unibwHeight, 0));
|
unibwContainer.setPreferredSize(new Vector3f(unibwWidth, unibwHeight, 0));
|
||||||
|
|
||||||
// Position the container slightly below the Monopoly logo
|
|
||||||
unibwContainer.setLocalTranslation(new Vector3f(
|
unibwContainer.setLocalTranslation(new Vector3f(
|
||||||
screenWidth / 2f - unibwWidth / 2f,
|
screenWidth / 2f - unibwWidth / 2f,
|
||||||
screenHeight / 2f + 100, // Adjust this value for vertical position
|
screenHeight / 2f + 100,
|
||||||
0
|
0
|
||||||
));
|
));
|
||||||
|
|
||||||
@ -113,11 +105,17 @@ public class StartMenu extends Dialog {
|
|||||||
app.getGuiNode().attachChild(unibwContainer);
|
app.getGuiNode().attachChild(unibwContainer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the settings menu when the escape key is pressed.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void escape() {
|
public void escape() {
|
||||||
new SettingsMenu(app).open();
|
new SettingsMenu(app).open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes the startup menu and detaches all GUI elements.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
app.getGuiNode().detachAllChildren();
|
app.getGuiNode().detachAllChildren();
|
||||||
|
@ -25,23 +25,93 @@ import pp.monopoly.notification.GameEventListener;
|
|||||||
import pp.monopoly.notification.Sound;
|
import pp.monopoly.notification.Sound;
|
||||||
import pp.monopoly.notification.UpdatePlayerView;
|
import pp.monopoly.notification.UpdatePlayerView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the toolbar interface in the Monopoly application.
|
||||||
|
* <p>
|
||||||
|
* This class provides game controls, player information, and event handling
|
||||||
|
* for actions such as dice rolling, trading, and ending turns.
|
||||||
|
* Implements {@link GameEventListener} to respond to game events.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
public class Toolbar extends Dialog implements GameEventListener {
|
public class Toolbar extends Dialog implements GameEventListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the Monopoly application instance.
|
||||||
|
*/
|
||||||
private final MonopolyApp app;
|
private final MonopolyApp app;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The main container for the toolbar interface.
|
||||||
|
*/
|
||||||
private final Container toolbarContainer;
|
private final Container toolbarContainer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Container for displaying an overview of other players.
|
||||||
|
*/
|
||||||
private Container overviewContainer;
|
private Container overviewContainer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Container for displaying account-related information.
|
||||||
|
*/
|
||||||
private Container accountContainer;
|
private Container accountContainer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles player-related data and actions.
|
||||||
|
*/
|
||||||
private PlayerHandler playerHandler;
|
private PlayerHandler playerHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Label for the first dice display.
|
||||||
|
*/
|
||||||
private Label imageLabel;
|
private Label imageLabel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Label for the second dice display.
|
||||||
|
*/
|
||||||
private Label imageLabel2;
|
private Label imageLabel2;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Button for rolling the dice.
|
||||||
|
*/
|
||||||
private Button diceButton;
|
private Button diceButton;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Button for initiating trades.
|
||||||
|
*/
|
||||||
private Button tradeButton;
|
private Button tradeButton;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Button for accessing the property menu.
|
||||||
|
*/
|
||||||
private Button propertyMenuButton;
|
private Button propertyMenuButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Button for ending the player's turn.
|
||||||
|
*/
|
||||||
private Button endTurnButton;
|
private Button endTurnButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flag indicating if dice animation is ongoing.
|
||||||
|
*/
|
||||||
private volatile boolean animatingDice = false;
|
private volatile boolean animatingDice = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores the most recent dice roll event.
|
||||||
|
*/
|
||||||
private volatile DiceRollEvent latestDiceRollEvent = null;
|
private volatile DiceRollEvent latestDiceRollEvent = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs the toolbar for the Monopoly application.
|
||||||
|
* <p>
|
||||||
|
* Initializes the toolbar interface, adds event listeners, and sets up
|
||||||
|
* the GUI elements such as dice, buttons, and player information displays.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param app the Monopoly application instance
|
||||||
|
*/
|
||||||
public Toolbar(MonopolyApp app) {
|
public Toolbar(MonopolyApp app) {
|
||||||
super(app.getDialogManager());
|
super(app.getDialogManager());
|
||||||
this.app = app;
|
this.app = app;
|
||||||
@ -217,6 +287,9 @@ public class Toolbar extends Dialog implements GameEventListener {
|
|||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Animates the dice roll by cycling through dice images.
|
||||||
|
*/
|
||||||
private void animateDice(long startTime) throws InterruptedException {
|
private void animateDice(long startTime) throws InterruptedException {
|
||||||
int[] currentFace = {1};
|
int[] currentFace = {1};
|
||||||
while (System.currentTimeMillis() - startTime < 2000) { // Animation duration
|
while (System.currentTimeMillis() - startTime < 2000) { // Animation duration
|
||||||
@ -234,6 +307,11 @@ public class Toolbar extends Dialog implements GameEventListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the final dice result after animation.
|
||||||
|
*
|
||||||
|
* @param event the dice roll event containing the result
|
||||||
|
*/
|
||||||
private void showFinalDiceResult(DiceRollEvent event) {
|
private void showFinalDiceResult(DiceRollEvent event) {
|
||||||
app.enqueue(() -> {
|
app.enqueue(() -> {
|
||||||
setDiceIcon(imageLabel, diceToString(event.a()));
|
setDiceIcon(imageLabel, diceToString(event.a()));
|
||||||
@ -260,11 +338,21 @@ public class Toolbar extends Dialog implements GameEventListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles dice roll events by updating the dice display.
|
||||||
|
*
|
||||||
|
* @param event the dice roll event containing dice values
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void receivedEvent(DiceRollEvent event) {
|
public void receivedEvent(DiceRollEvent event) {
|
||||||
latestDiceRollEvent = event;
|
latestDiceRollEvent = event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the player view with the latest account and overview data.
|
||||||
|
*
|
||||||
|
* @param event the update event for the player view
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void receivedEvent(UpdatePlayerView event) {
|
public void receivedEvent(UpdatePlayerView event) {
|
||||||
playerHandler = app.getGameLogic().getPlayerHandler();
|
playerHandler = app.getGameLogic().getPlayerHandler();
|
||||||
@ -306,6 +394,11 @@ public class Toolbar extends Dialog implements GameEventListener {
|
|||||||
overviewContainer.setBackground(null);
|
overviewContainer.setBackground(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the enabled status of toolbar buttons based on the event.
|
||||||
|
*
|
||||||
|
* @param event the button status event
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void receivedEvent(ButtonStatusEvent event) {
|
public void receivedEvent(ButtonStatusEvent event) {
|
||||||
boolean enabled = event.buttonsEnabled();
|
boolean enabled = event.buttonsEnabled();
|
||||||
@ -315,17 +408,26 @@ public class Toolbar extends Dialog implements GameEventListener {
|
|||||||
endTurnButton.setEnabled(enabled);
|
endTurnButton.setEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes the toolbar and detaches it from the GUI.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
app.getGuiNode().detachChild(toolbarContainer);
|
app.getGuiNode().detachChild(toolbarContainer);
|
||||||
super.close();
|
super.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the settings menu when the escape key is pressed.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void escape() {
|
public void escape() {
|
||||||
new SettingsMenu(app).open();
|
new SettingsMenu(app).open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the toolbar by refreshing player information.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
receivedEvent(new UpdatePlayerView());
|
receivedEvent(new UpdatePlayerView());
|
||||||
|
@ -88,8 +88,10 @@ public class TradeMenu extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setTrades() {
|
private void setTrades() {
|
||||||
tradeHandler.setOfferedAmount(Integer.parseInt(leftCurrencyInput.getText()));
|
String leftCurreny = leftCurrencyInput.getText().equals("")? "0" : leftCurrencyInput.getText();
|
||||||
tradeHandler.setRequestedAmount(Integer.parseInt(rightCurrencyInput.getText()));
|
String rightCurreny = rightCurrencyInput.getText().equals("")? "0" : rightCurrencyInput.getText();
|
||||||
|
tradeHandler.setOfferedAmount(Integer.parseInt(leftCurreny));
|
||||||
|
tradeHandler.setRequestedAmount(Integer.parseInt(rightCurreny));
|
||||||
tradeHandler.setOfferedJailCards(Integer.parseInt(leftSpecialCardSelector.getSelectedItem()));
|
tradeHandler.setOfferedJailCards(Integer.parseInt(leftSpecialCardSelector.getSelectedItem()));
|
||||||
tradeHandler.setRequestedJailCards(Integer.parseInt(rightSpecialCardSelector.getSelectedItem()));
|
tradeHandler.setRequestedJailCards(Integer.parseInt(rightSpecialCardSelector.getSelectedItem()));
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ public class VolumeSlider extends Slider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* when triggered it updates the volume to the value set with the slider
|
* When triggered it updates the volume to the value set with the slider
|
||||||
*/
|
*/
|
||||||
public void update() {
|
public void update() {
|
||||||
if (vol != getModel().getPercent()) {
|
if (vol != getModel().getPercent()) {
|
||||||
|
@ -67,19 +67,19 @@ public class BuildingPropertyCard extends Dialog {
|
|||||||
// Beenden-Button
|
// Beenden-Button
|
||||||
Button quitButton = buildingPropertyContainer.addChild(new Button("Beenden", new ElementId("button")));
|
Button quitButton = buildingPropertyContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||||
quitButton.setFontSize(32);
|
quitButton.setFontSize(32);
|
||||||
quitButton.addClickCommands(s -> {
|
quitButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||||
System.err.println("Button does something?");
|
System.err.println("Button does something?");
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
close();
|
close();
|
||||||
});
|
}));
|
||||||
// Kaufen-Button
|
// Kaufen-Button
|
||||||
Button buyButton = buildingPropertyContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
Button buyButton = buildingPropertyContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||||
buyButton.setFontSize(32);
|
buyButton.setFontSize(32);
|
||||||
buyButton.addClickCommands(s -> {
|
buyButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
close();
|
close();
|
||||||
app.getGameLogic().send(new BuyPropertyResponse());
|
app.getGameLogic().send(new BuyPropertyResponse());
|
||||||
});
|
}));
|
||||||
|
|
||||||
// Zentriere das Popup
|
// Zentriere das Popup
|
||||||
buildingPropertyContainer.setLocalTranslation(
|
buildingPropertyContainer.setLocalTranslation(
|
||||||
|
@ -63,10 +63,10 @@ public class EventCardPopup extends Dialog {
|
|||||||
// Beenden-Button
|
// Beenden-Button
|
||||||
Button quitButton = eventCardContainer.addChild(new Button("Jawohl", new ElementId("button")));
|
Button quitButton = eventCardContainer.addChild(new Button("Jawohl", new ElementId("button")));
|
||||||
quitButton.setFontSize(32);
|
quitButton.setFontSize(32);
|
||||||
quitButton.addClickCommands(source -> {
|
quitButton.addClickCommands(source -> ifTopDialog( () -> {
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
close();
|
close();
|
||||||
});
|
}));
|
||||||
|
|
||||||
// Zentriere das Popup
|
// Zentriere das Popup
|
||||||
eventCardContainer.setLocalTranslation(
|
eventCardContainer.setLocalTranslation(
|
||||||
|
@ -77,18 +77,18 @@ public class FoodFieldCard extends Dialog {
|
|||||||
// Beenden-Button
|
// Beenden-Button
|
||||||
Button quitButton = foodFieldContainer.addChild(new Button("Beenden", new ElementId("button")));
|
Button quitButton = foodFieldContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||||
quitButton.setFontSize(32);
|
quitButton.setFontSize(32);
|
||||||
quitButton.addClickCommands(s -> {
|
quitButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
close();
|
close();
|
||||||
});
|
}));
|
||||||
// Kaufen-Button
|
// Kaufen-Button
|
||||||
Button buyButton = foodFieldContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
Button buyButton = foodFieldContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||||
buyButton.setFontSize(32);
|
buyButton.setFontSize(32);
|
||||||
buyButton.addClickCommands(s -> {
|
buyButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
app.getGameLogic().send(new BuyPropertyResponse());
|
app.getGameLogic().send(new BuyPropertyResponse());
|
||||||
close();
|
close();
|
||||||
});
|
}));
|
||||||
|
|
||||||
// Zentriere das Popup
|
// Zentriere das Popup
|
||||||
foodFieldContainer.setLocalTranslation(
|
foodFieldContainer.setLocalTranslation(
|
||||||
|
@ -69,18 +69,18 @@ public class GateFieldCard extends Dialog {
|
|||||||
// Beenden-Button
|
// Beenden-Button
|
||||||
Button quitButton = gateFieldContainer.addChild(new Button("Beenden", new ElementId("button")));
|
Button quitButton = gateFieldContainer.addChild(new Button("Beenden", new ElementId("button")));
|
||||||
quitButton.setFontSize(32);
|
quitButton.setFontSize(32);
|
||||||
quitButton.addClickCommands(s -> {
|
quitButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
close();
|
close();
|
||||||
});
|
}));
|
||||||
// Kaufen-Button
|
// Kaufen-Button
|
||||||
Button buyButton = gateFieldContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
Button buyButton = gateFieldContainer.addChild(new Button("Kaufen", new ElementId("button")));
|
||||||
buyButton.setFontSize(32);
|
buyButton.setFontSize(32);
|
||||||
buyButton.addClickCommands(s -> {
|
buyButton.addClickCommands(s -> ifTopDialog( () -> {
|
||||||
app.getGameLogic().playSound(Sound.BUTTON);
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
app.getGameLogic().send(new BuyPropertyResponse());
|
app.getGameLogic().send(new BuyPropertyResponse());
|
||||||
close();
|
close();
|
||||||
});
|
}));
|
||||||
|
|
||||||
// Zentriere das Popup
|
// Zentriere das Popup
|
||||||
gateFieldContainer.setLocalTranslation(
|
gateFieldContainer.setLocalTranslation(
|
||||||
|
@ -13,6 +13,7 @@ import com.simsilica.lemur.component.QuadBackgroundComponent;
|
|||||||
import com.simsilica.lemur.style.ElementId;
|
import com.simsilica.lemur.style.ElementId;
|
||||||
import pp.dialog.Dialog;
|
import pp.dialog.Dialog;
|
||||||
import pp.monopoly.client.MonopolyApp;
|
import pp.monopoly.client.MonopolyApp;
|
||||||
|
import pp.monopoly.notification.Sound;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gulag is a warning popup that is triggered when a certain player enters the "Wache" field
|
* Gulag is a warning popup that is triggered when a certain player enters the "Wache" field
|
||||||
@ -54,17 +55,13 @@ public class Gulag extends Dialog {
|
|||||||
gateFieldTitle.setFontSize(48);
|
gateFieldTitle.setFontSize(48);
|
||||||
gateFieldTitle.setColor(ColorRGBA.Black);
|
gateFieldTitle.setColor(ColorRGBA.Black);
|
||||||
|
|
||||||
// Text, der auf der Karte steht
|
|
||||||
/* Container textContainer = gulagContainer.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(gulagContainer.getPreferredSize().addLocal(-250,-200,0));
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Beenden-Button
|
// Beenden-Button
|
||||||
Button quitButton = gulagContainer.addChild(new Button("Jawohl Gulag", new ElementId("button")));
|
Button quitButton = gulagContainer.addChild(new Button("Jawohl Gulag", new ElementId("button")));
|
||||||
quitButton.setFontSize(32);
|
quitButton.setFontSize(32);
|
||||||
quitButton.addClickCommands(source -> close());
|
quitButton.addClickCommands(source -> ifTopDialog(() -> {
|
||||||
|
app.getGameLogic().playSound(Sound.BUTTON);
|
||||||
|
close();
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
// Zentriere das Popup
|
// Zentriere das Popup
|
||||||
|
@ -209,7 +209,7 @@ public class ServerGameLogic implements ClientInterpreter {
|
|||||||
|
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
String name = msg.getName();
|
String name = msg.getName();
|
||||||
String truc = name.length() > 15 ? name.substring(0, 15) : name;
|
String truc = name.length() > 10 ? name.substring(0, 15) : name;
|
||||||
player.setName(truc);
|
player.setName(truc);
|
||||||
player.setFigure(new Figure(1, -10, -10, Rotation.LEFT, msg.getFigure()));
|
player.setFigure(new Figure(1, -10, -10, Rotation.LEFT, msg.getFigure()));
|
||||||
//TODO add figure to the map
|
//TODO add figure to the map
|
||||||
|
Loading…
Reference in New Issue
Block a user