12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- use serde::{Serialize, Deserialize};
- use actix::prelude::*;
- use actix::Message;
- use actix_web::{web, Error, HttpRequest, HttpResponse};
- use actix_web_actors::ws;
- use crate::game;
- use crate::server;
- pub async fn ws_initiate(server: web::Data<Addr<server::Server>>, r: HttpRequest, stream: web::Payload) -> Result<HttpResponse, Error> {
- println!("{:?}", r);
- let (addr, res) = ws::start_with_addr(server::GameConnection::new(server.as_ref().clone()), &r, stream)?;
- println!("{:?}", res);
- Ok(res)
- }
- #[derive(Serialize, Deserialize)]
- #[serde(rename_all = "snake_case")]
- pub enum ClientMessage {
- CreateGame{ game_id: String, nick: String },
- Join{ game_id: String, nick: String },
- 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{ },
- }
- #[derive(Serialize, Deserialize)]
- #[serde(rename_all = "snake_case")]
- pub struct PlayerData {
- pub nick: String,
- pub points: i32
- }
- #[derive(Serialize, Deserialize)]
- #[serde(rename_all = "snake_case")]
- pub struct GameData {
- pub players: Vec<PlayerData>,
- pub state_data: GameStateData
- }
- #[derive(Serialize)]
- #[serde(rename_all = "snake_case")]
- pub enum UpdateMessage {
- GameNotFound{ game_id: String },
- GameAlreadyExists{ game_id: String },
- GameState(GameData),
- }
|