Explorar o código

adding missing file

Nicolas Winkler %!s(int64=4) %!d(string=hai) anos
pai
achega
a305788871
Modificáronse 1 ficheiros con 62 adicións e 0 borrados
  1. 62 0
      src/server/protocol.rs

+ 62 - 0
src/server/protocol.rs

@@ -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),
+}
+
+