diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-04 16:48:07 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-04 16:48:07 +0200 |
commit | 34967cd3b6530656ef0bf31810f9fd6dfb853765 (patch) | |
tree | 912bb0995db6997b601f246cfb0420b6b3ab2101 /src/spectate/server.rs | |
parent | ce0b808a01081322abc7ed51e09d0f452b606ad7 (diff) | |
download | gpn-tron-rust-34967cd3b6530656ef0bf31810f9fd6dfb853765.tar gpn-tron-rust-34967cd3b6530656ef0bf31810f9fd6dfb853765.tar.bz2 gpn-tron-rust-34967cd3b6530656ef0bf31810f9fd6dfb853765.tar.zst |
can vie games
Diffstat (limited to 'src/spectate/server.rs')
-rw-r--r-- | src/spectate/server.rs | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/spectate/server.rs b/src/spectate/server.rs index 9dbfebe..e3e9f80 100644 --- a/src/spectate/server.rs +++ b/src/spectate/server.rs @@ -6,6 +6,7 @@ use anyhow::Result; use axum::extract; use axum::extract::connect_info::ConnectInfo; use axum::extract::ws::Message; +use axum::http::HeaderMap; use axum::response::Html; use axum::{ extract::ws::{WebSocket, WebSocketUpgrade}, @@ -13,8 +14,10 @@ use axum::{ routing::get, Router, }; +use headers::ContentType; use log::{info, warn}; use std::net::SocketAddr; +use std::str::FromStr; use std::sync::Arc; use tokio::spawn; use tokio::sync::{broadcast, RwLock}; @@ -32,6 +35,7 @@ pub async fn spectate_server(config: Config, state: Arc<State>) -> Result<()> { spawn(broadcaster(sstate.clone(), state)); let app = Router::new() .route("/", get(index)) + .route("/main.js", get(javascript)) .route("/events", get(ws_handler)) .with_state(sstate); let listener = tokio::net::TcpListener::bind(config.bind).await.unwrap(); @@ -47,6 +51,26 @@ pub async fn spectate_server(config: Config, state: Arc<State>) -> Result<()> { async fn index() -> Html<&'static str> { Html(include_str!("index.html")) } +#[cfg(debug_assertions)] +async fn javascript() -> (HeaderMap, String) { + use headers::HeaderMapExt; + use tokio::fs::read_to_string; + let mut hm = HeaderMap::new(); + hm.typed_insert(ContentType::from_str("application/javascript").unwrap()); + ( + hm, + read_to_string(concat!(env!("OUT_DIR"), "/main.js")) + .await + .unwrap(), + ) +} +#[cfg(not(debug_assertions))] +async fn javascript() -> (HeaderMap, &'static str) { + use headers::HeaderMapExt; + let mut hm = HeaderMap::new(); + hm.typed_insert(ContentType::from_str("application/javascript").unwrap()); + (hm, include_str!(concat!(env!("OUT_DIR"), "/main.js"))) +} async fn broadcaster(sstate: Arc<SpectateState>, state: Arc<State>) { let mut ticks = state.tick.subscribe(); @@ -59,8 +83,8 @@ async fn broadcaster(sstate: Arc<SpectateState>, state: Arc<State>) { sstate.past_events.write().await.clear(); events.push(Packet::Game { my_id: 0, - width: g.size.x as usize, - height: g.size.y as usize, + width: g.map.size.x as usize, + height: g.map.size.y as usize, }); for (player, (_, _, name)) in &g.heads { events.push(Packet::Player { |