about summary refs log tree commit diff
path: root/src/entities
diff options
context:
space:
mode:
authorGriffin Smith <root@gws.fyi>2019-08-03T19·59-0400
committerGriffin Smith <root@gws.fyi>2019-08-04T00·31-0400
commit48fb3f6624b95e9b18a5ff0a814573445c6bc2ab (patch)
tree441a8f04c3e64fd8e3559bab85bab8e0b45789ff /src/entities
parent82cefedab9e44b48f4d3cc08b0f6e002ae383c9d (diff)
Add inventory, and the ability to pick up items
Add inventory as a basic vector of items attached to the character, and
the ability to pick up a single item where the character stands
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/character.rs3
-rw-r--r--src/entities/entity_char.rs2
-rw-r--r--src/entities/item.rs2
-rw-r--r--src/entities/raw_types.rs4
4 files changed, 7 insertions, 4 deletions
diff --git a/src/entities/character.rs b/src/entities/character.rs
index 360478e8be1c..3e8336b129ff 100644
--- a/src/entities/character.rs
+++ b/src/entities/character.rs
@@ -1,4 +1,5 @@
 use crate::display;
+use crate::entities::item::Item;
 use crate::types::{Position, Speed};
 use std::io::{self, Write};
 
@@ -7,6 +8,7 @@ const DEFAULT_SPEED: Speed = Speed(100);
 entity! {
     pub struct Character {
         pub o_name: Option<String>,
+        pub inventory: Vec<Box<Item>>,
     }
 }
 
@@ -18,6 +20,7 @@ impl Character {
             id: None,
             position: Position { x: 0, y: 0 },
             o_name: None,
+            inventory: Vec::new(),
         }
     }
 
diff --git a/src/entities/entity_char.rs b/src/entities/entity_char.rs
index 88ca8a55a823..70f26bfffdbd 100644
--- a/src/entities/entity_char.rs
+++ b/src/entities/entity_char.rs
@@ -2,7 +2,7 @@ use crate::display::color::Color;
 use std::fmt::{self, Display, Formatter};
 use termion::color;
 
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, PartialEq, Eq)]
 pub struct EntityChar {
     #[serde(default)]
     color: Color,
diff --git a/src/entities/item.rs b/src/entities/item.rs
index aa99fb42e2c1..5f08780d4fb2 100644
--- a/src/entities/item.rs
+++ b/src/entities/item.rs
@@ -4,7 +4,7 @@ use crate::entities::{Describe, EntityID};
 use crate::types::Position;
 use std::io::{self, Write};
 
-#[derive(Debug, Clone)]
+#[derive(Debug, Clone, PartialEq, Eq)]
 pub struct Item {
     pub id: Option<EntityID>,
     pub typ: &'static ItemType<'static>,
diff --git a/src/entities/raw_types.rs b/src/entities/raw_types.rs
index 59dd19ed2fa2..4bc291b69580 100644
--- a/src/entities/raw_types.rs
+++ b/src/entities/raw_types.rs
@@ -17,7 +17,7 @@ pub struct CreatureType<'a> {
     pub friendly: bool,
 }
 
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, PartialEq, Eq)]
 pub struct EdibleItem<'a> {
     #[serde(borrow)]
     pub eat_message: Option<Message<'a>>,
@@ -26,7 +26,7 @@ pub struct EdibleItem<'a> {
     pub hitpoints_healed: u16,
 }
 
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, PartialEq, Eq)]
 pub struct ItemType<'a> {
     pub name: &'a str,