move structs

This commit is contained in:
Adam 2024-05-04 02:32:49 -04:00
parent 33d81fd316
commit 840a839541
4 changed files with 42 additions and 42 deletions

View file

@ -1,49 +1,10 @@
use crate::gamemaster::*;
use crate::AppState; use crate::AppState;
use axum::{ use axum::extract::ws::{Message, WebSocket};
extract::{
ws::{Message, WebSocket, WebSocketUpgrade},
ConnectInfo, State,
},
response::IntoResponse,
};
use futures::{sink::SinkExt, stream::StreamExt}; use futures::{sink::SinkExt, stream::StreamExt};
use serde::Deserialize;
use std::{net::SocketAddr, sync::Arc}; use std::{net::SocketAddr, sync::Arc};
pub mod message_handler; pub mod message_handler;
use crate::message_handler::*; use crate::message_handler::*;
/// New game request structure
#[derive(Debug, Deserialize)]
pub struct NewGameRequest {
/// Game name
pub name: String,
/// Game host
pub host: CAHPlayer,
/// Chosen packs
pub packs: Vec<u8>,
}
/// Game join request structure
pub struct GameJoinRequest {
/// Game id
pub id: u8, // increase later
/// Game password
pub password: String,
/// Player info
pub player: CAHPlayer,
}
pub async fn websocket_handler(
ws: WebSocketUpgrade,
// user_agent: Option<TypedHeader<headers::UserAgent>>,
ConnectInfo(addr): ConnectInfo<SocketAddr>,
State(state): State<Arc<AppState>>,
) -> impl IntoResponse {
tracing::debug!("New connection from {addr}");
ws.on_upgrade(move |socket| websocket(socket, state, addr))
}
fn greeting(state: &Arc<AppState>) -> String { fn greeting(state: &Arc<AppState>) -> String {
format!( format!(
"{:#?} Card packs loaded\n\ "{:#?} Card packs loaded\n\

View file

@ -1,8 +1,45 @@
use crate::api::{greeting, Message, SocketAddr}; use crate::api::{greeting, Message, SocketAddr};
use crate::websocket;
use crate::AppState; use crate::AppState;
use crate::Arc; use crate::Arc;
use crate::CAHGame; use crate::CAHGame;
use crate::NewGameRequest; use crate::CAHPlayer;
use axum::{
extract::{ConnectInfo, State, WebSocketUpgrade},
response::IntoResponse,
};
use serde::Deserialize;
/// New game request structure
#[derive(Debug, Deserialize)]
pub struct NewGameRequest {
/// Game name
pub name: String,
/// Game host
pub host: CAHPlayer,
/// Chosen packs
pub packs: Vec<u8>,
}
/// Game join request structure
pub struct GameJoinRequest {
/// Game id
pub id: u8, // increase later
/// Game password
pub password: String,
/// Player info
pub player: CAHPlayer,
}
pub async fn websocket_handler(
ws: WebSocketUpgrade,
// user_agent: Option<TypedHeader<headers::UserAgent>>,
ConnectInfo(addr): ConnectInfo<SocketAddr>,
State(state): State<Arc<AppState>>,
) -> impl IntoResponse {
tracing::debug!("New connection from {addr}");
ws.on_upgrade(move |socket| websocket(socket, state, addr))
}
pub async fn message_handler(message: Message, state: &Arc<AppState>, who: SocketAddr) { pub async fn message_handler(message: Message, state: &Arc<AppState>, who: SocketAddr) {
let tx = &state.tx; let tx = &state.tx;

View file

@ -1,4 +1,4 @@
use crate::api::NewGameRequest; // change this use crate::message_handler::*; //change this
use rand::prelude::IteratorRandom; use rand::prelude::IteratorRandom;
use rand::thread_rng; use rand::thread_rng;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@ -101,6 +101,7 @@ impl CAHGame {
Ok(()) Ok(())
} }
pub fn new(request: NewGameRequest) -> Result<Self> { pub fn new(request: NewGameRequest) -> Result<Self> {
let mut game = CAHGame { let mut game = CAHGame {
..Default::default() ..Default::default()

View file

@ -13,6 +13,7 @@ pub mod gamemaster;
use crate::gamemaster::*; use crate::gamemaster::*;
pub mod api; pub mod api;
use crate::api::*; use crate::api::*;
use crate::message_handler::*;
/// Parse json for card data /// Parse json for card data
fn load_json(path: &str) -> Result<Vec<CAHCardSet>, Box<dyn Error>> { fn load_json(path: &str) -> Result<Vec<CAHCardSet>, Box<dyn Error>> {