Skip to main content

stats/
stats.rs

1use std::time::Duration;
2
3use warcraft3_stats_observer::ObserverHandle;
4
5fn main() {
6    let od = match ObserverHandle::new() {
7        Ok(od) => od,
8        Err(e) => {
9            eprintln!("Error opening observer API. Is Warcraft3 running? Error: {e:?}");
10            return;
11        }
12    };
13
14    println!("version: {}", { od.version });
15    println!("refresh rate: {}", { od.refresh_rate });
16
17    let game = &od.game;
18
19    println!("in game: {:?}", game.in_game);
20    println!(
21        "time: {:02}:{:02}",
22        game.time().as_secs() / 60,
23        game.time().as_secs() % 60
24    );
25    println!("active player count: {:?}", game.active_player_count);
26    println!("game name: {}", game.game_name);
27    println!("map name: {}", game.map_name);
28
29    loop {
30        for player in od.players.iter().take(od.game.active_player_count as usize) {
31            println!("{} has {} gold {} lumber", player.name, { player.gold }, {
32                player.lumber
33            });
34        }
35        println!();
36        std::thread::sleep(Duration::from_millis(od.refresh_rate as u64));
37    }
38}