Skip to content

Commit 219e8fe

Browse files
committed
2 Player gameplay works!!! (Sorta)
1 parent ae0ca8a commit 219e8fe

File tree

2 files changed

+59
-7
lines changed

2 files changed

+59
-7
lines changed

client/src/main/java/dev/abhay7/skribbl/client/Client.java

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@
2727
import javax.swing.SwingWorker;
2828
import javax.swing.border.EmptyBorder;
2929

30+
import org.json.JSONArray;
31+
3032
import dev.abhay7.skribbl.client.jameskwong.pwdsignal.PWDSignalSession;
3133
import dev.abhay7.skribbl.client.jameskwong.pwdsignal.PWDSignalSessionState;
34+
import dev.abhay7.skribbl.server.datapacks.GameDataPack;
3235
import dev.abhay7.skribbl.server.datapacks.LobbyJoinPack;
3336
import dev.abhay7.skribbl.server.datapacks.PayloadPack;
3437
import dev.abhay7.skribbl.server.datapacks.WordsFetchPack;
@@ -56,8 +59,8 @@ public class Client {
5659

5760

5861
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;
6164
private ArrayList<String> wordsGuessed;
6265

6366
public String chosenWord = "";
@@ -514,7 +517,7 @@ private JPanel getGamePanel(String lobName, Map<String, Integer> players, boolea
514517
startLobbyButton.addActionListener((_) -> {
515518
if(this.getCurrentPlayersList().size() > 1) {
516519
try {
517-
String player = chooseRandomPlayer();
520+
String player = chooseNextPlayer();
518521
if(player != null) {
519522
networkHandler.startLobby(player);
520523
eastWrapper.remove(eastWrapper.getComponent(eastWrapper.getComponentCount() - 1));
@@ -545,7 +548,7 @@ private JPanel getGamePanel(String lobName, Map<String, Integer> players, boolea
545548
return toRet;
546549
}
547550

548-
private String chooseRandomPlayer() {
551+
private String chooseNextPlayer() {
549552
if(playersWhoHavePlayed.size() < currentPlayersList.size()) {
550553
String player = currentPlayersList.get(playersWhoHavePlayed.size());
551554
playersWhoHavePlayed.add(player);
@@ -606,7 +609,7 @@ protected void startDrawing() {
606609
}
607610

608611
// Leave a lobby
609-
private void leaveLobby() {
612+
protected void leaveLobby() {
610613
this.isPlaying = false;
611614
this.isHosting = false;
612615
inPrivate = false;
@@ -778,6 +781,8 @@ protected void updatePlayerList(ArrayList<String> usernames) {
778781
}
779782

780783
protected void updateMessages(String message) {
784+
System.out.println("playersWhoHavePlayed size" + playersWhoHavePlayed.size());
785+
System.out.println("currentPlayersList size" + currentPlayersList.size());
781786
if (chatPanel != null) {
782787
SwingUtilities.invokeLater(() -> {
783788
chatPanel.setText(chatPanel.getText() + "\n" + message);
@@ -813,7 +818,7 @@ private synchronized void exitProgram() {
813818
private void showMessageDialog(String msg, String titleMsg, int errorCode) {
814819
showMessageDialog(msg, titleMsg, errorCode, true);
815820
}
816-
private void showMessageDialog(String msg, String titleMsg, int errorCode, boolean invokeLater) {
821+
protected void showMessageDialog(String msg, String titleMsg, int errorCode, boolean invokeLater) {
817822
if(invokeLater) {
818823
SwingUtilities.invokeLater(() -> {
819824
if(openDialogs < MAX_DIALOG_COUNT) {
@@ -899,7 +904,26 @@ public void run() {
899904
} catch(Exception e) {}
900905
}
901906

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); }
903927

904928
}
905929
}

client/src/main/java/dev/abhay7/skribbl/client/NetworkHandler.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import java.util.concurrent.TimeoutException;
1919

2020
import javax.swing.JLabel;
21+
import javax.swing.JOptionPane;
2122

23+
import org.json.JSONArray;
2224
import org.json.JSONException;
2325
import org.json.JSONObject;
2426

@@ -279,6 +281,32 @@ private void handleRawGameDataPack(ReceivedPacket packet) {
279281
} catch(Exception e) {
280282
System.err.println(e);
281283
}
284+
} else if(packet.getData().getString("type").equalsIgnoreCase("nextplayer")) {
285+
try {
286+
JSONArray jsonArray = new JSONArray(packet.getData().getString("message").split(":")[1]);
287+
for(int i = 0; i < jsonArray.length(); i++) {
288+
if(client.playersWhoHavePlayed.indexOf(jsonArray.getString(i)) < 0) {
289+
client.playersWhoHavePlayed.add(jsonArray.getString(i));
290+
}
291+
}
292+
} catch(Exception e) {}
293+
if(packet.getData().getString("message").split(":")[0].equals(client.username)) {
294+
client.getBoard().setDrawing(true);
295+
client.startDrawing();
296+
}
297+
client.updateMessages(packet.getData().getString("message").split(":")[0] + " IS NOW DRAWING");
298+
client.getBoard().getCanvas().delLines();
299+
} else if(packet.getData().getString("type").equalsIgnoreCase("gamedone")) {
300+
String winner = "";
301+
int highest = -1;
302+
for(String s: this.client.currentPlayersList) {
303+
if(this.client.currentPlayersMap.get(s) > highest) {
304+
winner = s;
305+
highest = this.client.currentPlayersMap.get(s);
306+
}
307+
}
308+
this.client.showMessageDialog("Game is over! Winner is: " + winner + " with " + highest + " points.", "GAME COMPLETED", JOptionPane.OK_OPTION, true);
309+
this.client.leaveLobby();
282310
}
283311
}
284312
} else /* if(packet.getData().has("image")) */ {

0 commit comments

Comments
 (0)