Manage running key
This commit is contained in:
		
							parent
							
								
									20dddbd461
								
							
						
					
					
						commit
						1e1a8de252
					
				| @ -197,10 +197,9 @@ impl Updatable for Character { | ||||
|             self.speed.y = physics::MAXIMUM_VERTICAL_SPEED; | ||||
|         } | ||||
| 
 | ||||
|         let limit = if Key::Space.is_pressed() { | ||||
|             physics::MAXIMUM_RUNNING_SPEED | ||||
|         } else { | ||||
|             physics::MAXIMUM_WALKING_SPEED | ||||
|         let limit = match self.controls { | ||||
|             Some(controls) if controls.is_running() => physics::MAXIMUM_RUNNING_SPEED, | ||||
|             _ => physics::MAXIMUM_WALKING_SPEED, | ||||
|         }; | ||||
| 
 | ||||
|         self.speed.x = clamp(self.speed.x, -limit, limit); | ||||
|  | ||||
| @ -3,6 +3,7 @@ use sfml::window::joystick::{ | ||||
|     Axis, | ||||
|     axis_position, | ||||
|     is_connected, | ||||
|     is_button_pressed, | ||||
|     COUNT, | ||||
| }; | ||||
| 
 | ||||
| @ -73,6 +74,14 @@ impl Controls { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /// Returns whether the running key is pressed.
 | ||||
|     pub fn is_running(&self) -> bool { | ||||
|         match self { | ||||
|             Controls::Keyboard(ref map) => map.is_running(), | ||||
|             Controls::Gamepad(ref map) => map.is_running(), | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| /// A map between keyboard keys and actions.
 | ||||
| @ -82,6 +91,9 @@ pub struct KeyboardMap { | ||||
|     /// The key corresponding to the jump button.
 | ||||
|     jump_key: Key, | ||||
| 
 | ||||
|     /// The key corresponding to the run button.
 | ||||
|     run_key: Key, | ||||
| 
 | ||||
|     /// The key corresponding to the up button.
 | ||||
|     up_key: Key, | ||||
| 
 | ||||
| @ -102,6 +114,7 @@ impl KeyboardMap { | ||||
|     pub fn default() -> KeyboardMap { | ||||
|         KeyboardMap { | ||||
|             jump_key: Key::Space, | ||||
|             run_key: Key::LAlt, | ||||
|             up_key: Key::Up, | ||||
|             left_key: Key::Left, | ||||
|             right_key: Key::Right, | ||||
| @ -152,6 +165,11 @@ impl KeyboardMap { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /// Returns whether the running button is held down.
 | ||||
|     pub fn is_running(&self) -> bool { | ||||
|         self.run_key.is_pressed() | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| /// A map between gamepad buttons and actions.
 | ||||
| @ -164,6 +182,9 @@ pub struct GamepadMap { | ||||
|     /// Number of the jump button.
 | ||||
|     jump_button: u32, | ||||
| 
 | ||||
|     /// Number of the run button.
 | ||||
|     run_button: u32, | ||||
| 
 | ||||
|     /// Left / Right axis.
 | ||||
|     left_right_axis: Axis, | ||||
| 
 | ||||
| @ -183,6 +204,7 @@ impl GamepadMap { | ||||
|         Some(GamepadMap { | ||||
|             id: id, | ||||
|             jump_button: 1, | ||||
|             run_button: 2, | ||||
|             left_right_axis: Axis::X, | ||||
|         }) | ||||
|     } | ||||
| @ -229,4 +251,9 @@ impl GamepadMap { | ||||
|             0.0 | ||||
|         ) | ||||
|     } | ||||
| 
 | ||||
|     /// Returns whether the run button is held down.
 | ||||
|     pub fn is_running(&self) -> bool { | ||||
|         is_button_pressed(self.id, self.run_button) | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user