diff options
Diffstat (limited to 'src/state.rs')
-rw-r--r-- | src/state.rs | 50 |
1 files changed, 44 insertions, 6 deletions
diff --git a/src/state.rs b/src/state.rs index d377784..5f86d3a 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,10 +1,30 @@ use crossterm::cursor::MoveTo; -use crossterm::{queue, Output}; -use std::io::{stdout, Write}; +use crossterm::{ + queue, + Output +}; +use std::io::{ + stdout, + Write +}; -use crate::entities::{Character, Entity, Player}; -use crate::tiling::{tile_to_str, TileGrid, TileType}; -use crate::world::{apply_movement, Dungeon, Generatable, Level, Movement}; +use crate::entities::{ + Character, + Entity, + Player +}; +use crate::tiling::{ + tile_to_str, + TileGrid, + TileType +}; +use crate::world::{ + apply_movement, + Dungeon, + Generatable, + Level, + Movement +}; pub struct State { pub player: Character, @@ -75,17 +95,35 @@ impl State { self.render_entity(&self.player) } + fn ui_state_position(&self) -> MoveTo { + MoveTo(0, (self.dungeon.ysize()) as u16) + } + + fn ui_notification_position(&self) -> MoveTo { + MoveTo(0, (self.dungeon.ysize() + 1) as u16) + } + pub fn render_ui(&self) { let mut sout = stdout(); queue!( sout, - MoveTo(0, (self.dungeon.ysize() + 1) as u16), + self.ui_state_position(), Output(self.player.stats()) ) .unwrap(); sout.flush().unwrap(); } + pub fn ui_help(&self) { + let mut sout = stdout(); + queue!( + sout, + self.ui_notification_position(), + Output("quit: q, movement{up(k), down(j), left(h), right(l)}") + ).unwrap(); + sout.flush().unwrap(); + } + pub fn current_level(&self) -> &Level { &self.dungeon.levels[self.level] } |