X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcore%2Fgame.rs;h=8474fab4ed116475f71d4be5ae779b769761a10a;hb=d34c324faf3016c49bfa53ad253f8b02920fa3bd;hp=e33579810ac533de351cb72273453cc731e63f69;hpb=a82a4d23f7e76f6899919fda31e7c29e68d319bb;p=kaka%2Frust-sdl-test.git diff --git a/src/core/game.rs b/src/core/game.rs index e335798..8474fab 100644 --- a/src/core/game.rs +++ b/src/core/game.rs @@ -1,4 +1,5 @@ use AppState; +use sdl2::joystick::PowerLevel; use common::Point2D; use core::controller::Controller; use core::controller::ControllerManager; @@ -176,6 +177,18 @@ impl Object for Character { ctrl.rumble(1.0, dt); } + if ctrl.start.is_pressed && !ctrl.start.was_pressed { + match ctrl.device.power_level() { + Ok(PowerLevel::Unknown) => { println!("power level unknown"); } + Ok(PowerLevel::Empty) => { println!("power level empty"); } + Ok(PowerLevel::Low) => { println!("power level low"); } + Ok(PowerLevel::Medium) => { println!("power level medium"); } + Ok(PowerLevel::Full) => { println!("power level full"); } + Ok(PowerLevel::Wired) => { println!("power level wired"); } + Err(_) => {} + }; + } + match ctrl.mov.x { v if v < -0.9 => { self.vel.x -= 0.5 } v if v > 0.9 => { self.vel.x += 0.5 } @@ -225,7 +238,7 @@ pub struct Boll { } impl Object for Boll { - fn update(&mut self, _objects: &mut Objects, lvl: &Level, _dt: Duration) -> ObjectState { + fn update(&mut self, objects: &mut Objects, lvl: &Level, _dt: Duration) -> ObjectState { self.vel += lvl.gravity; self.pos += self.vel; @@ -239,6 +252,18 @@ impl Object for Boll { } } + if self.pos.x <= 0.0 || self.pos.x >= 1280.0 { // only for testing + self.pos.x = self.pos.x.max(0.0).min(1280.0); + self.vel.x = -self.vel.x; + self.bounces = 0; + use rand::distributions::{Distribution, Normal}; + let normal = Normal::new(0.5, 0.4); + objects.push(Box::new(Boll { + vel: self.vel * normal.sample(&mut rand::thread_rng()), + ..*self + })); + } + Alive }