public void setList(List<T> items) { if (items == null) { throw new NullPointerException(); } this.items = items; notifyListener(); }
/** * Constructor * * @param doubleclickListener * Gets called when an entry is double clicked, can be <code>null</code> */ public OpenPanel(final ChangingList<? extends MapLoader> maps, IMapSelectedListener mapSelectedListener) { this(maps.getItems(), mapSelectedListener); maps.setListener(changedLister -> { setMapLoaders(changedLister.getItems()); }); }
void updatePlayersList(PlayerInfoPacket[] playerInfoPackets) { List<IMultiplayerPlayer> players = new LinkedList<>(); for (PlayerInfoPacket playerInfoPacket : playerInfoPackets) { players.add(new MultiplayerPlayer(playerInfoPacket)); } playersList.setList(players); }
@Override public void gameJoined(IJoinPhaseMultiplayerGameConnector connector) { SwingUtilities.invokeLater(() -> { initializeChatFor(connector); setStartButtonActionListener(e -> connector.startGame()); connector.getPlayers().setListener(changingPlayers -> onPlayersChanges(changingPlayers, connector)); connector.setMultiplayerListener(new IMultiplayerListener() { @Override public void gameIsStarting(IStartingGame game) { settlersFrame.showStartingGamePanel(game); } @Override public void gameAborted() { settlersFrame.showMainMenu(); } }); onPlayersChanges(connector.getPlayers(), connector); // init the UI with the players }); } });
@Override public synchronized void foundMap(IListedMap map) { MapLoader loader; try { loader = MapLoader.getLoaderForListedMap(map); } catch (Exception e) { System.err.println("Cought exception while loading header for " + map.getFileName()); e.printStackTrace(); return; } MapFileHeader mapHead = loader.getFileHeader(); // - if the map can't be load (e.g. caused by wrong format) the mapHead gets NULL! -> hide/ignore this map from user if (mapHead != null) { MapType type = loader.getFileHeader().getType(); if ((type == MapType.SAVED_SINGLE)) { savedMaps.add((RemakeMapLoader) loader); } else { freshMaps.add(loader); } } }
private void addListener(IMultiplayerConnector multiPlayerConnector) { multiPlayerConnector .getJoinableMultiplayerGames() .setListener(networkGames -> { List<MapLoader> mapLoaders = stream(networkGames.getItems()) .map(NetworkGameMapLoader::new) .collect(Collectors.toList()); SwingUtilities.invokeLater(() -> joinMultiPlayerGamePanel.setMapLoaders(mapLoaders)); }); }
private IPacketReceiver<ArrayOfMatchInfosPacket> generateMatchesReceiver() { return packet -> { List<IJoinableGame> openGames = new LinkedList<>(); for (MatchInfoPacket matchInfo : packet.getMatches()) { openGames.add(new JoinableGame(matchInfo)); } joinableGames.setList(openGames); }; }
public void setJoinMultiPlayerMap(IJoinPhaseMultiplayerGameConnector joinMultiPlayerMap, MapLoader mapLoader) { playerSlotFactory = new ClientOfMultiplayerPlayerSlotFactory(); titleLabel.setText(Labels.getString("join-game-panel-join-multi-player-game-title")); numberOfPlayersComboBox.setEnabled(false); peaceTimeComboBox.setEnabled(false); startResourcesComboBox.setEnabled(false); setChatVisible(true); cancelButton.addActionListener(e -> settlersFrame.showMainMenu()); startGameButton.setVisible(false); prepareUiFor(mapLoader); joinMultiPlayerMap.getPlayers().setListener(changingPlayers -> onPlayersChanges(changingPlayers, joinMultiPlayerMap)); joinMultiPlayerMap.setMultiplayerListener(new IMultiplayerListener() { @Override public void gameIsStarting(IStartingGame game) { settlersFrame.showStartingGamePanel(game); } @Override public void gameAborted() { settlersFrame.showMainMenu(); } }); initializeChatFor(joinMultiPlayerMap); onPlayersChanges(joinMultiPlayerMap.getPlayers(), joinMultiPlayerMap); // init the UI with the players }
private PlayerSetting[] determinePlayerSettings(boolean[] availablePlayers) { PlayerSetting[] playerSettings = new PlayerSetting[availablePlayers.length]; byte i = 0; for (; i < playersList.getItems().size(); i++) { playerSettings[i] = new PlayerSetting(i); } EPlayerType aiType = iAmTheHost ? EPlayerType.AI_VERY_HARD : EPlayerType.HUMAN; for (; i < availablePlayers.length; i++) { playerSettings[i] = new PlayerSetting(aiType, ECivilisation.ROMAN, i); } return playerSettings; }
public void clear() { if (items != null) { items.clear(); notifyListener(); } }
/** * Gives the {@link MapLoader} for the map with the given id. * * @param id * The id of the map to be found. * @return Returns the corresponding {@link MapLoader}<br> * or null if no map with the given id has been found. */ public MapLoader getMapById(String id) { ArrayList<MapLoader> maps = new ArrayList<>(); maps.addAll(getFreshMaps().getItems()); maps.addAll(getSavedMaps().getItems()); for (MapLoader curr : maps) { if (curr.getMapId().equals(id)) { return curr; } } return null; }
public void add(T item) { items.add(item); notifyListener(); }
public static MapLoader getNewestSavegame() { List<? extends MapLoader> savedMaps = MapList.getDefaultList().getSavedMaps().getItems(); if (savedMaps.isEmpty()) { throw new RuntimeException("No saved games found."); } MapLoader newest = savedMaps.get(0); for (MapLoader map : savedMaps) { if (newest.getCreationDate().before(map.getCreationDate())) { newest = map; } } return newest; }
public void remove(T item) { items.remove(item); notifyListener(); }
byte calculatePlayerInfos(boolean[] availablePlayers) { String myId = networkClient.getPlayerInfo().getId(); byte i = 0; byte ownPlayerId = -1; for (IMultiplayerPlayer currPlayer : playersList.getItems()) { availablePlayers[i] = true; if (currPlayer.getId().equals(myId)) { ownPlayerId = i; } i++; } for (byte ii = i; ii < availablePlayers.length; ii++) { availablePlayers[ii] = true; } if (ownPlayerId < 0) { throw new RuntimeException("Wasn't able to find my id!"); } else { return ownPlayerId; } }
private boolean areAllPlayersReady() { return !stream(playersList.getItems()) .filter(player -> !player.isReady()) .findAny() .isPresent(); } };
private void onPlayersChanges(ChangingList<? extends IMultiplayerPlayer> changingPlayers, IJoinPhaseMultiplayerGameConnector joinMultiPlayerMap) { SwingUtilities.invokeLater(() -> { List<? extends IMultiplayerPlayer> players = changingPlayers.getItems(); String myId = SettingsManager.getInstance().getUUID(); for (int i = 0; i < players.size(); i++) { PlayerSlot playerSlot = playerSlots.get(i); IMultiplayerPlayer player = players.get(i); playerSlot.setPlayerName(player.getName()); playerSlot.setReady(player.isReady()); playerSlot.setPlayerType(EPlayerType.HUMAN, false); if (player.getId().equals(myId)) { playerSlot.setReadyButtonEnabled(true); playerSlot.informGameAboutReady(joinMultiPlayerMap); } else { playerSlot.setReadyButtonEnabled(false); } } for (int i = players.size(); i < playerSlots.size(); i++) { playerSlots.get(i).setPlayerType(EPlayerType.AI_VERY_HARD, false); } setCancelButtonActionListener(e -> { joinMultiPlayerMap.abort(); settlersFrame.showMainMenu(); }); }); }
public MainMenuPanel(JSettlersFrame settlersFrame, IMultiplayerConnector multiPlayerConnector) { this.settlersFrame = settlersFrame; OpenPanel openSinglePlayerPanel = new OpenPanel(MapList.getDefaultList().getFreshMaps().getItems(), settlersFrame::showNewSinglePlayerGameMenu); OpenPanel openSaveGamePanel = new OpenPanel(MapList.getDefaultList().getSavedMaps(), this::loadSavegame); OpenPanel newMultiPlayerGamePanel = new OpenPanel(MapList.getDefaultList().getFreshMaps().getItems(), this::showNewMultiplayerGamePanel); joinMultiPlayerGamePanel = new OpenPanel(Collections.emptyList(), this::showJoinMultiplayerGamePanel); SettingsMenuPanel settingsPanel = new SettingsMenuPanel(this); registerMenu("main-panel-new-single-player-game-button", e -> setCenter("main-panel-new-single-player-game-button", openSinglePlayerPanel)); registerMenu("start-loadgame", e -> setCenter("start-loadgame", openSaveGamePanel)); registerMenu("settings-title", e -> { setCenter("settings-title", settingsPanel); settingsPanel.initializeValues(); }); registerMenu("start-newmultiplayer", e -> setCenter("start-newmultiplayer-start", newMultiPlayerGamePanel)); registerMenu("start-joinmultiplayer", e -> setCenter("start-joinmultiplayer-start", joinMultiPlayerGamePanel)); initButtonPanel(); SwingUtilities.updateComponentTreeUI(this); addListener(multiPlayerConnector); }