summaryrefslogtreecommitdiff
path: root/src/main/java/org/luxons/sevenwonders
diff options
context:
space:
mode:
authorjbion <joffrey.bion@amadeus.com>2016-12-28 14:18:18 +0100
committerjbion <joffrey.bion@amadeus.com>2016-12-28 14:18:18 +0100
commitb7eefa589b49115fdada88669601b93370bd42d6 (patch)
tree94b6b4038ccc72fab74d10869f00155e39237062 /src/main/java/org/luxons/sevenwonders
parentRemove useless parent exception (diff)
downloadseven-wonders-b7eefa589b49115fdada88669601b93370bd42d6.tar.gz
seven-wonders-b7eefa589b49115fdada88669601b93370bd42d6.tar.bz2
seven-wonders-b7eefa589b49115fdada88669601b93370bd42d6.zip
Add player reordering support in Lobby
Diffstat (limited to 'src/main/java/org/luxons/sevenwonders')
-rw-r--r--src/main/java/org/luxons/sevenwonders/game/Lobby.java26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/main/java/org/luxons/sevenwonders/game/Lobby.java b/src/main/java/org/luxons/sevenwonders/game/Lobby.java
index 30b31d4b..b115d32e 100644
--- a/src/main/java/org/luxons/sevenwonders/game/Lobby.java
+++ b/src/main/java/org/luxons/sevenwonders/game/Lobby.java
@@ -2,6 +2,7 @@ package org.luxons.sevenwonders.game;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
import org.luxons.sevenwonders.game.data.GameDefinition;
@@ -13,10 +14,10 @@ public class Lobby {
private final Player owner;
- private final List<Player> players;
-
private final GameDefinition gameDefinition;
+ private List<Player> players;
+
private State state = State.LOBBY;
public Lobby(long id, String name, Player owner, GameDefinition gameDefinition) {
@@ -36,6 +37,10 @@ public class Lobby {
return name;
}
+ public List<Player> getPlayers() {
+ return players;
+ }
+
public synchronized int addPlayer(Player player) throws GameAlreadyStartedException, PlayerOverflowException {
if (hasStarted()) {
throw new GameAlreadyStartedException();
@@ -76,6 +81,17 @@ public class Lobby {
return players.size() >= gameDefinition.getMinPlayers();
}
+ public void reorderPlayers(List<String> orderedUserNames) {
+ players = orderedUserNames.stream().map(this::getPlayer).collect(Collectors.toList());
+ }
+
+ private Player getPlayer(String userName) {
+ return players.stream()
+ .filter(p -> p.getUserName().equals(userName))
+ .findAny()
+ .orElseThrow(() -> new UnknownPlayerException(userName));
+ }
+
public boolean isOwner(String userName) {
return owner.getUserName().equals(userName);
}
@@ -98,4 +114,10 @@ public class Lobby {
super(name);
}
}
+
+ static class UnknownPlayerException extends IllegalArgumentException {
+ UnknownPlayerException(String userName) {
+ super(userName);
+ }
+ }
}
bgstack15