bugfixes
This commit is contained in:
@@ -13,7 +13,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
|
||||
public class Lobby {
|
||||
@Language("RegExp")
|
||||
private static final String SESSION_NAME_PATTERN = "[a-zA-Z0-9_ ]{1,20}";
|
||||
private static final String SESSION_NAME_PATTERN = "[a-zA-Z0-9_' ]{1,20}";
|
||||
private static final Lobby INSTANCE = new Lobby();
|
||||
public static Lobby getInstance() {
|
||||
return INSTANCE;
|
||||
|
@@ -1,8 +1,11 @@
|
||||
package eu.jonahbauer.wizard.server;
|
||||
|
||||
import eu.jonahbauer.wizard.common.messages.client.InteractionMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.data.PlayerData;
|
||||
import eu.jonahbauer.wizard.common.messages.data.SessionData;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.ObserverMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.observer.UserInputMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.ContinueMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.player.PlayerMessage;
|
||||
import eu.jonahbauer.wizard.common.messages.server.*;
|
||||
import eu.jonahbauer.wizard.common.model.Configuration;
|
||||
@@ -28,7 +31,7 @@ import java.util.concurrent.ThreadLocalRandom;
|
||||
@EqualsAndHashCode(of = "uuid")
|
||||
public class Session implements Observer {
|
||||
@Language("RegExp")
|
||||
private static final String PLAYER_NAME_PATTERN = "[a-zA-Z0-9_ ]{1,20}";
|
||||
private static final String PLAYER_NAME_PATTERN = "[a-zA-Z0-9_' ]{1,20}";
|
||||
protected static final int MIN_PLAYERS = 3;
|
||||
protected static final int MAX_PLAYERS = 6;
|
||||
|
||||
@@ -240,6 +243,7 @@ public class Session implements Observer {
|
||||
var gameMessage = new GameMessage(message);
|
||||
notifyPlayers(gameMessage);
|
||||
messages.add(Pair.of(null, gameMessage));
|
||||
autoSync(null, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -247,6 +251,23 @@ public class Session implements Observer {
|
||||
var gameMessage = new GameMessage(message);
|
||||
players.get(player).send(gameMessage);
|
||||
messages.add(Pair.of(player, gameMessage));
|
||||
autoSync(player, message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically sends {@link ContinueMessage}s for disconnected players.
|
||||
*/
|
||||
private void autoSync(UUID player, ObserverMessage observerMessage) {
|
||||
if (observerMessage instanceof UserInputMessage userInput) {
|
||||
if (userInput.getAction() == UserInputMessage.Action.SYNC) {
|
||||
for (var p : (player != null ? List.of(player) : players.keySet())) {
|
||||
var sessionPlayer = players.get(p);
|
||||
if (sessionPlayer != null && !sessionPlayer.isConnected()) {
|
||||
game.onMessage(p, new ContinueMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
|
Reference in New Issue
Block a user