Added test gliding

Former-commit-id: 7aa1513511490feec531f10e58ad955c485ac594
This commit is contained in:
Joshua Barretto 2019-05-13 21:59:42 +01:00
parent 8af606e348
commit 8ef8c178d7
8 changed files with 18 additions and 0 deletions

View File

@ -7,6 +7,7 @@ pub enum InputEvent {
pub struct Input {
pub move_dir: Vec2<f32>,
pub jumping: bool,
pub gliding: bool,
pub events: Vec<InputEvent>,
}
@ -15,6 +16,7 @@ impl Default for Input {
Input {
move_dir: Vec2::zero(),
jumping: false,
gliding: false,
events: Vec::new(),
}
}

View File

@ -156,6 +156,7 @@ impl Client {
comp::Control {
move_dir: input.move_dir,
jumping: input.jumping,
gliding: input.gliding,
},
);

View File

@ -18,6 +18,7 @@ impl Component for Agent {
pub struct Control {
pub move_dir: Vec2<f32>,
pub jumping: bool,
pub gliding: bool,
}
impl Default for Control {
@ -25,6 +26,7 @@ impl Default for Control {
Self {
move_dir: Vec2::zero(),
jumping: false,
gliding: false,
}
}
}

View File

@ -53,6 +53,10 @@ impl<'a> System<'a> for Sys {
// TODO: Don't hard-code this
// Apply physics to the player: acceleration and non-linear decceleration
vel.0 += control.move_dir * 0.2 - vel.0.map(|e| e * e.abs() + e) * 0.002;
if control.gliding && vel.0.z < 0.0 {
vel.0.z += 9.81 * 3.95 * dt.0;
}
}
let animation = if on_ground {

View File

@ -6,6 +6,7 @@ pub struct KeyState {
pub up: bool,
pub down: bool,
pub jump: bool,
pub glide: bool,
}
impl KeyState {
@ -16,6 +17,7 @@ impl KeyState {
up: false,
down: false,
jump: false,
glide: false,
}
}

View File

@ -66,6 +66,7 @@ impl SessionState {
Input {
move_dir,
jumping: self.key_state.jump,
gliding: self.key_state.glide,
events: input_events,
},
dt,
@ -145,12 +146,14 @@ impl PlayState for SessionState {
self.input_events.push(InputEvent::Jump);
self.key_state.jump = true;
}
Event::KeyDown(Key::Glide) => self.key_state.glide = true,
// Movement Key Released
Event::KeyUp(Key::MoveForward) => self.key_state.up = false,
Event::KeyUp(Key::MoveBack) => self.key_state.down = false,
Event::KeyUp(Key::MoveLeft) => self.key_state.left = false,
Event::KeyUp(Key::MoveRight) => self.key_state.right = false,
Event::KeyUp(Key::Jump) => self.key_state.jump = false,
Event::KeyUp(Key::Glide) => self.key_state.glide = false,
// Pass all other events to the scene
event => {
self.scene.handle_input_event(event);

View File

@ -25,6 +25,7 @@ pub struct ControlSettings {
pub move_back: VirtualKeyCode,
pub move_right: VirtualKeyCode,
pub jump: VirtualKeyCode,
pub glide: VirtualKeyCode,
pub map: VirtualKeyCode,
pub bag: VirtualKeyCode,
pub quest_log: VirtualKeyCode,
@ -60,6 +61,7 @@ impl Default for Settings {
move_back: VirtualKeyCode::S,
move_right: VirtualKeyCode::D,
jump: VirtualKeyCode::Space,
glide: VirtualKeyCode::LShift,
map: VirtualKeyCode::M,
bag: VirtualKeyCode::B,
quest_log: VirtualKeyCode::L,

View File

@ -46,6 +46,7 @@ impl Window {
key_map.insert(settings.controls.move_back, Key::MoveBack);
key_map.insert(settings.controls.move_right, Key::MoveRight);
key_map.insert(settings.controls.jump, Key::Jump);
key_map.insert(settings.controls.glide, Key::Glide);
key_map.insert(settings.controls.map, Key::Map);
key_map.insert(settings.controls.bag, Key::Bag);
key_map.insert(settings.controls.quest_log, Key::QuestLog);
@ -182,6 +183,7 @@ pub enum Key {
MoveLeft,
MoveRight,
Jump,
Glide,
Enter,
Escape,
Map,