From b7eefa589b49115fdada88669601b93370bd42d6 Mon Sep 17 00:00:00 2001 From: jbion Date: Wed, 28 Dec 2016 14:18:18 +0100 Subject: Add player reordering support in Lobby --- .../java/org/luxons/sevenwonders/game/Lobby.java | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src/main/java/org/luxons') 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 players; - private final GameDefinition gameDefinition; + private List 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 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 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); + } + } } -- cgit