aboutsummaryrefslogtreecommitdiff
path: root/src/game/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/server.rs')
-rw-r--r--src/game/server.rs6
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);
}
}