send Trades

This commit is contained in:
Johannes Schmelz
2024-11-30 15:15:30 +01:00
parent 2c536f32cf
commit b681b13468
9 changed files with 147 additions and 122 deletions

View File

@@ -300,13 +300,13 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
*/
@Override
public void received(TradeReply msg) {
if (msg.getTradeHandler().getStatus()) {
// if (msg.getTradeHandler().getStatus()) {
playSound(Sound.TRADE_ACCEPTED);
} else {
// playSound(Sound.TRADE_ACCEPTED);
// } else {
playSound(Sound.TRADE_REJECTED);
}
// playSound(Sound.TRADE_REJECTED);
// }
}
/**
@@ -316,7 +316,8 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
*/
@Override
public void received(TradeRequest msg) {
System.out.println("Angebot angekommen");
notifyListeners(new PopUpEvent("tradeRequest"));
}
/**

View File

@@ -232,11 +232,11 @@ public class ServerGameLogic implements ClientInterpreter {
@Override
public void received(TradeOffer msg, int from) {
Player sender = playerHandler.getPlayerById(from);
Player receiver = playerHandler.getPlayerById(msg.getReceiverId());
Player receiver = msg.getTradeHandler().getReceiver();
if (sender != null && receiver != null) {
LOGGER.log(Level.INFO, "Player {0} offers a trade to player {1}", sender.getName(), receiver.getName());
send(playerHandler.getPlayerById(msg.getReceiverId()), new TradeRequest(msg.getReceiverId(), msg.getTradeHandler()));
send(receiver, new TradeRequest(msg.getTradeHandler()));
}
}

View File

@@ -9,7 +9,6 @@ import pp.monopoly.model.TradeHandler;
*/
@Serializable
public class TradeOffer extends ClientMessage{
private int receiverId;
private TradeHandler tradehandler;
/**
@@ -23,12 +22,10 @@ public class TradeOffer extends ClientMessage{
* @param receiverId the ID of the player receiving the Request
* @param tradehandler the tradehandler
*/
public TradeOffer(int receiverId, TradeHandler tradehandler) {
this.receiverId = receiverId;
public TradeOffer(TradeHandler tradehandler) {
this.tradehandler = tradehandler;
}
public int getReceiverId() { return receiverId; }
public TradeHandler getTradeHandler() { return tradehandler; }
@Override

View File

@@ -9,7 +9,6 @@ import pp.monopoly.model.TradeHandler;
*/
@Serializable
public class TradeRequest extends ServerMessage{
private int receiverId;
private TradeHandler tradehandler;
@@ -24,12 +23,10 @@ public class TradeRequest extends ServerMessage{
* @param receiverId the ID of the player receiving the Request
* @param tradehandler the tradehandler
*/
public TradeRequest(int receiverId, TradeHandler tradehandler) {
this.receiverId = receiverId;
public TradeRequest(TradeHandler tradehandler) {
this.tradehandler = tradehandler;
}
public int getReceiverId() { return receiverId; }
public TradeHandler getTradeHandler() { return tradehandler; }

View File

@@ -3,23 +3,30 @@ package pp.monopoly.model;
import pp.monopoly.game.server.Player;
import pp.monopoly.model.fields.PropertyField;
import java.util.List;
import java.util.HashSet;
import java.util.Set;
import com.jme3.network.serializing.Serializable;
/**
* Handles a single trade between two players.
* Encapsulates trade details, validation, acceptance, and rejection.
*/
@Serializable
public class TradeHandler {
private final Player sender;
private Player receiver;
private int offeredAmount;
private List<PropertyField> offeredProperties;
private Set<PropertyField> offeredProperties = new HashSet<>();
private int offeredJailCards;
private int requestedAmount;
private List<PropertyField> requestedProperties;
private Set<PropertyField> requestedProperties = new HashSet<>();
private int requestedJailCards;
private Boolean status = null;
private TradeHandler() {
sender = null;
}
/**
* Constructs a TradeHandler for a single trade instance.
@@ -33,8 +40,8 @@ public class TradeHandler {
* @param requestedProperties the properties requested from the receiver
* @param requestedJailCards the jail cards requested from the receiver
*/
public TradeHandler(Player sender, Player receiver, int offeredAmount, List<PropertyField> offeredProperties,
int offeredJailCards, int requestedAmount, List<PropertyField> requestedProperties, int requestedJailCards) {
public TradeHandler(Player sender, Player receiver, int offeredAmount, Set<PropertyField> offeredProperties,
int offeredJailCards, int requestedAmount, Set<PropertyField> requestedProperties, int requestedJailCards) {
this.sender = sender;
this.receiver = receiver;
this.offeredAmount = offeredAmount;
@@ -69,7 +76,7 @@ public class TradeHandler {
return offeredJailCards;
}
public List<PropertyField> getOfferedProperties() {
public Set<PropertyField> getOfferedProperties() {
return offeredProperties;
}
@@ -85,7 +92,7 @@ public class TradeHandler {
return requestedJailCards;
}
public List<PropertyField> getRequestedProperties() {
public Set<PropertyField> getRequestedProperties() {
return requestedProperties;
}
@@ -93,10 +100,6 @@ public class TradeHandler {
return sender;
}
public Boolean getStatus() {
return status;
}
/**
* Initiates the trade and validates its terms.
*
@@ -234,7 +237,7 @@ public class TradeHandler {
this.offeredJailCards = offeredJailCards;
}
public void setOfferedProperties(List<PropertyField> offeredProperties) {
public void setOfferedProperties(Set<PropertyField> offeredProperties) {
this.offeredProperties = offeredProperties;
}
@@ -250,7 +253,7 @@ public class TradeHandler {
this.requestedJailCards = requestedJailCards;
}
public void setRequestedProperties(List<PropertyField> requestedProperties) {
public void setRequestedProperties(Set<PropertyField> requestedProperties) {
this.requestedProperties = requestedProperties;
}
}

View File

@@ -72,6 +72,15 @@ public class BoardManager {
return fields;
}
public Field getFieldByName(String name) {
for (Field field : board) {
if (field.getName().equals(name)) {
return field;
}
}
throw new NoSuchElementException();
}
/**
* Method to find the Field at specific index