|
@@ -0,0 +1,62 @@
|
|
|
|
+use serde::{Serialize, Deserialize};
|
|
|
|
+
|
|
|
|
+#[derive(Serialize, Deserialize)]
|
|
|
|
+#[serde(rename_all = "snake_case")]
|
|
|
|
+pub enum ClientMessage {
|
|
|
|
+ CreateGame{ game_id: String, nick: String },
|
|
|
|
+ Join{ game_id: String, nick: String },
|
|
|
|
+ LeaveLobby,
|
|
|
|
+ Ready,
|
|
|
|
+ Unready,
|
|
|
|
+ Reveal,
|
|
|
|
+ SubmitWord{ word: String },
|
|
|
|
+ SubmitGuess{ guesses: Vec<(String, String)> },
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#[derive(Serialize, Deserialize)]
|
|
|
|
+#[serde(rename_all = "snake_case")]
|
|
|
|
+pub enum GameStateData {
|
|
|
|
+ Starting,
|
|
|
|
+ Creating{ question: String, available_chars: Vec<char> },
|
|
|
|
+ Guessing{ submitted_words: Vec<(String, Vec<char>)>, questions: Vec<String> },
|
|
|
|
+ Revealing{ round_result: RoundResultData },
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#[derive(Serialize, Deserialize, Clone)]
|
|
|
|
+#[serde(rename_all = "snake_case")]
|
|
|
|
+pub struct PlayerData {
|
|
|
|
+ pub nick: String,
|
|
|
|
+ pub points: i64,
|
|
|
|
+ pub ready: bool,
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#[derive(Serialize, Deserialize)]
|
|
|
|
+#[serde(rename_all = "snake_case")]
|
|
|
|
+pub struct GameData {
|
|
|
|
+ pub players: Vec<PlayerData>,
|
|
|
|
+ pub state_data: GameStateData
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#[derive(Serialize, Deserialize, Clone)]
|
|
|
|
+#[serde(rename_all = "snake_case")]
|
|
|
|
+pub struct RoundResultData {
|
|
|
|
+ /// (player's nick, word, has revealed)
|
|
|
|
+ pub words: Vec<(String, String, bool)>,
|
|
|
|
+ pub questions: Vec<String>,
|
|
|
|
+ pub solutions: Vec<(String, String)>,
|
|
|
|
+ pub guesses: Vec<Vec<Vec<String>>>,
|
|
|
|
+ pub point_list: Vec<(String, i64)>
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#[derive(Serialize)]
|
|
|
|
+#[serde(rename_all = "snake_case")]
|
|
|
|
+pub enum UpdateMessage {
|
|
|
|
+ GameNotFound{ game_id: String },
|
|
|
|
+// GameAlreadyExists{ game_id: String },
|
|
|
|
+ LeftLobby{ nick: String },
|
|
|
|
+ GameState(GameData),
|
|
|
|
+ PlayerList(Vec<PlayerData>),
|
|
|
|
+ RoundResult(RoundResultData),
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|