summaryrefslogtreecommitdiff
path: root/src/components.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components.rs')
-rw-r--r--src/components.rs32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/components.rs b/src/components.rs
index 3b17f0c..18de7f0 100644
--- a/src/components.rs
+++ b/src/components.rs
@@ -1,16 +1,38 @@
use specs::{
DenseVecStorage,
+ VecStorage,
+ FlaggedStorage,
Component
};
use super::controls::Control;
+use super::pos::Pos;
-#[derive(Component, Debug, Clone)]
+
+#[derive(Debug, Clone)]
+pub struct Position{
+ pub pos: Pos,
+ pub prev: Option<Pos>
+}
+impl Position {
+ pub fn new(pos: Pos) -> Position {
+ Position{pos, prev: None}
+ }
+}
+
+impl Component for Position {
+ type Storage = FlaggedStorage<Self, VecStorage<Self>>;
+}
+
+#[derive(Debug, Clone)]
pub struct Visible {
pub sprite: String,
pub height: f32
}
+impl Component for Visible {
+ type Storage = FlaggedStorage<Self, VecStorage<Self>>;
+}
#[derive(Component, Debug)]
pub struct Controller(pub Control);
@@ -20,5 +42,11 @@ pub struct Blocking;
#[derive(Component, Debug)]
pub struct Played {
- pub name: String
+ pub name: String,
+ pub is_new: bool
+}
+impl Played {
+ pub fn new(name: String) -> Played {
+ Played{name, is_new: true}
+ }
}