package jrummikub.control.network; import java.util.List; import java.util.UUID; import jrummikub.model.GameSettings; import jrummikub.model.PlayerSettings; import jrummikub.model.PlayerSettings.Type; import jrummikub.util.GameData; import jrummikub.util.IListener1; import jrummikub.view.ISettingsPanel.SettingsMode; import jrummikub.view.IView; public class GameOfferControl extends AbstractGameBeginControl { public GameOfferControl(final IConnectionControl connectionControl, final GameSettings settings, final IView view) { super(connectionControl, view, new GameData(UUID.randomUUID(), settings), SettingsMode.NETWORK_OFFER); connections.add(connectionControl.getGameJoinEvent().add( new IListener1() { @Override public void handle(String sender) { for (PlayerSettings player : settings.getPlayerList()) { if (player.getType() == Type.VACANT) { player.setName(sender); player.setType(Type.NETWORK); updateSettingsPanel(); connectionControl.ackJoinGame(sender, true); connectionControl.offerGame(gameData); return; } } connectionControl.ackJoinGame(sender, false); } })); connections.add(connectionControl.getGameLeaveEvent().add( new IListener1() { @Override public void handle(String sender) { List players = gameData .getGameSettings().getPlayerList(); for (PlayerSettings s : players) { if (s.getName().equals(sender) && s.getType() == Type.NETWORK) { s.setType(Type.VACANT); s.setName("Offen"); break; } } updateSettingsPanel(); connectionControl.offerGame(gameData); } })); } public void startGameOffer() { connectionControl.offerGame(gameData); view.showSettingsPanel(true); } @Override protected void goBack() { abort(); connectionControl.withdrawGame(); backEvent.emit(); } }