Bladeren bron

adding game not found message

Nicolas Winkler 4 jaren geleden
bovenliggende
commit
902fd71f54
1 gewijzigde bestanden met toevoegingen van 12 en 6 verwijderingen
  1. 12 6
      src/websocket.rs

+ 12 - 6
src/websocket.rs

@@ -26,10 +26,11 @@ enum Message {
     Join{ game_id: String, nick: String },
 }
 
-#[derive(Serialize, Deserialize)]
+#[derive(Serialize)]
 #[serde(rename_all = "lowercase")]
-enum UpdateMessage {
-    GameState (game::Game)
+enum UpdateMessage<'a> {
+    GameNotFound{ game_id: String },
+    GameState(&'a game::Game)
 }
 
 struct WebSock {
@@ -92,6 +93,12 @@ impl WebSock {
         });
     }
 
+    pub fn send_message(&self, m: &UpdateMessage, ctx: &mut <WebSock as Actor>::Context) {
+        let txt = serde_json::to_string(m).unwrap();
+        println!("{:?}", txt);
+        ctx.text(txt);
+    }
+
     pub fn handle_message(&mut self, text: &str, ctx: &mut <WebSock as Actor>::Context) {
         let x = Message::Join{ game_id: "gmae".to_owned(), nick: "name".to_owned() };
         let string = serde_json::to_string(&x);
@@ -108,11 +115,10 @@ impl WebSock {
                     let mut map = self.server_data.lock().unwrap();
                     match map.get(&game_id) {
                         Some(game) => {
-                            let txt = serde_json::to_string(game).unwrap();
-                            println!("{:?}", txt);
-                            ctx.text(txt);
+                            self.send_message(&UpdateMessage::GameState(game), ctx);
                         },
                         None => {
+                            self.send_message(&UpdateMessage::GameNotFound{ game_id: game_id.clone() }, ctx);
                             map.insert(game_id, game::Game::new());
                             println!("game not found");
                         }