@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 }); } });
private void initializeChatFor(IJoinPhaseMultiplayerGameConnector joinMultiPlayerMap) { joinMultiPlayerMap.setChatListener(new IChatMessageListener() { @Override public void chatMessageReceived(String authorId, String message) { chatArea.append(authorId + ": " + message + "\n"); } @Override public void systemMessageReceived(IMultiplayerPlayer author, ENetworkMessage message) { chatArea.append(Labels.getString("network-message-" + message.name()) + "\n"); } }); ActionListener sendChatMessage = e -> { String message = chatInputField.getText(); if (!message.equals("")) { joinMultiPlayerMap.sendChatMessage(message); chatInputField.setText(""); } }; J8Arrays.stream(sendChatMessageButton.getActionListeners()).forEach(sendChatMessageButton::removeActionListener); J8Arrays.stream(chatInputField.getActionListeners()).forEach(chatInputField::removeActionListener); sendChatMessageButton.addActionListener(sendChatMessage); chatInputField.addActionListener(sendChatMessage); }
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 void addListener() { typeComboBox.addActionListener(e -> updateAiPlayerName()); civilisationComboBox.addActionListener(e -> updateAiPlayerName()); slotComboBox.addActionListener(e -> { if (slotListener != null) { slotListener.slotHasChanged(oldSlotValue, getSlot()); } oldSlotValue = getSlot(); }); readyButton.addActionListener(e -> { setReady(!isReady()); if (gameToBeInformedAboutReady != null) { gameToBeInformedAboutReady.setReady(isReady()); } }); }
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(); }); }); }