Add commands for diagonal movement
Cribbed directly from Nethack This was really, really easy.
This commit is contained in:
parent
bf03ebc549
commit
405dbffe37
5 changed files with 17 additions and 4 deletions
|
|
@ -23,6 +23,11 @@ impl Command {
|
|||
Char('k') | Char('w') | Key::Up => Some(Move(Up)),
|
||||
Char('j') | Char('s') | Key::Down => Some(Move(Down)),
|
||||
Char('l') | Char('d') | Key::Right => Some(Move(Right)),
|
||||
Char('y') => Some(Move(UpLeft)),
|
||||
Char('u') => Some(Move(UpRight)),
|
||||
Char('b') => Some(Move(DownLeft)),
|
||||
Char('n') => Some(Move(DownRight)),
|
||||
|
||||
Ctrl('p') => Some(PreviousMessage),
|
||||
_ => None,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,4 +6,8 @@ pub enum Direction {
|
|||
Up,
|
||||
Down,
|
||||
Right,
|
||||
UpLeft,
|
||||
UpRight,
|
||||
DownRight,
|
||||
DownLeft,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -234,10 +234,9 @@ mod tests {
|
|||
em.get(entity_id).map(|e| e.position()),
|
||||
Some(new_position)
|
||||
);
|
||||
assert_eq!(
|
||||
assert!(
|
||||
em.at(new_position).iter().map(
|
||||
|e| e.name.clone()).collect::<Vec<_>>(),
|
||||
vec![ent.name]
|
||||
|e| e.name.clone()).any(|en| en == ent.name),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ pub mod direction;
|
|||
pub mod entity_map;
|
||||
pub use collision::Collision;
|
||||
pub use direction::Direction;
|
||||
pub use direction::Direction::{Down, Left, Right, Up};
|
||||
pub use direction::Direction::*;
|
||||
use proptest_derive::Arbitrary;
|
||||
use termion::cursor;
|
||||
|
||||
|
|
@ -217,6 +217,10 @@ impl ops::Add<Direction> for Position {
|
|||
self
|
||||
}
|
||||
}
|
||||
UpLeft => self + Up + Left,
|
||||
UpRight => self + Up + Right,
|
||||
DownLeft => self + Down + Left,
|
||||
DownRight => self + Down + Right,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue