Dolda2000 GitWeb
/
kaka
/
rust-sdl-test.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added a controller manager
[kaka/rust-sdl-test.git]
/
src
/
core
/
app.rs
diff --git
a/src/core/app.rs
b/src/core/app.rs
index
f6adba0
..
7e91c94
100644
(file)
--- a/
src/core/app.rs
+++ b/
src/core/app.rs
@@
-1,5
+1,6
@@
use boll::*;
use common::{Point2D, Rect};
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};
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()?;
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
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 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))),
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<dyn AppState>,
pub event_pump: EventPump,
pub sprites: SpriteManager,
pub state: Box<dyn AppState>,
+ pub ctrl_man: ControllerManager,
}
impl App {
}
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;
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();
}
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() {
fn handle_events(&mut self) -> Result<(), ()> {
for event in self.event_pump.poll_iter() {
+ self.ctrl_man.handle_event(&event);
match 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),
Event::Quit { .. }
| Event::KeyDown {
keycode: Some(Keycode::Escape),