mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-11 02:08:01 -06:00
feat: debug text rendering of statistics, formatting with tests
This commit is contained in:
27
src/app.rs
27
src/app.rs
@@ -5,19 +5,15 @@ use sdl2::render::TextureCreator;
|
||||
use sdl2::ttf::Sdl2TtfContext;
|
||||
use sdl2::video::WindowContext;
|
||||
use sdl2::{AudioSubsystem, EventPump, Sdl, VideoSubsystem};
|
||||
use thousands::Separable;
|
||||
use tracing::info;
|
||||
|
||||
use crate::error::{GameError, GameResult};
|
||||
|
||||
use crate::constants::{CANVAS_SIZE, LOOP_TIME, SCALE};
|
||||
use crate::game::Game;
|
||||
use crate::platform::get_platform;
|
||||
use crate::systems::profiling::SystemTimings;
|
||||
|
||||
pub struct App {
|
||||
pub game: Game,
|
||||
last_timings: Instant,
|
||||
last_tick: Instant,
|
||||
focused: bool,
|
||||
_cursor_pos: Vec2,
|
||||
@@ -70,7 +66,6 @@ impl App {
|
||||
game,
|
||||
focused: true,
|
||||
last_tick: Instant::now(),
|
||||
last_timings: Instant::now() - Duration::from_secs_f32(0.5),
|
||||
_cursor_pos: Vec2::ZERO,
|
||||
})
|
||||
}
|
||||
@@ -113,28 +108,6 @@ impl App {
|
||||
return false;
|
||||
}
|
||||
|
||||
if self.last_timings.elapsed() > Duration::from_secs(1) {
|
||||
// Show timing statistics over the last 90 frames
|
||||
if let Some(timings) = self.game.world.get_resource::<SystemTimings>() {
|
||||
let stats = timings.get_stats();
|
||||
let (total_avg, total_std) = timings.get_total_stats();
|
||||
|
||||
let mut individual_timings = String::new();
|
||||
for (name, (avg, std_dev)) in stats.iter() {
|
||||
individual_timings.push_str(&format!("{}={:?} ± {:?} ", name, avg, std_dev));
|
||||
}
|
||||
|
||||
let effective_fps = match 1.0 / total_avg.as_secs_f64() {
|
||||
f if f > 100.0 => (f as u32).separate_with_commas(),
|
||||
f if f < 10.0 => format!("{:.1} FPS", f),
|
||||
f => format!("{:.0} FPS", f),
|
||||
};
|
||||
|
||||
info!("({effective_fps}) {total_avg:?} ± {total_std:?} ({individual_timings})");
|
||||
}
|
||||
self.last_timings = Instant::now();
|
||||
}
|
||||
|
||||
// Sleep if we still have time left
|
||||
if start.elapsed() < LOOP_TIME {
|
||||
let time = LOOP_TIME.saturating_sub(start.elapsed());
|
||||
|
||||
Reference in New Issue
Block a user