37 lines
1.4 KiB
Java
37 lines
1.4 KiB
Java
package uulm.teamname.marvelous.server.lobby.pipelining;
|
|
|
|
import org.tinylog.Logger;
|
|
import uulm.teamname.marvelous.gamelibrary.entities.EntityType;
|
|
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
|
import uulm.teamname.marvelous.gamelibrary.gamelogic.GameInstance;
|
|
import uulm.teamname.marvelous.gamelibrary.messages.ParticipantType;
|
|
import uulm.teamname.marvelous.gamelibrary.messages.server.EventMessage;
|
|
import uulm.teamname.marvelous.gamelibrary.requests.RequestType;
|
|
|
|
import java.util.List;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
/**
|
|
* The {@link RequestTurnEndSegment} handles requests of {@link RequestType} EndRoundRequest. It filters invalid turn end requests.
|
|
*/
|
|
public class RequestTurnEndSegment implements Segment {
|
|
|
|
private final GameInstance game;
|
|
|
|
|
|
public RequestTurnEndSegment(GameInstance game) {
|
|
this.game = game;
|
|
}
|
|
|
|
@Override
|
|
public void processRequests(Packet packet, List<Event> carrier, AtomicBoolean abort) {
|
|
Logger.trace("RequestTurnEndSegment received {} requests", packet.size());
|
|
var active = game.state.getActiveCharacter().type;
|
|
var from = packet.getOrigin().type == ParticipantType.PlayerOne ? EntityType.P1 : EntityType.P2;
|
|
if (packet.containsRequestOfType(RequestType.EndRoundRequest) && active != from) {
|
|
Logger.trace("Invalid end turn request. Aborting");
|
|
abort.set(true);
|
|
}
|
|
}
|
|
}
|