diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-03 21:27:52 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-03 21:27:52 +0200 |
commit | 3d107ea4710f3dec0eedd91ed5bc1e52d8f15912 (patch) | |
tree | 614a2110d1813c1f0df4170ac9932574c4e22c80 /src/main.rs | |
download | gpn-tron-rust-3d107ea4710f3dec0eedd91ed5bc1e52d8f15912.tar gpn-tron-rust-3d107ea4710f3dec0eedd91ed5bc1e52d8f15912.tar.bz2 gpn-tron-rust-3d107ea4710f3dec0eedd91ed5bc1e52d8f15912.tar.zst |
code
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..368f439 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,31 @@ +#![feature(iterator_try_collect)] +use config::Config; +use game::{server::game_server, Game}; +use spectate::server::spectate_server; +use std::sync::Arc; +use tokio::{ + spawn, + sync::{broadcast, RwLock}, +}; + +pub mod config; +pub mod game; +pub mod spectate; + +pub struct State { + tick: broadcast::Sender<bool>, // true for new game + game: RwLock<Game>, +} + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + env_logger::init_from_env("LOG"); + let config = Config::load()?; + let state = Arc::new(State { + tick: broadcast::channel(16).0, + game: Game::new(vec![]).into(), + }); + spawn(spectate_server(config.spectate, state.clone())); + game_server(config.game, state.clone()).await?; + Ok(()) +} |