VeloCT_Base / src /timeman.rs
Taperx's picture
Deploy Base model with clean official lichess-bot folder
3014f14
Raw
History Blame Contribute Delete
983 Bytes
// timeman.rs
use std::time::{Instant, Duration};
pub struct TimeManager {
start_time: Instant,
time_limit: Duration,
nodes_searched: u64,
}
impl TimeManager {
pub fn new(wtime: u64, btime: u64, winc: u64, binc: u64, side: crate::types::Color) -> Self {
let (time, inc) = if side == crate::types::Color::White {
(wtime, winc)
} else {
(btime, binc)
};
// Basic time allocation: 1/40th of remaining time + half increment
let allocated = (time / 40) + (inc / 2);
Self {
start_time: Instant::now(),
time_limit: Duration::from_millis(allocated),
nodes_searched: 0,
}
}
pub fn tick(&mut self) -> bool {
self.nodes_searched += 1;
if self.nodes_searched & 2047 == 0 {
if self.start_time.elapsed() >= self.time_limit {
return false; // Out of time
}
}
true
}
}