aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIago Garrido <iago086@gmail.com>2019-11-18 20:56:58 +0100
committerIago Garrido <iago086@gmail.com>2019-11-18 20:56:58 +0100
commit0a3b3bf177d54c68a22f061a7087d20d19488bba (patch)
treeea1bedebe13d48172f3d52ca6551804facf7c92d
parent806ba04cfc6f225df9a3628fefd04578cefdbda5 (diff)
add initial ui logic
-rw-r--r--src/entities.rs4
-rw-r--r--src/main.rs2
-rw-r--r--src/state.rs13
-rw-r--r--src/world.rs4
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>,
}