diff options
author | Iago Garrido <iago086@gmail.com> | 2019-11-18 20:56:58 +0100 |
---|---|---|
committer | Iago Garrido <iago086@gmail.com> | 2019-11-18 20:56:58 +0100 |
commit | 0a3b3bf177d54c68a22f061a7087d20d19488bba (patch) | |
tree | ea1bedebe13d48172f3d52ca6551804facf7c92d | |
parent | 806ba04cfc6f225df9a3628fefd04578cefdbda5 (diff) |
add initial ui logic
-rw-r--r-- | src/entities.rs | 4 | ||||
-rw-r--r-- | src/main.rs | 2 | ||||
-rw-r--r-- | src/state.rs | 13 | ||||
-rw-r--r-- | src/world.rs | 4 |
4 files changed, 18 insertions, 5 deletions
diff --git a/src/entities.rs b/src/entities.rs index ab1c1a1..4265b1d 100644 --- a/src/entities.rs +++ b/src/entities.rs @@ -183,8 +183,8 @@ impl Player for Character { fn stats(&self) -> String {
format!(
- "{} - hp: {}/{} attack: {} dodge: {} luck: {} experience: {}",
- self.class, self.health, self.max_health, self.attack, self.dodge, self.luck, self.xp
+ "{}({}) - hp: {}/{} attack: {} dodge: {} luck: {} experience: {}",
+ self.name, self.class, self.health, self.max_health, self.attack, self.dodge, self.luck, self.xp
)
}
}
diff --git a/src/main.rs b/src/main.rs index 75452d9..81f537b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,6 +51,8 @@ fn main() { state.render_player(); + state.render_ui(); + if let Some(event) = reader.next() { match event { InputEvent::Keyboard(KeyEvent::Char('q')) => break, diff --git a/src/state.rs b/src/state.rs index cfda88c..2c5f16f 100644 --- a/src/state.rs +++ b/src/state.rs @@ -2,7 +2,7 @@ use crossterm::cursor::MoveTo; use crossterm::{queue, Output}; use std::io::{stdout, Write}; -use crate::entities::{Character, Entity}; +use crate::entities::{Character, Player, Entity}; use crate::tiling::{tile_to_str, TileGrid}; use crate::world::{Dungeon, Generatable, Level}; @@ -78,6 +78,17 @@ impl State { self.render_entity(&self.player) } + pub fn render_ui(&self) { + let mut sout = stdout(); + queue!( + sout, + MoveTo(0, (self.dungeon.ysize + 1) as u16), + Output(self.player.stats()) + ) + .unwrap(); + sout.flush().unwrap(); + } + pub fn current_level(&self) -> &Level { &self.dungeon.levels[self.level] } diff --git a/src/world.rs b/src/world.rs index f9c8b2e..21d0d86 100644 --- a/src/world.rs +++ b/src/world.rs @@ -221,8 +221,8 @@ pub struct Level { } pub struct Dungeon { - xsize: usize, - ysize: usize, + pub xsize: usize, + pub ysize: usize, depth: usize, pub levels: Vec<Level>, } |