ggdt/examples/balls_v2/src/main.rs

50 lines
1.2 KiB
Rust

use std::path::Path;
use anyhow::Result;
use libretrogd::states::*;
use libretrogd::system::*;
use crate::entities::*;
use crate::states::*;
mod entities;
mod states;
fn main() -> Result<()> {
let system = SystemBuilder::new().window_title("Flying Balls").vsync(true).build()?;
let mut game = Game::new(system)?;
let mut states = States::new();
states.push(SimulationState)?;
let mut is_running = true;
let tick_frequency = game.context.system.tick_frequency();
let mut last_ticks = game.context.system.ticks();
while is_running && !states.is_empty() {
game.context.system.do_events_with(|event| {
match event {
SystemEvent::Quit => {
is_running = false;
},
_ => {}
}
});
let ticks = game.context.system.ticks();
let elapsed = ticks - last_ticks;
last_ticks = ticks;
game.context.delta = (elapsed as f64 / tick_frequency as f64) as f32;
states.update(&mut game)?;
game.context.system.video.clear(0);
states.render(&mut game);
game.context.system.display()?;
}
Ok(())
}