This commit is contained in:
2022-01-12 12:51:22 +01:00
parent ec77b05b0d
commit 2375a5ed83
35 changed files with 102 additions and 128 deletions

View File

@@ -1,6 +1,5 @@
package eu.jonahbauer.wizard.server;
import eu.jonahbauer.wizard.common.messages.client.CreateSessionMessage;
import eu.jonahbauer.wizard.common.messages.server.ServerMessage;
import eu.jonahbauer.wizard.common.messages.server.SessionCreatedMessage;
import eu.jonahbauer.wizard.common.messages.server.SessionListMessage;
@@ -26,17 +25,12 @@ public class Lobby {
private Lobby() {}
public Session createSession(CreateSessionMessage create) {
public Session createSession(@NotNull String name, long timeout, @NotNull Configuration configuration) {
lock.readLock().lock();
try {
Session session;
do {
session = new Session(
UUID.randomUUID(),
create.getSessionName(),
create.getTimeout(),
create.getConfiguration()
);
session = new Session(UUID.randomUUID(), name, timeout, configuration);
} while (sessions.putIfAbsent(session.getUuid(), session) != null);
notifyPlayers(new SessionCreatedMessage(session.toData()));

View File

@@ -1,9 +1,11 @@
package eu.jonahbauer.wizard.server;
import eu.jonahbauer.wizard.common.messages.server.NackMessage;
import lombok.Getter;
import org.intellij.lang.annotations.MagicConstant;
public class NackException extends RuntimeException {
@Getter(onMethod = @__({@MagicConstant(valuesFromClass = NackMessage.class)}))
private final int code;
public NackException(@MagicConstant(valuesFromClass = NackMessage.class) int code, String message) {
@@ -11,11 +13,6 @@ public class NackException extends RuntimeException {
this.code = code;
}
@MagicConstant(valuesFromClass = NackMessage.class)
public int getCode() {
return code;
}
public NackMessage toMessage() {
return new NackMessage(code, getMessage());
}

View File

@@ -26,7 +26,11 @@ public class LobbyState implements ClientState {
Lobby.getInstance().leave(player);
try {
player.buffer();
var session = Lobby.getInstance().createSession(create);
var session = Lobby.getInstance().createSession(
create.getSessionName(),
create.getTimeout(),
create.getConfiguration()
);
var uuid = session.join(player, create.getPlayerName());
return Optional.of(new SessionState(session.getUuid(), uuid, create.getPlayerName()));
} catch (NackException nack) {