aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2020-09-28 13:57:37 +0200
committerDaniel Schadt <kingdread@gmx.de>2020-09-28 13:57:37 +0200
commit9f73455cc21f5991dcb2844c369bb4ca7df64747 (patch)
tree4041707fe6fdcc6899e228e0c54b1dff3bfa53d9 /src/lib.rs
parent52deb7c4a8ed0a3714abe10c6d532e34f784f86c (diff)
downloadevtclib-9f73455cc21f5991dcb2844c369bb4ca7df64747.tar.gz
evtclib-9f73455cc21f5991dcb2844c369bb4ca7df64747.tar.bz2
evtclib-9f73455cc21f5991dcb2844c369bb4ca7df64747.zip
optionally implement serde::{Des,S}erialize
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 60b404c..5b35893 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -145,6 +145,7 @@ pub enum EvtcError {
/// Note that a `Player` is only the player character itself. Any additional entities that are
/// spawned by the player (clones, illusions, banners, ...) are either a [`Character`][Character]
/// or a [`Gadget`][Gadget].
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Hash, PartialEq, Eq, CopyGetters)]
pub struct Player {
/// The player's profession.
@@ -186,6 +187,7 @@ impl Player {
/// Examples of this include the [banners](https://wiki.guildwars2.com/wiki/Banner) spawned by
/// Warriors, but also skill effects like the roots created by
/// [Entangle](https://wiki.guildwars2.com/wiki/Entangle) or the other objects in the arena.
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Hash, PartialEq, Eq, CopyGetters)]
pub struct Gadget {
/// The id of the gadget.
@@ -208,6 +210,7 @@ impl Gadget {
///
/// Characters are NPCs such as the bosses themselves, additional mobs that they spawn, but also
/// friendly characters like Mesmer's clones and illusions, Necromancer minions, and so on.
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Hash, PartialEq, Eq, CopyGetters)]
pub struct Character {
/// The id of the character.
@@ -242,6 +245,7 @@ impl Character {
/// // Convert it
/// let agent: AgentKind = raw_agent.try_into().unwrap();
/// ```
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Hash, PartialEq, Eq)]
pub enum AgentKind {
/// The agent is a player.
@@ -440,6 +444,7 @@ impl TryFrom<&raw::Agent> for AgentKind {
/// `Kind`. An escape hatch is the method [`.erase()`][Agent::erase], which erases the kind
/// information and produces the default `Agent<()>`. Functions/methods that only take `Agent<()>`
/// can therefore be used by any other agent as well.
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Hash, PartialEq, Eq, Getters, CopyGetters)]
// For the reasoning of #[repr(C)] see Agent::transmute.
#[repr(C)]
@@ -700,6 +705,7 @@ impl Agent<Character> {
}
/// A fully processed log file.
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub struct Log {
agents: Vec<Agent>,