X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcore%2Fapp.rs;h=7e91c948a50bf717f440e3063404be84849422bb;hb=3f344b6327a83b36aa88c32d7b016edbc3cfc1ef;hp=f6adba046d0d64f4885d68b6cebf3f05d2282ce7;hpb=3d049b501751d825314db31b7f89d607eaae3e70;p=kaka%2Frust-sdl-test.git diff --git a/src/core/app.rs b/src/core/app.rs index f6adba0..7e91c94 100644 --- a/src/core/app.rs +++ b/src/core/app.rs @@ -1,5 +1,6 @@ use boll::*; use common::{Point2D, Rect}; +use core::controller::ControllerManager; use point; // defined in common, but loaded from main... use rand::Rng; use sdl2::event::{Event, WindowEvent}; @@ -46,7 +47,6 @@ impl AppBuilder { let context = sdl2::init().unwrap(); sdl2::image::init(sdl2::image::InitFlag::PNG)?; let video = context.video()?; - self.print_video_display_modes(&video); let window = video @@ -74,12 +74,15 @@ impl AppBuilder { let event_pump = context.event_pump()?; let sprites = SpriteManager::new(canvas.texture_creator()); let screen = canvas.output_size().unwrap(); + let ctrl = context.game_controller()?; + ctrl.set_event_state(true); Ok(App { canvas, event_pump, sprites, state: self.state.unwrap_or_else(|| Box::new(ActiveState::new(screen))), + ctrl_man: ControllerManager::new(ctrl, context.haptic()?), }) } @@ -128,6 +131,7 @@ pub struct App { pub event_pump: EventPump, pub sprites: SpriteManager, pub state: Box, + pub ctrl_man: ControllerManager, } impl App { @@ -163,7 +167,7 @@ impl App { if frame_count == FPS as u64 { let duration = fps_time.to(PreciseTime::now()).num_nanoseconds().unwrap() as f64 / 1_000_000_000.0; - println!("fps: {}", frame_count as f64 / duration); + // println!("fps: {}", frame_count as f64 / duration); frame_count = 0; fps_time = PreciseTime::now(); } @@ -174,7 +178,12 @@ impl App { fn handle_events(&mut self) -> Result<(), ()> { for event in self.event_pump.poll_iter() { + self.ctrl_man.handle_event(&event); match event { + Event::ControllerButtonDown { .. } => { + let c = self.ctrl_man.controllers[0].clone(); + c.rumble(0.75, 100); + } Event::Quit { .. } | Event::KeyDown { keycode: Some(Keycode::Escape),