mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2025-08-03 13:07:43 +02:00
lock button when not active
This commit is contained in:
@@ -5,10 +5,8 @@ import java.lang.System.Logger.Level;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import pp.monopoly.game.server.Player;
|
||||
import pp.monopoly.game.server.PlayerHandler;
|
||||
import pp.monopoly.message.client.ClientMessage;
|
||||
import pp.monopoly.message.server.BuyPropertyResponse;
|
||||
import pp.monopoly.message.server.DiceResult;
|
||||
import pp.monopoly.message.server.EventDrawCard;
|
||||
import pp.monopoly.message.server.GameOver;
|
||||
@@ -26,6 +24,7 @@ import pp.monopoly.model.IntPoint;
|
||||
import pp.monopoly.model.fields.BoardManager;
|
||||
import pp.monopoly.notification.ClientStateEvent;
|
||||
import pp.monopoly.notification.DiceRollEvent;
|
||||
import pp.monopoly.notification.ButtonStatusEvent;
|
||||
import pp.monopoly.notification.EventCardEvent;
|
||||
import pp.monopoly.notification.GameEvent;
|
||||
import pp.monopoly.notification.GameEventBroker;
|
||||
@@ -194,21 +193,6 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
||||
state.update(delta);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the response for buying a property.
|
||||
*
|
||||
* @param msg the message containing the buy property response
|
||||
*/
|
||||
@Override
|
||||
public void received(BuyPropertyResponse msg) {
|
||||
if (msg.isSuccessful()) {
|
||||
|
||||
playSound(Sound.MONEY_LOST);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the result of a dice roll.
|
||||
*
|
||||
@@ -258,7 +242,7 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
||||
public void received(GameStart msg) {
|
||||
playerHandler = msg.getPlayerHandler();
|
||||
setState(new WaitForTurnState(this));
|
||||
|
||||
notifyListeners(new ButtonStatusEvent(false));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -342,7 +326,7 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
|
||||
*/
|
||||
@Override
|
||||
public void received(NextPlayerTurn msg) {
|
||||
|
||||
notifyListeners(new ButtonStatusEvent(true));
|
||||
setState(new ActiveState(this));
|
||||
}
|
||||
}
|
||||
|
@@ -15,6 +15,7 @@ import com.jme3.network.serializing.Serializable;
|
||||
|
||||
import pp.monopoly.message.server.DiceResult;
|
||||
import pp.monopoly.message.server.EventDrawCard;
|
||||
import pp.monopoly.message.server.NextPlayerTurn;
|
||||
import pp.monopoly.message.server.PlayerStatusUpdate;
|
||||
import pp.monopoly.model.FieldVisitor;
|
||||
import pp.monopoly.model.Figure;
|
||||
@@ -44,7 +45,9 @@ public class Player implements FieldVisitor<Void>{
|
||||
private int fieldID;
|
||||
private DiceResult rollResult;
|
||||
private transient final PlayerHandler handler;
|
||||
private transient PlayerState state = new LobbyState();
|
||||
private transient PlayerState state = new WaitForTurnState();
|
||||
private int doubletscounter = 0;
|
||||
private boolean mayRollDice = false;
|
||||
|
||||
/**
|
||||
* Default constructor for serialization purposes.
|
||||
@@ -127,6 +130,8 @@ public class Player implements FieldVisitor<Void>{
|
||||
}
|
||||
void setActive() {
|
||||
state = new ActiveState();
|
||||
doubletscounter = 0;
|
||||
mayRollDice = true;
|
||||
}
|
||||
|
||||
boolean finishTurn() {
|
||||
@@ -162,9 +167,23 @@ public class Player implements FieldVisitor<Void>{
|
||||
earnMoney(2000);
|
||||
}
|
||||
figure.moveTo(fieldID);
|
||||
handler.getLogic().getBoardManager().getFieldAtIndex(fieldID).accept(this);
|
||||
return fieldID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player to the specified Position on the board
|
||||
* @param position the position to move to
|
||||
* @return the new position
|
||||
*/
|
||||
public int setPosition(int position){
|
||||
if(position < 40 && position > 0) {
|
||||
fieldID = position;
|
||||
figure.moveTo(fieldID);
|
||||
handler.getLogic().getBoardManager().getFieldAtIndex(fieldID).accept(this);
|
||||
}
|
||||
return fieldID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the properties owned by this player
|
||||
@@ -330,15 +349,13 @@ public class Player implements FieldVisitor<Void>{
|
||||
|
||||
@Override
|
||||
public Void visit(WacheField field) {
|
||||
movePos(10);
|
||||
setPosition(10);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visit(GoField field) {
|
||||
earnMoney(2000);
|
||||
GulagField res = (GulagField) handler.getLogic().getBoardManager().getFieldAtIndex(10);
|
||||
res.accept(this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -410,11 +427,21 @@ public class Player implements FieldVisitor<Void>{
|
||||
* @return a List of two integers representing the dice roll results
|
||||
*/
|
||||
DiceResult rollDice() {
|
||||
return state.rollDice();
|
||||
}
|
||||
|
||||
private void visitEvent() {
|
||||
getHandler().getLogic().getBoardManager().getFieldAtIndex(36).accept(this);
|
||||
if (mayRollDice) {
|
||||
state.rollDice();
|
||||
}
|
||||
if (rollResult.isDoublets()) {
|
||||
doubletscounter++;
|
||||
mayRollDice = true;
|
||||
getHandler().getLogic().send(this, new NextPlayerTurn());
|
||||
setName(name);
|
||||
if (doubletscounter >= 3) {
|
||||
setPosition(10);
|
||||
}
|
||||
} else {
|
||||
mayRollDice = false;
|
||||
}
|
||||
return rollResult;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -464,31 +491,6 @@ public class Player implements FieldVisitor<Void>{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* A class to represent the Lobby PlayerState
|
||||
* Set when in Lobby
|
||||
*/
|
||||
private class LobbyState implements PlayerState{
|
||||
|
||||
@Override
|
||||
public DiceResult rollDice() {
|
||||
//do nothing
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void payBail() {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void useJailCard() {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* A class to represent the Jailed PlayerState
|
||||
* Set when in Gulag
|
||||
|
@@ -169,12 +169,14 @@ public class ServerGameLogic implements ClientInterpreter {
|
||||
@Override
|
||||
public void received(EndTurn msg, int from) {
|
||||
Player player = playerHandler.getPlayerById(from);
|
||||
if (player != null && state == ServerState.INGAME) {
|
||||
if (player != null && player == playerHandler.getPlayerAtIndex(0)) {
|
||||
if (player.finishTurn()) {
|
||||
LOGGER.log(Level.DEBUG, "Ending turn for player {0}", player.getName());
|
||||
Player next = playerHandler.nextPlayer();
|
||||
next.setActive();
|
||||
send(next, new NextPlayerTurn());
|
||||
send(next, new PlayerStatusUpdate(playerHandler));
|
||||
send(player, new PlayerStatusUpdate(playerHandler));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,47 +0,0 @@
|
||||
package pp.monopoly.message.server;
|
||||
|
||||
import com.jme3.network.serializing.Serializable;
|
||||
|
||||
/**
|
||||
* Represents the server's response to a player's request to buy a property.
|
||||
*/
|
||||
@Serializable
|
||||
public class BuyPropertyResponse extends ServerMessage{
|
||||
private boolean successful;
|
||||
private String propertyName;
|
||||
private String reason; // Reason for failure, if any
|
||||
|
||||
/**
|
||||
* Default constructor for serialization purposes.
|
||||
*/
|
||||
private BuyPropertyResponse() { /* empty */ }
|
||||
|
||||
public BuyPropertyResponse(boolean successful, String propertyName, String reason) {
|
||||
this.successful = successful;
|
||||
this.propertyName = propertyName;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
public boolean isSuccessful() {
|
||||
return successful;
|
||||
}
|
||||
|
||||
public String getPropertyName() {
|
||||
return propertyName;
|
||||
}
|
||||
|
||||
public String getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(ServerInterpreter interpreter) {
|
||||
interpreter.received(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfoTextKey() {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'getInfoTextKey'");
|
||||
}
|
||||
}
|
@@ -13,13 +13,6 @@ package pp.monopoly.message.server;
|
||||
*/
|
||||
public interface ServerInterpreter {
|
||||
|
||||
/**
|
||||
* Handles a BuyPropertyResponse message received from the server.
|
||||
*
|
||||
* @param msg the BuyPropertyResponse message received
|
||||
*/
|
||||
void received(BuyPropertyResponse msg);
|
||||
|
||||
/**
|
||||
* Handles a DiceResult message received from the server.
|
||||
*
|
||||
|
@@ -0,0 +1,13 @@
|
||||
package pp.monopoly.notification;
|
||||
|
||||
public record ButtonStatusEvent(boolean buttonsEnabled) implements GameEvent{
|
||||
/**
|
||||
* Notifies the game event listener of this event.
|
||||
*
|
||||
* @param listener the game event listener
|
||||
*/
|
||||
@Override
|
||||
public void notifyListener(GameEventListener listener) {
|
||||
listener.receivedEvent(this);
|
||||
}
|
||||
}
|
@@ -66,4 +66,11 @@ public interface GameEventListener {
|
||||
* @param event the received event
|
||||
*/
|
||||
default void receivedEvent(EventCardEvent event) { /*Do nothing */}
|
||||
|
||||
/**
|
||||
* Indicates that all buttons in the toolbar should be disabled
|
||||
*
|
||||
* @param event the received event
|
||||
*/
|
||||
default void receivedEvent(ButtonStatusEvent event) { /*Do nothing */}
|
||||
}
|
||||
|
Reference in New Issue
Block a user