aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
blob: d2f22ff16c9312d90f098906d49eb93d2533e008 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use gpn_tron2::{
    bot::spawn_bots,
    config::Config,
    game::{server::game_server, Game},
    spectate::server::spectate_server,
    State,
};
use std::sync::Arc;
use tokio::{spawn, sync::broadcast};

#[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(),
        players: Default::default(),
        chat: broadcast::channel(16).0,
    });
    spawn(spectate_server(config.spectate, state.clone()));
    spawn_bots(config.bot, state.clone()).await;
    game_server(config.game, state.clone()).await?;
    Ok(())
}