added running flag to SessionData
This commit is contained in:
parent
53d738a532
commit
565a1bcbff
@ -0,0 +1,53 @@
|
|||||||
|
package eu.jonahbauer.wizard.client.libgdx.actors;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.List;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
|
||||||
|
import com.badlogic.gdx.utils.Align;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
public abstract class IconList<T> extends List<T> {
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private float iconWidth = -1;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private float iconPadding = 8;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public IconList(Skin skin) {
|
||||||
|
super(skin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public IconList(Skin skin, String styleName) {
|
||||||
|
super(skin, styleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public IconList(ListStyle style) {
|
||||||
|
super(style);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Drawable getIcon(T item);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
|
public void setAlignment(int alignment) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected GlyphLayout drawItem(Batch batch, BitmapFont font, int index, T item, float x, float y, float width) {
|
||||||
|
var text = toString(item);
|
||||||
|
var icon = getIcon(item);
|
||||||
|
var height = font.getCapHeight();
|
||||||
|
var iconWidth = this.iconWidth < 0 ? height : this.iconWidth;
|
||||||
|
|
||||||
|
icon.draw(batch, x, y - height, iconWidth, height);
|
||||||
|
return font.draw(batch, text, x + iconWidth + iconPadding, y, 0, text.length(), width - iconWidth - iconPadding, Align.left, false, "...");
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,10 @@ package eu.jonahbauer.wizard.client.libgdx.screens;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
|
||||||
|
import eu.jonahbauer.wizard.client.libgdx.UiskinAtlas;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
||||||
|
import eu.jonahbauer.wizard.client.libgdx.actors.IconList;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.listeners.ResetErrorListener;
|
import eu.jonahbauer.wizard.client.libgdx.listeners.ResetErrorListener;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.state.Lobby;
|
import eu.jonahbauer.wizard.client.libgdx.state.Lobby;
|
||||||
@ -17,7 +20,6 @@ public class LobbyScreen extends MenuScreen {
|
|||||||
|
|
||||||
private TextButton buttonBack;
|
private TextButton buttonBack;
|
||||||
private TextButton buttonJoin;
|
private TextButton buttonJoin;
|
||||||
private TextButton buttonRejoin;
|
|
||||||
private TextButton buttonCreate;
|
private TextButton buttonCreate;
|
||||||
|
|
||||||
private TextField playerName;
|
private TextField playerName;
|
||||||
@ -26,6 +28,7 @@ public class LobbyScreen extends MenuScreen {
|
|||||||
private Label labelSessionConfiguration;
|
private Label labelSessionConfiguration;
|
||||||
|
|
||||||
private UUID selectedSession;
|
private UUID selectedSession;
|
||||||
|
private boolean rejoin = false;
|
||||||
private List<SessionData> sessions;
|
private List<SessionData> sessions;
|
||||||
private ScrollPane sessionListContainer;
|
private ScrollPane sessionListContainer;
|
||||||
|
|
||||||
@ -36,14 +39,15 @@ public class LobbyScreen extends MenuScreen {
|
|||||||
game.getClient().execute(Lobby.class, Lobby::disconnect);
|
game.getClient().execute(Lobby.class, Lobby::disconnect);
|
||||||
sfxClick();
|
sfxClick();
|
||||||
} else if (actor == buttonJoin) {
|
} else if (actor == buttonJoin) {
|
||||||
join();
|
if (rejoin) {
|
||||||
|
game.getClient().execute(Lobby.class, Lobby::showRejoinScreen);
|
||||||
|
} else {
|
||||||
|
join();
|
||||||
|
}
|
||||||
sfxClick();
|
sfxClick();
|
||||||
} else if (actor == buttonCreate) {
|
} else if (actor == buttonCreate) {
|
||||||
game.getClient().execute(Lobby.class, Lobby::showCreateScreen);
|
game.getClient().execute(Lobby.class, Lobby::showCreateScreen);
|
||||||
sfxClick();
|
sfxClick();
|
||||||
} else if (actor == buttonRejoin) {
|
|
||||||
game.getClient().execute(Lobby.class, Lobby::showRejoinScreen);
|
|
||||||
sfxClick();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -64,21 +68,26 @@ public class LobbyScreen extends MenuScreen {
|
|||||||
buttonCreate.addListener(listener);
|
buttonCreate.addListener(listener);
|
||||||
getButtonGroup().addActor(buttonCreate);
|
getButtonGroup().addActor(buttonCreate);
|
||||||
|
|
||||||
buttonRejoin = new TextButton(messages.get("menu.lobby.rejoin"), skin);
|
|
||||||
buttonRejoin.addListener(listener);
|
|
||||||
getButtonGroup().addActor(buttonRejoin);
|
|
||||||
|
|
||||||
buttonJoin = new TextButton(messages.get("menu.lobby.join"), skin);
|
buttonJoin = new TextButton(messages.get("menu.lobby.join"), skin);
|
||||||
buttonJoin.addListener(listener);
|
buttonJoin.addListener(listener);
|
||||||
getButtonGroup().addActor(buttonJoin);
|
getButtonGroup().addActor(buttonJoin);
|
||||||
|
|
||||||
getButtonGroup().setWidth(0.55f * WizardGame.WIDTH);
|
getButtonGroup().setWidth(0.55f * WizardGame.WIDTH);
|
||||||
|
|
||||||
sessions = new List<>(skin) {
|
sessions = new IconList<>(skin) {
|
||||||
|
// TODO better icons
|
||||||
|
private final Drawable running = skin.getDrawable(UiskinAtlas.NOT_READY);
|
||||||
|
private final Drawable notRunning = skin.getDrawable(UiskinAtlas.READY);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(SessionData session) {
|
public String toString(SessionData session) {
|
||||||
return session.getName();
|
return session.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Drawable getIcon(SessionData item) {
|
||||||
|
return item.isRunning() ? running : notRunning;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
sessions.addListener(new ChangeListener() {
|
sessions.addListener(new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -102,12 +111,11 @@ public class LobbyScreen extends MenuScreen {
|
|||||||
|
|
||||||
stage.addActor(content);
|
stage.addActor(content);
|
||||||
stage.addCaptureListener(new KeyboardFocusManager(
|
stage.addCaptureListener(new KeyboardFocusManager(
|
||||||
sessions, playerName, buttonBack, buttonCreate, buttonRejoin, buttonJoin
|
sessions, playerName, buttonBack, buttonCreate, buttonJoin
|
||||||
));
|
));
|
||||||
|
|
||||||
buttonBack.setName("button_back");
|
buttonBack.setName("button_back");
|
||||||
buttonJoin.setName("button_join");
|
buttonJoin.setName("button_join");
|
||||||
buttonJoin.setName("button_rejoin");
|
|
||||||
buttonCreate.setName("button_create");
|
buttonCreate.setName("button_create");
|
||||||
sessions.setName("session_list");
|
sessions.setName("session_list");
|
||||||
playerName.setName("player_name");
|
playerName.setName("player_name");
|
||||||
@ -194,14 +202,21 @@ public class LobbyScreen extends MenuScreen {
|
|||||||
labelSessionPlayerCount.setText(Integer.toString(data.getPlayerCount()));
|
labelSessionPlayerCount.setText(Integer.toString(data.getPlayerCount()));
|
||||||
labelSessionConfiguration.setText(data.getConfiguration().toString());
|
labelSessionConfiguration.setText(data.getConfiguration().toString());
|
||||||
selectedSession = data.getUuid();
|
selectedSession = data.getUuid();
|
||||||
|
updateRejoin(data.isRunning());
|
||||||
} else {
|
} else {
|
||||||
labelSessionName.setText("");
|
labelSessionName.setText("");
|
||||||
labelSessionPlayerCount.setText("");
|
labelSessionPlayerCount.setText("");
|
||||||
labelSessionConfiguration.setText("");
|
labelSessionConfiguration.setText("");
|
||||||
selectedSession = null;
|
selectedSession = null;
|
||||||
|
updateRejoin(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateRejoin(boolean rejoin) {
|
||||||
|
this.rejoin = rejoin;
|
||||||
|
buttonJoin.setText(messages.get("menu.lobby." + (rejoin ? "rejoin" : "join")));
|
||||||
|
}
|
||||||
|
|
||||||
private void join() {
|
private void join() {
|
||||||
boolean error = false;
|
boolean error = false;
|
||||||
|
|
||||||
|
@ -1,15 +1,12 @@
|
|||||||
package eu.jonahbauer.wizard.client.libgdx.screens;
|
package eu.jonahbauer.wizard.client.libgdx.screens;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.UiskinAtlas;
|
import eu.jonahbauer.wizard.client.libgdx.UiskinAtlas;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
||||||
|
import eu.jonahbauer.wizard.client.libgdx.actors.IconList;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.state.Session;
|
import eu.jonahbauer.wizard.client.libgdx.state.Session;
|
||||||
import eu.jonahbauer.wizard.common.messages.data.PlayerData;
|
import eu.jonahbauer.wizard.common.messages.data.PlayerData;
|
||||||
@ -60,9 +57,9 @@ public class SessionScreen extends MenuScreen {
|
|||||||
|
|
||||||
getButtonGroup().setWidth(0.55f * WizardGame.WIDTH);
|
getButtonGroup().setWidth(0.55f * WizardGame.WIDTH);
|
||||||
|
|
||||||
players = new List<>(skin) {
|
players = new IconList<>(skin) {
|
||||||
private final TextureRegion ready = skin.getRegion(UiskinAtlas.READY);
|
private final Drawable ready = skin.getDrawable(UiskinAtlas.READY);
|
||||||
private final TextureRegion notReady = skin.getRegion(UiskinAtlas.NOT_READY);
|
private final Drawable notReady = skin.getDrawable(UiskinAtlas.NOT_READY);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(PlayerData player) {
|
public String toString(PlayerData player) {
|
||||||
@ -70,16 +67,8 @@ public class SessionScreen extends MenuScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("SuspiciousNameCombination")
|
public Drawable getIcon(PlayerData item) {
|
||||||
protected GlyphLayout drawItem(Batch batch, BitmapFont font, int index, PlayerData item, float x, float y, float width) {
|
return item.isReady() ? ready : notReady;
|
||||||
String string = toString(item);
|
|
||||||
var height = font.getCapHeight();
|
|
||||||
if (item.isReady()) {
|
|
||||||
batch.draw(ready, x, y - height, height, height);
|
|
||||||
} else {
|
|
||||||
batch.draw(notReady, x, y - height, height, height);
|
|
||||||
}
|
|
||||||
return font.draw(batch, string, x + height + 8, y, 0, string.length(), width - height - 8, Align.left, false, "...");
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import eu.jonahbauer.wizard.client.libgdx.screens.GameScreen;
|
|||||||
import eu.jonahbauer.wizard.client.libgdx.util.Pair;
|
import eu.jonahbauer.wizard.client.libgdx.util.Pair;
|
||||||
import eu.jonahbauer.wizard.common.messages.client.InteractionMessage;
|
import eu.jonahbauer.wizard.common.messages.client.InteractionMessage;
|
||||||
import eu.jonahbauer.wizard.common.messages.data.PlayerData;
|
import eu.jonahbauer.wizard.common.messages.data.PlayerData;
|
||||||
import eu.jonahbauer.wizard.common.messages.data.SessionData;
|
|
||||||
import eu.jonahbauer.wizard.common.messages.observer.*;
|
import eu.jonahbauer.wizard.common.messages.observer.*;
|
||||||
import eu.jonahbauer.wizard.common.messages.player.*;
|
import eu.jonahbauer.wizard.common.messages.player.*;
|
||||||
import eu.jonahbauer.wizard.common.messages.server.AckMessage;
|
import eu.jonahbauer.wizard.common.messages.server.AckMessage;
|
||||||
|
@ -26,4 +26,8 @@ public class SessionData {
|
|||||||
* Configuration of the session
|
* Configuration of the session
|
||||||
*/
|
*/
|
||||||
private final @NonNull Configuration configuration;
|
private final @NonNull Configuration configuration;
|
||||||
|
/**
|
||||||
|
* Whether the session is running.
|
||||||
|
*/
|
||||||
|
private final boolean running;
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,11 @@ public class Session implements Observer, SessionMBean {
|
|||||||
this.configuration = configuration;
|
this.configuration = configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRunning() {
|
||||||
|
return game != null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Associates the given player with this session and notifies all other players in the
|
* Associates the given player with this session and notifies all other players in the
|
||||||
* session with a {@link PlayerJoinedMessage}, the joining player with a {@link SessionJoinedMessage} and all
|
* session with a {@link PlayerJoinedMessage}, the joining player with a {@link SessionJoinedMessage} and all
|
||||||
@ -63,7 +68,7 @@ public class Session implements Observer, SessionMBean {
|
|||||||
* @return the players uuid
|
* @return the players uuid
|
||||||
*/
|
*/
|
||||||
public synchronized UUID join(Player player, String name) {
|
public synchronized UUID join(Player player, String name) {
|
||||||
if (game != null) {
|
if (isRunning()) {
|
||||||
throw new NackException(NackMessage.GAME_ALREADY_STARTED, "Game has already started.");
|
throw new NackException(NackMessage.GAME_ALREADY_STARTED, "Game has already started.");
|
||||||
} else if (players.size() == MAX_PLAYERS) {
|
} else if (players.size() == MAX_PLAYERS) {
|
||||||
throw new NackException(NackMessage.SESSION_FULL, "Session is full.");
|
throw new NackException(NackMessage.SESSION_FULL, "Session is full.");
|
||||||
@ -80,7 +85,7 @@ public class Session implements Observer, SessionMBean {
|
|||||||
sessionPlayer.setPlayer(player);
|
sessionPlayer.setPlayer(player);
|
||||||
|
|
||||||
notifyJoined(sessionPlayer.toData());
|
notifyJoined(sessionPlayer.toData());
|
||||||
Lobby.getInstance().notifyPlayers(new SessionModifiedMessage(toData()));
|
notifyLobby();
|
||||||
|
|
||||||
return sessionPlayer.getUuid();
|
return sessionPlayer.getUuid();
|
||||||
}
|
}
|
||||||
@ -115,13 +120,13 @@ public class Session implements Observer, SessionMBean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void leave(UUID player) {
|
public synchronized void leave(UUID player) {
|
||||||
if (game == null) {
|
if (!isRunning()) {
|
||||||
if (players.remove(player) != null) {
|
if (players.remove(player) != null) {
|
||||||
if (players.size() == 0) {
|
if (players.size() == 0) {
|
||||||
Lobby.getInstance().removeSession(uuid);
|
Lobby.getInstance().removeSession(uuid);
|
||||||
} else {
|
} else {
|
||||||
notifyPlayers(new PlayerLeftMessage(player));
|
notifyPlayers(new PlayerLeftMessage(player));
|
||||||
Lobby.getInstance().notifyPlayers(new SessionModifiedMessage(toData()));
|
notifyLobby();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -139,7 +144,7 @@ public class Session implements Observer, SessionMBean {
|
|||||||
var player = players.get(uuid);
|
var player = players.get(uuid);
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
throw new NackException(NackMessage.PLAYER_NOT_FOUND, "Who are you?");
|
throw new NackException(NackMessage.PLAYER_NOT_FOUND, "Who are you?");
|
||||||
} else if (game != null) {
|
} else if (isRunning()) {
|
||||||
throw new NackException(NackMessage.GAME_ALREADY_STARTED, "Game has already started.");
|
throw new NackException(NackMessage.GAME_ALREADY_STARTED, "Game has already started.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,7 +169,7 @@ public class Session implements Observer, SessionMBean {
|
|||||||
var player = players.get(uuid);
|
var player = players.get(uuid);
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
throw new NackException(NackMessage.PLAYER_NOT_FOUND, "Who are you?");
|
throw new NackException(NackMessage.PLAYER_NOT_FOUND, "Who are you?");
|
||||||
} else if (game == null) {
|
} else if (!isRunning()) {
|
||||||
throw new NackException(NackMessage.GAME_NOT_YET_STARTED, "Game hat not yet started.");
|
throw new NackException(NackMessage.GAME_NOT_YET_STARTED, "Game hat not yet started.");
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
@ -178,10 +183,11 @@ public class Session implements Observer, SessionMBean {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void startGame() {
|
protected synchronized void startGame() {
|
||||||
notifyPlayers(new StartingGameMessage());
|
notifyPlayers(new StartingGameMessage());
|
||||||
messages.add(Pair.of(null, new StartingGameMessage()));
|
messages.add(Pair.of(null, new StartingGameMessage()));
|
||||||
game = new Game(configuration, timeout, 10 * 60 * 1000, this);
|
game = new Game(configuration, timeout, 10 * 60 * 1000, this);
|
||||||
|
notifyLobby();
|
||||||
game.start(List.copyOf(players.keySet()));
|
game.start(List.copyOf(players.keySet()));
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
while (true) {
|
while (true) {
|
||||||
@ -195,20 +201,23 @@ public class Session implements Observer, SessionMBean {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
players.forEach((id, player) -> player.setReady(false));
|
finishGame();
|
||||||
synchronized (this) {
|
|
||||||
game = null;
|
|
||||||
messages.clear();
|
|
||||||
for (SessionPlayer player : List.copyOf(players.values())) {
|
|
||||||
if (!player.isConnected()) {
|
|
||||||
leave(player.getUuid());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void notifyJoined(PlayerData joined) {
|
protected synchronized void finishGame() {
|
||||||
|
players.forEach((id, player) -> player.setReady(false));
|
||||||
|
game = null;
|
||||||
|
messages.clear();
|
||||||
|
for (SessionPlayer player : List.copyOf(players.values())) {
|
||||||
|
if (!player.isConnected()) {
|
||||||
|
leave(player.getUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
notifyLobby();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected synchronized void notifyJoined(PlayerData joined) {
|
||||||
var message = new PlayerJoinedMessage(joined);
|
var message = new PlayerJoinedMessage(joined);
|
||||||
for (SessionPlayer player : players.values()) {
|
for (SessionPlayer player : players.values()) {
|
||||||
if (player.getUuid().equals(joined.getUuid())) {
|
if (player.getUuid().equals(joined.getUuid())) {
|
||||||
@ -224,14 +233,14 @@ public class Session implements Observer, SessionMBean {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void notifyPlayers(ServerMessage message) {
|
protected synchronized void notifyPlayers(ServerMessage message) {
|
||||||
for (SessionPlayer player : players.values()) {
|
for (SessionPlayer player : players.values()) {
|
||||||
player.send(message);
|
player.send(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SessionData toData() {
|
public SessionData toData() {
|
||||||
return new SessionData(uuid, name, players.size(), configuration);
|
return new SessionData(uuid, name, players.size(), configuration, isRunning());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -266,6 +275,10 @@ public class Session implements Observer, SessionMBean {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void notifyLobby() {
|
||||||
|
Lobby.getInstance().notifyPlayers(new SessionModifiedMessage(toData()));
|
||||||
|
}
|
||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
for (var sessionPlayer : getPlayers().values()) {
|
for (var sessionPlayer : getPlayers().values()) {
|
||||||
var player = sessionPlayer.getPlayer();
|
var player = sessionPlayer.getPlayer();
|
||||||
@ -276,11 +289,6 @@ public class Session implements Observer, SessionMBean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//<editor-fold desc="JMX" defaulstate="collapsed">
|
//<editor-fold desc="JMX" defaulstate="collapsed">
|
||||||
@Override
|
|
||||||
public boolean isRunning() {
|
|
||||||
return game != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDebug() {
|
public boolean isDebug() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,7 @@ package eu.jonahbauer.wizard.server.debug;
|
|||||||
import eu.jonahbauer.wizard.common.messages.player.PlayerMessage;
|
import eu.jonahbauer.wizard.common.messages.player.PlayerMessage;
|
||||||
import eu.jonahbauer.wizard.common.messages.server.NackMessage;
|
import eu.jonahbauer.wizard.common.messages.server.NackMessage;
|
||||||
import eu.jonahbauer.wizard.common.messages.server.ServerMessage;
|
import eu.jonahbauer.wizard.common.messages.server.ServerMessage;
|
||||||
import eu.jonahbauer.wizard.common.messages.server.SessionModifiedMessage;
|
|
||||||
import eu.jonahbauer.wizard.common.model.Configuration;
|
import eu.jonahbauer.wizard.common.model.Configuration;
|
||||||
import eu.jonahbauer.wizard.server.Lobby;
|
|
||||||
import eu.jonahbauer.wizard.server.NackException;
|
import eu.jonahbauer.wizard.server.NackException;
|
||||||
import eu.jonahbauer.wizard.server.Session;
|
import eu.jonahbauer.wizard.server.Session;
|
||||||
import eu.jonahbauer.wizard.server.machine.Player;
|
import eu.jonahbauer.wizard.server.machine.Player;
|
||||||
@ -51,7 +49,7 @@ public class DebugSession extends Session {
|
|||||||
sessionPlayer.setPlayer(player);
|
sessionPlayer.setPlayer(player);
|
||||||
|
|
||||||
notifyJoined(sessionPlayer.toData());
|
notifyJoined(sessionPlayer.toData());
|
||||||
Lobby.getInstance().notifyPlayers(new SessionModifiedMessage(toData()));
|
notifyLobby();
|
||||||
|
|
||||||
return sessionPlayer.getUuid();
|
return sessionPlayer.getUuid();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user