|
@@ -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");
|
|
|
}
|