|
27 | 27 | import javax.swing.SwingWorker; |
28 | 28 | import javax.swing.border.EmptyBorder; |
29 | 29 |
|
| 30 | +import org.json.JSONArray; |
| 31 | + |
30 | 32 | import dev.abhay7.skribbl.client.jameskwong.pwdsignal.PWDSignalSession; |
31 | 33 | import dev.abhay7.skribbl.client.jameskwong.pwdsignal.PWDSignalSessionState; |
| 34 | +import dev.abhay7.skribbl.server.datapacks.GameDataPack; |
32 | 35 | import dev.abhay7.skribbl.server.datapacks.LobbyJoinPack; |
33 | 36 | import dev.abhay7.skribbl.server.datapacks.PayloadPack; |
34 | 37 | import dev.abhay7.skribbl.server.datapacks.WordsFetchPack; |
@@ -56,8 +59,8 @@ public class Client { |
56 | 59 |
|
57 | 60 |
|
58 | 61 | public Map<String, Integer> currentPlayersMap; |
59 | | - private ArrayList<String> currentPlayersList; |
60 | | - private ArrayList<String> playersWhoHavePlayed; |
| 62 | + public ArrayList<String> currentPlayersList; |
| 63 | + public ArrayList<String> playersWhoHavePlayed; |
61 | 64 | private ArrayList<String> wordsGuessed; |
62 | 65 |
|
63 | 66 | public String chosenWord = ""; |
@@ -514,7 +517,7 @@ private JPanel getGamePanel(String lobName, Map<String, Integer> players, boolea |
514 | 517 | startLobbyButton.addActionListener((_) -> { |
515 | 518 | if(this.getCurrentPlayersList().size() > 1) { |
516 | 519 | try { |
517 | | - String player = chooseRandomPlayer(); |
| 520 | + String player = chooseNextPlayer(); |
518 | 521 | if(player != null) { |
519 | 522 | networkHandler.startLobby(player); |
520 | 523 | eastWrapper.remove(eastWrapper.getComponent(eastWrapper.getComponentCount() - 1)); |
@@ -545,7 +548,7 @@ private JPanel getGamePanel(String lobName, Map<String, Integer> players, boolea |
545 | 548 | return toRet; |
546 | 549 | } |
547 | 550 |
|
548 | | - private String chooseRandomPlayer() { |
| 551 | + private String chooseNextPlayer() { |
549 | 552 | if(playersWhoHavePlayed.size() < currentPlayersList.size()) { |
550 | 553 | String player = currentPlayersList.get(playersWhoHavePlayed.size()); |
551 | 554 | playersWhoHavePlayed.add(player); |
@@ -606,7 +609,7 @@ protected void startDrawing() { |
606 | 609 | } |
607 | 610 |
|
608 | 611 | // Leave a lobby |
609 | | - private void leaveLobby() { |
| 612 | + protected void leaveLobby() { |
610 | 613 | this.isPlaying = false; |
611 | 614 | this.isHosting = false; |
612 | 615 | inPrivate = false; |
@@ -778,6 +781,8 @@ protected void updatePlayerList(ArrayList<String> usernames) { |
778 | 781 | } |
779 | 782 |
|
780 | 783 | protected void updateMessages(String message) { |
| 784 | + System.out.println("playersWhoHavePlayed size" + playersWhoHavePlayed.size()); |
| 785 | + System.out.println("currentPlayersList size" + currentPlayersList.size()); |
781 | 786 | if (chatPanel != null) { |
782 | 787 | SwingUtilities.invokeLater(() -> { |
783 | 788 | chatPanel.setText(chatPanel.getText() + "\n" + message); |
@@ -813,7 +818,7 @@ private synchronized void exitProgram() { |
813 | 818 | private void showMessageDialog(String msg, String titleMsg, int errorCode) { |
814 | 819 | showMessageDialog(msg, titleMsg, errorCode, true); |
815 | 820 | } |
816 | | - private void showMessageDialog(String msg, String titleMsg, int errorCode, boolean invokeLater) { |
| 821 | + protected void showMessageDialog(String msg, String titleMsg, int errorCode, boolean invokeLater) { |
817 | 822 | if(invokeLater) { |
818 | 823 | SwingUtilities.invokeLater(() -> { |
819 | 824 | if(openDialogs < MAX_DIALOG_COUNT) { |
@@ -899,7 +904,26 @@ public void run() { |
899 | 904 | } catch(Exception e) {} |
900 | 905 | } |
901 | 906 |
|
902 | | - System.out.println("Finished gametimer"); |
| 907 | + try { |
| 908 | + board.setDrawing(false); |
| 909 | + board.getCanvas().delLines(); |
| 910 | + String player = chooseNextPlayer(); |
| 911 | + if(player != null) { |
| 912 | + networkHandler.sendGameDataPack(new GameDataPack(player + ":" + new JSONArray(playersWhoHavePlayed.toArray()).toString(), "nextplayer")); |
| 913 | + } else { |
| 914 | + networkHandler.sendGameDataPack(new GameDataPack("done!", "gamedone")); |
| 915 | + String winner = ""; |
| 916 | + int highest = -1; |
| 917 | + for(String s: currentPlayersList) { |
| 918 | + if(currentPlayersMap.get(s) > highest) { |
| 919 | + winner = s; |
| 920 | + highest = currentPlayersMap.get(s); |
| 921 | + } |
| 922 | + } |
| 923 | + showMessageDialog("Game is over! Winner is: " + winner + " with " + highest + " points.", "GAME COMPLETED", JOptionPane.OK_OPTION, true); |
| 924 | + leaveLobby(); |
| 925 | + } |
| 926 | + } catch(Exception e) { System.err.println(e); } |
903 | 927 |
|
904 | 928 | } |
905 | 929 | } |
|
0 commit comments