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_tron2::{
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(())
}
|