From 0a3b3bf177d54c68a22f061a7087d20d19488bba Mon Sep 17 00:00:00 2001 From: Iago Garrido Date: Mon, 18 Nov 2019 20:56:58 +0100 Subject: add initial ui logic --- src/entities.rs | 4 ++-- src/main.rs | 2 ++ src/state.rs | 13 ++++++++++++- 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, } -- cgit v1.2.3