diff options
Diffstat (limited to 'src/jrummikub/control/network/GameOfferControl.java')
-rw-r--r-- | src/jrummikub/control/network/GameOfferControl.java | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/jrummikub/control/network/GameOfferControl.java b/src/jrummikub/control/network/GameOfferControl.java index 8c5820d..42e3b8b 100644 --- a/src/jrummikub/control/network/GameOfferControl.java +++ b/src/jrummikub/control/network/GameOfferControl.java @@ -1,12 +1,15 @@ package jrummikub.control.network; +import java.util.Iterator; import java.util.List; import java.util.UUID; import jrummikub.model.GameSettings; import jrummikub.model.PlayerSettings; import jrummikub.model.PlayerSettings.Type; +import jrummikub.util.Event1; import jrummikub.util.GameData; +import jrummikub.util.IEvent1; import jrummikub.util.IListener; import jrummikub.util.IListener1; import jrummikub.view.ISettingsPanel.SettingsMode; @@ -16,6 +19,7 @@ import jrummikub.view.IView; * Control for network game host */ public class GameOfferControl extends AbstractGameBeginControl { + private Event1<GameSettings> gameStartEvent = new Event1<GameSettings>(); /** * Creates new game offer control @@ -84,10 +88,32 @@ public class GameOfferControl extends AbstractGameBeginControl { })); } - @Override - protected void startGame() { - super.startGame(); + /** + * The event that is emitted when the game is started + * + * @return the event + */ + public IEvent1<GameSettings> getStartGameEvent() { + return gameStartEvent; + } + + private void startGame() { + abort(); connectionControl.startGame(); + + GameSettings settings = gameData.getGameSettings(); + removeVacant(settings); + + gameStartEvent.emit(settings); + } + + private void removeVacant(GameSettings settings) { + Iterator<PlayerSettings> it = settings.getPlayerList().iterator(); + while (it.hasNext()) { + if (it.next().getType() == Type.VACANT) { + it.remove(); + } + } } /** @@ -98,7 +124,6 @@ public class GameOfferControl extends AbstractGameBeginControl { connectionControl.offerGame(gameData); view.showSettingsPanel(true); - } @Override |