about summary refs log tree commit diff
path: root/src/entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/character.rs25
-rw-r--r--src/entities/mod.rs1
2 files changed, 25 insertions, 1 deletions
diff --git a/src/entities/character.rs b/src/entities/character.rs
index e40b7b988e..f436608ea5 100644
--- a/src/entities/character.rs
+++ b/src/entities/character.rs
@@ -1,15 +1,38 @@
+use proptest_derive::Arbitrary;
+use std::io::{self, Write};
+use termion::cursor;
+
+use crate::display;
 use crate::types::{Position, Speed};
 
 const DEFAULT_SPEED: Speed = Speed(100);
 
+#[derive(Debug, PartialEq, Eq, Arbitrary)]
 pub struct Character {
-    position: Position,
+    /// The position of the character, relative to the game
+    pub position: Position,
 }
 
 impl Character {
+    pub fn new() -> Character {
+        Character {
+            position: Position { x: 0, y: 0 },
+        }
+    }
+
     pub fn speed(&self) -> Speed {
         Speed(100)
     }
 }
 
 positioned!(Character);
+
+impl display::Draw for Character {
+    fn do_draw<W: Write>(&self, out: &mut W) -> io::Result<()> {
+        write!(
+            out,
+            "@{}",
+            cursor::Left(1),
+        )
+    }
+}
diff --git a/src/entities/mod.rs b/src/entities/mod.rs
index 7889122666..0320f2ddd9 100644
--- a/src/entities/mod.rs
+++ b/src/entities/mod.rs
@@ -1 +1,2 @@
 pub mod character;
+pub use character::Character;