From 20c791ebe6526eec175cf83ec1f60d9c4eaa2e67 Mon Sep 17 00:00:00 2001 From: "Jakob L. Kreuze" Date: Wed, 30 May 2018 16:30:03 -0400 Subject: Began to implement a timer systen and a parser for PALETTE.DAT --- src/timer.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/timer.rs (limited to 'src/timer.rs') diff --git a/src/timer.rs b/src/timer.rs new file mode 100644 index 0000000..f34df8d --- /dev/null +++ b/src/timer.rs @@ -0,0 +1,33 @@ +extern crate sdl2; + +use sdl2::TimerSubsystem; + +static const FREQUENCY = 1000; + +/// Implementation of a timer for managing game ticks. +pub struct Timer { + last_sample: u32, + ticks_per_second: u32, + ms_per_u64_tick: f64, + + sdl_timer: TimerSubsystem, +} + +impl Timer { + /// Create a new timer with the given frequency. + pub fn new(ticks_per_second: u32, sdl_timer: TimerSubsystem) -> Timer { + let last_sample = sdl_timer.ticks() * tics_per_second / FREQUENCY; + let ms_per_u64_tick = 1000.0 / sdl_timer.performance_frequency(); + Timer { last_sample, ticks_per_second, ms_per_u64_tick, sdl_timer } + } + + // TODO: Document this. + pub fn update(&mut self) { + let ms = self.sdl_timer.ticks(); + let ticks = ms * self.ticks_per_second / FREQUENCY - self.last_sample; + + if ticks > 0 { + self.last_sample += ticks; + } + } +} -- cgit v1.3