refactored controller module to allow expansion
This commit is contained in:
parent
772b85b0b7
commit
2b496865f7
3 changed files with 35 additions and 36 deletions
32
src/lib/controller/player.rs
Normal file
32
src/lib/controller/player.rs
Normal file
|
@ -0,0 +1,32 @@
|
|||
use std::io::{stdin, stdout};
|
||||
use termion::{event::Key, input::TermRead, raw::IntoRawMode};
|
||||
|
||||
use super::{Controller, ControllerError, Move};
|
||||
use crate::lib::grid::Grid;
|
||||
|
||||
pub struct PlayerController;
|
||||
|
||||
impl PlayerController {
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
||||
impl Controller for PlayerController {
|
||||
fn next_move(&mut self, _grid: &Grid) -> Result<Move, ControllerError> {
|
||||
let stdin = stdin();
|
||||
let mut _stdout = stdout().into_raw_mode().unwrap();
|
||||
for c in stdin.keys() {
|
||||
let movement = match c.unwrap() {
|
||||
Key::Char('q') => return Err(ControllerError::ExitSignal),
|
||||
Key::Left => Move::LEFT,
|
||||
Key::Right => Move::RIGHT,
|
||||
Key::Up => Move::UP,
|
||||
Key::Down => Move::DOWN,
|
||||
_ => continue,
|
||||
};
|
||||
return Ok(movement);
|
||||
}
|
||||
unreachable!()
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue