Skip to content

Commit a04f818

Browse files
committed
Add word fetching
1 parent 831b89d commit a04f818

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import javax.swing.BoxLayout;
1919
import javax.swing.JButton;
2020
import javax.swing.JComponent;
21+
import javax.swing.JLabel;
2122
import javax.swing.JPanel;
2223

2324
public class Board extends JPanel {
@@ -76,6 +77,14 @@ public void actionPerformed(ActionEvent e) {
7677
public void setDrawing(boolean drawing) { this.isDrawing = drawing; }
7778
public Canvas getCanvas() { return this.canvas; }
7879

80+
protected void addWordPhrase(String phrase) {
81+
JLabel jl = new JLabel(phrase.substring(0, 1).toUpperCase() + phrase.substring(1, phrase.length()));
82+
jl.setFont(getFont().deriveFont(20.0f));
83+
this.add(jl);
84+
this.revalidate();
85+
this.repaint();
86+
}
87+
7988
private JButton getColorButton(Color c) {
8089
JButton but = new JButton();
8190
but.setBackground(c);

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

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import javax.swing.border.EmptyBorder;
2828

2929
import dev.abhay7.skribbl.server.datapacks.LobbyJoinPack;
30+
import dev.abhay7.skribbl.server.datapacks.WordsFetchPack;
3031

3132
public class Client {
3233

@@ -52,6 +53,11 @@ public class Client {
5253
private Map<String, Integer> currentPlayersMap;
5354
private ArrayList<String> currentPlayersList;
5455
private ArrayList<String> playersWhoHavePlayed;
56+
private ArrayList<String> wordsGuessed;
57+
58+
private String chosenWord = "";
59+
60+
private ArrayList<String> wordList;
5561

5662
private JPanel currentlyDisplayedPanel;
5763
private JPanel usersPanel;
@@ -116,6 +122,9 @@ public void windowClosing(java.awt.event.WindowEvent we) {
116122
currentPlayersMap = new HashMap<String, Integer>();
117123
currentPlayersList = new ArrayList<String>();
118124
playersWhoHavePlayed = new ArrayList<String>();
125+
wordsGuessed = new ArrayList<String>();
126+
wordList = new ArrayList<String>();
127+
119128
this.setPlaying(false);
120129
this.setHosting(false);
121130
frame.setVisible(true);
@@ -482,14 +491,35 @@ protected void done() {
482491

483492
}).execute();
484493
}
494+
495+
protected void startDrawing() {
496+
if(this.getBoard().isDrawing()) {
497+
if(wordList.isEmpty()) {
498+
try {
499+
WordsFetchPack wfp = this.networkHandler.getWords();
500+
this.wordList.addAll(wfp.getWordList());
501+
} catch(Exception e) {
502+
System.out.println("Error fetching words: " + e);
503+
}
504+
}
505+
String chosenWord = this.wordList.get((int) (this.wordList.size() * (Math.random())));
506+
while(this.wordsGuessed.contains(chosenWord)) {
507+
chosenWord = this.wordList.get((int) (this.wordList.size() * (Math.random())));
508+
}
509+
this.board.addWordPhrase(this.chosenWord);
510+
}
511+
}
485512

486513
// Leave a lobby
487514
private void leaveLobby() {
488515
this.isPlaying = false;
489516
this.isHosting = false;
517+
490518
this.currentPlayersList.clear();
491-
this.currentPlayersMap.clear();;
519+
this.currentPlayersMap.clear();
492520
this.playersWhoHavePlayed.clear();
521+
this.wordsGuessed.clear();
522+
493523
(new SwingWorker<Void, Void>() {
494524

495525
@Override

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import dev.abhay7.skribbl.server.datapacks.LobbyListPack;
3131
import dev.abhay7.skribbl.server.datapacks.LobbyStartPack;
3232
import dev.abhay7.skribbl.server.datapacks.ServerLeavePack;
33+
import dev.abhay7.skribbl.server.datapacks.WordsFetchPack;
3334

3435
public class NetworkHandler extends Thread {
3536

@@ -136,11 +137,11 @@ private void handlePacket(ReceivedPacket packet) throws JSONException {
136137
client.getCurrentPlayersList().remove(username);
137138
client.updatePlayerList(client.getCurrentPlayersList());
138139
break;
139-
case MessageType.LOBBY_START:;
140-
System.out.println(packet.getData());
140+
case MessageType.LOBBY_START:
141141
String firstPlayer = LobbyStartPack.fromJSON(packet.getData()).getFirstPlayer();
142142
if(client.getUsername().equals(firstPlayer)) {
143143
client.getBoard().setDrawing(true);
144+
client.startDrawing();
144145
} else {
145146
client.getBoard().setDrawing(false);
146147
}
@@ -241,6 +242,22 @@ public synchronized LobbyLeavePack leaveLobby() throws IOException, JSONExceptio
241242
return llp;
242243
}
243244

245+
// Leave Lobby Method
246+
public synchronized WordsFetchPack getWords() throws IOException, JSONException, InterruptedException, ExecutionException, TimeoutException {
247+
this.setWriting(true);
248+
WordsFetchPack wfp = new WordsFetchPack();
249+
sendDataPackage(wfp, MessageType.FETCH_WORDLIST);
250+
this.setWriting(false);
251+
252+
CompletableFuture<JSONObject> responseFuture = new CompletableFuture<>();
253+
this.pendingResponses.put(MessageType.FETCH_WORDLIST, responseFuture);
254+
255+
JSONObject json = responseFuture.get(5, TimeUnit.SECONDS);
256+
wfp = WordsFetchPack.fromJSON(json);
257+
258+
return wfp;
259+
}
260+
244261
// Send a message
245262
protected synchronized void sendMessage(String msg) throws IOException, JSONException, InterruptedException, ExecutionException, TimeoutException {
246263
this.setWriting(true);

0 commit comments

Comments
 (0)