Add commands for diagonal movement

Cribbed directly from Nethack

This was really, really easy.
This commit is contained in:
Griffin Smith 2019-07-14 11:00:44 -04:00
parent bf03ebc549
commit 405dbffe37
5 changed files with 17 additions and 4 deletions

View file

@ -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,
}

View file

@ -6,4 +6,8 @@ pub enum Direction {
Up,
Down,
Right,
UpLeft,
UpRight,
DownRight,
DownLeft,
}

View file

@ -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),
)
}

View file

@ -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,
}
}
}