|
@@ -1,57 +1,68 @@
|
|
|
use specs::prelude::*;
|
|
|
use specs_derive::*;
|
|
|
use rltk::{RGB};
|
|
|
+use serde::{Serialize, Deserialize};
|
|
|
+use specs::saveload::{Marker, ConvertSaveload};
|
|
|
+use specs::error::NoError;
|
|
|
|
|
|
// COMPONENTS
|
|
|
-#[derive(Component, Debug)]
|
|
|
+// Special component that exists to help serialize the game data
|
|
|
+#[derive(Component, Serialize, Deserialize, Clone)]
|
|
|
+pub struct SerializationHelper {
|
|
|
+ pub map : super::map::Map
|
|
|
+}
|
|
|
+
|
|
|
+pub struct SerializeMe;
|
|
|
+
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct AreaOfEffect {
|
|
|
pub radius : i32
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct Ranged {
|
|
|
pub range : i32
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct InflictsDamage {
|
|
|
pub damage : i32
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, Serialize, Deserialize, Clone)]
|
|
|
pub struct Consumable {}
|
|
|
|
|
|
-#[derive(Component, Debug, Clone)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload)]
|
|
|
pub struct WantsToDropItem {
|
|
|
pub item : Entity
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload)]
|
|
|
pub struct WantsToUseItem {
|
|
|
pub item : Entity,
|
|
|
pub target: Option<rltk::Point>
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug, Clone)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload)]
|
|
|
pub struct WantsToPickupItem {
|
|
|
pub collected_by : Entity,
|
|
|
pub item : Entity
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug, Clone)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload)]
|
|
|
pub struct InBackpack {
|
|
|
pub owner : Entity
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, Serialize, Deserialize, Clone)]
|
|
|
pub struct Item {}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct ProvidesHealing {
|
|
|
pub heal_amount : i32
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct SufferDamage {
|
|
|
pub amount : Vec<i32>
|
|
|
}
|
|
@@ -66,12 +77,12 @@ impl SufferDamage {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug, Clone)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct WantsToMelee {
|
|
|
pub target : Entity
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct CombatStats {
|
|
|
pub max_hp : i32,
|
|
|
pub hp : i32,
|
|
@@ -79,31 +90,31 @@ pub struct CombatStats {
|
|
|
pub power : i32
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, Serialize, Deserialize, Clone)]
|
|
|
pub struct BlocksTile {}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, ConvertSaveload, Clone)]
|
|
|
pub struct Name {
|
|
|
pub name : String
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Debug, Serialize, Deserialize, Clone)]
|
|
|
pub struct Monster {}
|
|
|
|
|
|
-#[derive(Component)]
|
|
|
+#[derive(Component, ConvertSaveload, Clone)]
|
|
|
pub struct Viewshed {
|
|
|
pub visible_tiles : Vec<rltk::Point>,
|
|
|
pub range : i32,
|
|
|
pub dirty: bool
|
|
|
}
|
|
|
|
|
|
-#[derive(Component)]
|
|
|
+#[derive(Component, ConvertSaveload, Clone)]
|
|
|
pub struct Position {
|
|
|
pub x: i32,
|
|
|
pub y: i32,
|
|
|
}
|
|
|
|
|
|
-#[derive(Component)]
|
|
|
+#[derive(Component, ConvertSaveload, Clone)]
|
|
|
pub struct Renderable {
|
|
|
pub glyph: rltk::FontCharType,
|
|
|
pub fg: RGB,
|
|
@@ -111,5 +122,5 @@ pub struct Renderable {
|
|
|
pub render_order : i32
|
|
|
}
|
|
|
|
|
|
-#[derive(Component, Debug)]
|
|
|
+#[derive(Component, Serialize, Deserialize, Clone)]
|
|
|
pub struct Player {}
|