extern crate rand; extern crate sdl2; mod caster; use caster::Caster; mod game_state; use game_state::GameState; mod event_handler; use std::error::Error; use std::time::Duration; pub fn run() -> Result<(), Box> { let sdl_context = sdl2::init()?; let video_subsystem = sdl_context.video()?; let mut event_pump = sdl_context.event_pump()?; let mut gamestate = GameState::init(); let mut caster = Caster::init(video_subsystem, "Vash Caster", 800, 600)?; while gamestate.running() { event_handler::process_events(&mut event_pump, &mut gamestate); gamestate.update(); caster.update(&gamestate)?; ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 144)); } Ok(()) } struct Point { x: i16, y: i16, }