diff options
Diffstat (limited to 'src/game/server.rs')
-rw-r--r-- | src/game/server.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/game/server.rs b/src/game/server.rs index f1d10d2..f5de1bf 100644 --- a/src/game/server.rs +++ b/src/game/server.rs @@ -29,19 +29,23 @@ pub async fn game_server(config: Config, state: Arc<State>) -> Result<()> { } async fn game_loop(config: Config, state: Arc<State>) { + let mut speed = config.tickrate; loop { - sleep(Duration::from_secs_f32(1. / config.tickrate)).await; + sleep(Duration::from_secs_f32(1. / speed)).await; let mut g = state.game.write().await; let res = g.tick(); match res { ControlFlow::Continue(()) => { let _ = state.tick.send(false); + speed += config.tickrate_speedup; + speed = speed.min(config.tickrate_max) } ControlFlow::Break(winner) => { info!("winner: {winner:?}"); let p = state.players.read().await; *g = Game::new(p.clone().into_iter().collect()); + speed = config.tickrate; let _ = state.tick.send(true); } } |