Make sure all numpad inputs are mirrored on the number row, so that Mac OS works with numpad controls
This commit is contained in:
parent
c490ab114b
commit
e0f3b7c255
@ -135,48 +135,49 @@ fn skip_turn(ecs: &mut World) -> RunState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn player_input(gs: &mut State, ctx: &mut Rltk) -> RunState {
|
pub fn player_input(gs: &mut State, ctx: &mut Rltk) -> RunState {
|
||||||
// Player movement
|
// Mac OS is special when it comes to the numpad. Instead of reporting
|
||||||
|
// the keys as Numpad-specific numbers, it reports the number row scan
|
||||||
|
// codes. The quick fix is to match on both types of number scan codes.
|
||||||
match ctx.key {
|
match ctx.key {
|
||||||
None => return RunState::AwaitingInput, // Nothing happened
|
None => return RunState::AwaitingInput, // Nothing happened
|
||||||
Some(key) => match key {
|
Some(key) => match key {
|
||||||
// Cardinal directions
|
// Cardinal directions
|
||||||
VirtualKeyCode::Left
|
VirtualKeyCode::Left
|
||||||
| VirtualKeyCode::Numpad4
|
| VirtualKeyCode::Numpad4
|
||||||
| VirtualKeyCode::H
|
| VirtualKeyCode::Key4
|
||||||
| VirtualKeyCode::Key4 => try_move_player(-1, 0, &mut gs.ecs),
|
| VirtualKeyCode::H => try_move_player(-1, 0, &mut gs.ecs),
|
||||||
|
|
||||||
VirtualKeyCode::Right
|
VirtualKeyCode::Right
|
||||||
| VirtualKeyCode::Numpad6
|
| VirtualKeyCode::Numpad6
|
||||||
| VirtualKeyCode::L
|
| VirtualKeyCode::Key6
|
||||||
| VirtualKeyCode::Key6 => try_move_player(1, 0, &mut gs.ecs),
|
| VirtualKeyCode::L => try_move_player(1, 0, &mut gs.ecs),
|
||||||
|
|
||||||
VirtualKeyCode::Up
|
VirtualKeyCode::Up
|
||||||
| VirtualKeyCode::Numpad8
|
| VirtualKeyCode::Numpad8
|
||||||
| VirtualKeyCode::K
|
| VirtualKeyCode::Key8
|
||||||
| VirtualKeyCode::Key8 => try_move_player(0, -1, &mut gs.ecs),
|
| VirtualKeyCode::K => try_move_player(0, -1, &mut gs.ecs),
|
||||||
|
|
||||||
VirtualKeyCode::Down
|
VirtualKeyCode::Down
|
||||||
| VirtualKeyCode::Numpad2
|
| VirtualKeyCode::Numpad2
|
||||||
| VirtualKeyCode::J
|
| VirtualKeyCode::Key2
|
||||||
| VirtualKeyCode::S
|
| VirtualKeyCode::J => try_move_player(0, 1, &mut gs.ecs),
|
||||||
| VirtualKeyCode::Key2 => try_move_player(0, 1, &mut gs.ecs),
|
|
||||||
|
|
||||||
// Diagonals
|
// Diagonals
|
||||||
VirtualKeyCode::Numpad9 | VirtualKeyCode::Y | VirtualKeyCode::Key9 => {
|
VirtualKeyCode::Numpad9 | VirtualKeyCode::Key9 | VirtualKeyCode::Y => {
|
||||||
try_move_player(1, -1, &mut gs.ecs)
|
try_move_player(1, -1, &mut gs.ecs)
|
||||||
}
|
}
|
||||||
VirtualKeyCode::Numpad7 | VirtualKeyCode::U | VirtualKeyCode::Key7 => {
|
VirtualKeyCode::Numpad7 | VirtualKeyCode::Key7 | VirtualKeyCode::U => {
|
||||||
try_move_player(-1, -1, &mut gs.ecs)
|
try_move_player(-1, -1, &mut gs.ecs)
|
||||||
}
|
}
|
||||||
VirtualKeyCode::Numpad3 | VirtualKeyCode::N | VirtualKeyCode::Key3 => {
|
VirtualKeyCode::Numpad3 | VirtualKeyCode::Key3 | VirtualKeyCode::N => {
|
||||||
try_move_player(1, 1, &mut gs.ecs)
|
try_move_player(1, 1, &mut gs.ecs)
|
||||||
}
|
}
|
||||||
VirtualKeyCode::Numpad1 | VirtualKeyCode::B | VirtualKeyCode::Key1 => {
|
VirtualKeyCode::Numpad1 | VirtualKeyCode::Key1 | VirtualKeyCode::B => {
|
||||||
try_move_player(-1, 1, &mut gs.ecs)
|
try_move_player(-1, 1, &mut gs.ecs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip Turn
|
// Skip Turn
|
||||||
VirtualKeyCode::Numpad5 | VirtualKeyCode::Space => return skip_turn(&mut gs.ecs),
|
VirtualKeyCode::Numpad5 | VirtualKeyCode::Key5 | VirtualKeyCode::Space => return skip_turn(&mut gs.ecs),
|
||||||
|
|
||||||
// Level changes
|
// Level changes
|
||||||
VirtualKeyCode::Period => {
|
VirtualKeyCode::Period => {
|
||||||
|
Loading…
Reference in New Issue
Block a user