doc: added documentation for Lobby classes
This commit is contained in:
parent
7f512400df
commit
bbaeb63bb6
@ -27,6 +27,16 @@ public class Lobby {
|
|||||||
private PauseSegment pauseSegment;
|
private PauseSegment pauseSegment;
|
||||||
private final TurnTimer turnTimer;
|
private final TurnTimer turnTimer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Lobby} is where the magic happens.
|
||||||
|
* In this class is a whole {@link GameInstance game} is processed.
|
||||||
|
* To initialize the game it gets the following parameters
|
||||||
|
* @param gameID a String to identify the game
|
||||||
|
* @param connection the Connection to the {@link uulm.teamname.marvelous.server.lobbymanager.LobbyManager}
|
||||||
|
* @param partyConfig declared in Editor
|
||||||
|
* @param characterConfig declared in Editor
|
||||||
|
* @param scenarioConfig declared in Editor
|
||||||
|
*/
|
||||||
public Lobby(
|
public Lobby(
|
||||||
String gameID,
|
String gameID,
|
||||||
LobbyConnection connection,
|
LobbyConnection connection,
|
||||||
@ -95,6 +105,10 @@ public class Lobby {
|
|||||||
updateTimer();
|
updateTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called at the end of receiveRequests, to start a timer.
|
||||||
|
* The active player has now a specific amount of time to do his moves.
|
||||||
|
*/
|
||||||
void updateTimer() {
|
void updateTimer() {
|
||||||
var currentActiveCharacterType = game.state.getActiveCharacter().type;
|
var currentActiveCharacterType = game.state.getActiveCharacter().type;
|
||||||
if (pauseSegment.isPaused()) {
|
if (pauseSegment.isPaused()) {
|
||||||
|
@ -7,6 +7,9 @@ import java.util.Timer;
|
|||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link TurnTimer} class is called by the {@link Lobby} to limit the amount of time a player has per round.
|
||||||
|
*/
|
||||||
public class TurnTimer {
|
public class TurnTimer {
|
||||||
private final Timer timer;
|
private final Timer timer;
|
||||||
private final Consumer<Participant> callback;
|
private final Consumer<Participant> callback;
|
||||||
@ -18,6 +21,10 @@ public class TurnTimer {
|
|||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method checks if the participant is not a spectator. Otherwise it won't start a timer.
|
||||||
|
* @param participant the timer is for
|
||||||
|
*/
|
||||||
public void startTurnTimer(Participant participant) {
|
public void startTurnTimer(Participant participant) {
|
||||||
if (participant.type == ParticipantType.Spectator)
|
if (participant.type == ParticipantType.Spectator)
|
||||||
throw new IllegalStateException("Spectators don't have TurnTime");
|
throw new IllegalStateException("Spectators don't have TurnTime");
|
||||||
|
@ -9,6 +9,10 @@ import uulm.teamname.marvelous.server.lobby.Lobby;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link DisconnectSegment} handles requests of {@link RequestType} DisconnectRequest.
|
||||||
|
* Therefore it removes the disconnecting player-connection from the {@link Lobby}.
|
||||||
|
*/
|
||||||
public class DisconnectSegment implements Segment {
|
public class DisconnectSegment implements Segment {
|
||||||
|
|
||||||
private final Lobby parent;
|
private final Lobby parent;
|
||||||
@ -17,7 +21,6 @@ public class DisconnectSegment implements Segment {
|
|||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processRequests(Packet packet, List<Event> carrier, AtomicBoolean abort) {
|
public void processRequests(Packet packet, List<Event> carrier, AtomicBoolean abort) {
|
||||||
Logger.trace("DisconnectSegment received {} requests.", packet.size());
|
Logger.trace("DisconnectSegment received {} requests.", packet.size());
|
||||||
|
@ -11,9 +11,14 @@ import uulm.teamname.marvelous.server.lobby.Lobby;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link GameStateSegment} handles all {@link GameInstance game} relevant {@link Request Requests}.
|
||||||
|
* Therefore it updates the game with the matching request.
|
||||||
|
*/
|
||||||
public class GameStateSegment implements Segment {
|
public class GameStateSegment implements Segment {
|
||||||
private GameInstance game;
|
private GameInstance game;
|
||||||
|
|
||||||
|
|
||||||
public GameStateSegment(GameInstance game){
|
public GameStateSegment(GameInstance game){
|
||||||
this.game = game;
|
this.game = game;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,10 @@ import uulm.teamname.marvelous.server.lobbymanager.Participant;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Packet} contains all {@link Request Requests} and the belonging {@link Participant}.
|
||||||
|
* You can add and remove {@link Request Requests} at will.
|
||||||
|
*/
|
||||||
public class Packet extends ArrayList<Request> {
|
public class Packet extends ArrayList<Request> {
|
||||||
|
|
||||||
private final Participant origin;
|
private final Participant origin;
|
||||||
@ -15,6 +19,11 @@ public class Packet extends ArrayList<Request> {
|
|||||||
addAll(Arrays.asList(requests));
|
addAll(Arrays.asList(requests));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method checks if a {@link RequestType} is part of the {@link Packet} or not
|
||||||
|
* @param requiredType RequestType to check.
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
public boolean containsRequestOfType(RequestType requiredType) {
|
public boolean containsRequestOfType(RequestType requiredType) {
|
||||||
for (Request request : this) {
|
for (Request request : this) {
|
||||||
if (request.type == requiredType) {
|
if (request.type == requiredType) {
|
||||||
@ -24,11 +33,19 @@ public class Packet extends ArrayList<Request> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method removes all {@link Request Requests} of given {@link RequestType types} from the {@link Packet}.
|
||||||
|
* @param types RequestType(s) to remove
|
||||||
|
*/
|
||||||
public void removeRequestsOfTypes(RequestType... types) {
|
public void removeRequestsOfTypes(RequestType... types) {
|
||||||
var listOfTypes = Arrays.asList(types);
|
var listOfTypes = Arrays.asList(types);
|
||||||
this.removeIf(request -> listOfTypes.contains(request.type));
|
this.removeIf(request -> listOfTypes.contains(request.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method removes all {@link Request Requests} except of given {@link RequestType types} from the {@link Packet}.
|
||||||
|
* @param types RequestType(s) to not remove
|
||||||
|
*/
|
||||||
public void removeRequestsNotOfTypes(RequestType... types) {
|
public void removeRequestsNotOfTypes(RequestType... types) {
|
||||||
var listOfTypes = Arrays.asList(types);
|
var listOfTypes = Arrays.asList(types);
|
||||||
this.removeIf(request -> !listOfTypes.contains(request.type));
|
this.removeIf(request -> !listOfTypes.contains(request.type));
|
||||||
|
@ -11,6 +11,9 @@ import uulm.teamname.marvelous.gamelibrary.requests.RequestType;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link PauseSegment} can pause and unpause a game.
|
||||||
|
*/
|
||||||
public class PauseSegment implements Segment {
|
public class PauseSegment implements Segment {
|
||||||
|
|
||||||
private boolean paused;
|
private boolean paused;
|
||||||
@ -19,18 +22,23 @@ public class PauseSegment implements Segment {
|
|||||||
paused = false;
|
paused = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method pauses the game if it is not already paused.
|
||||||
|
*/
|
||||||
public void pauseGame(){
|
public void pauseGame(){
|
||||||
if(!paused) {
|
if(!paused) {
|
||||||
paused = true;
|
paused = true;
|
||||||
Logger.debug("{}: Game paused.",
|
Logger.debug("Game paused.");
|
||||||
Thread.currentThread().getName());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method ends a paused game.
|
||||||
|
*/
|
||||||
public void pauseEnd(){
|
public void pauseEnd(){
|
||||||
if(paused) {
|
if(paused) {
|
||||||
paused = false;
|
paused = false;
|
||||||
Logger.debug("{}: Game unpaused.",
|
Logger.debug("Game unpaused.");
|
||||||
Thread.currentThread().getName());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,10 +10,15 @@ import uulm.teamname.marvelous.server.lobby.Lobby;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link RequestGameStateSegment} handles requests of {@link RequestType} Req.
|
||||||
|
* Therefore it sends the active gamestate and clears the {@link Packet} afterwards.
|
||||||
|
*/
|
||||||
public class RequestGameStateSegment implements Segment {
|
public class RequestGameStateSegment implements Segment {
|
||||||
|
|
||||||
private final GameInstance game;
|
private final GameInstance game;
|
||||||
|
|
||||||
|
|
||||||
public RequestGameStateSegment(GameInstance game) {
|
public RequestGameStateSegment(GameInstance game) {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user