aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
blob: e7a60dec537c78246992283e5da442e31b1f5a95 (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
26
27
28
use gpn_tron::{
    bot::spawn_bots,
    config::Config,
    database::open_db,
    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 {
        db: open_db(config.database)?,
        tick: broadcast::channel(512).0,
        game: Game::new(vec![]).into(),
        players: Default::default(),
        win_history: Default::default(),
        chat: broadcast::channel(512).0,
    });
    spawn(spectate_server(config.spectate, state.clone()));
    spawn_bots(config.bot, state.clone()).await;
    game_server(config.game, state.clone()).await?;
    Ok(())
}