aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFlaise <[email protected]>2019-08-02 20:30:48 -0500
committerMatthew Collins <[email protected]>2019-08-03 09:08:03 +0100
commitf109df710c3715b1bf863c5b3f1ac1f8a53b39ed (patch)
tree6927c655417ede7c48e168892bf3cae32512cc80 /src
parentImplemented Serialize, Deserialize and other common traits where appropriate (diff)
downloadsteamworks-rs-f109df710c3715b1bf863c5b3f1ac1f8a53b39ed.tar.xz
steamworks-rs-f109df710c3715b1bf863c5b3f1ac1f8a53b39ed.zip
Made serde dependency optional
Diffstat (limited to 'src')
-rw-r--r--src/app.rs3
-rw-r--r--src/error.rs5
-rw-r--r--src/friends.rs13
-rw-r--r--src/lib.rs11
-rw-r--r--src/matchmaking.rs6
-rw-r--r--src/networking.rs6
-rw-r--r--src/remote_storage.rs3
-rw-r--r--src/ugc.rs3
-rw-r--r--src/user_stats.rs18
9 files changed, 46 insertions, 22 deletions
diff --git a/src/app.rs b/src/app.rs
index 7b96364..9df5820 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -1,7 +1,8 @@
use super::*;
/// An id for a steam app/game
-#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct AppId(pub u32);
/// Access to the steam apps interface
diff --git a/src/error.rs b/src/error.rs
index 10e187d..cea2ed9 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,11 +1,14 @@
+#[cfg(feature = "serde")]
use serde::{Serialize, Deserialize};
+
use crate::sys;
/// Covers errors that can be returned by the steamworks API
///
/// Documentation is based on official documentation which doesn't
/// always explain when an error could be returned or its meaning.
-#[derive(Debug, Fail, Serialize, Deserialize, PartialEq, Eq)]
+#[derive(Debug, Fail, PartialEq, Eq)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum SteamError {
/// Returned if the steamworks API fails to initialize.
#[fail(display = "failed to init the steamworks API")]
diff --git a/src/friends.rs b/src/friends.rs
index 770b542..b7a12f0 100644
--- a/src/friends.rs
+++ b/src/friends.rs
@@ -5,7 +5,7 @@ use std::net::Ipv4Addr;
const CALLBACK_BASE_ID: i32 = 300;
bitflags! {
- #[derive(Serialize, Deserialize)]
+ #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[repr(C)]
pub struct FriendFlags: u16 {
const NONE = 0x0000;
@@ -27,7 +27,7 @@ bitflags! {
}
bitflags! {
- #[derive(Serialize, Deserialize)]
+ #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[repr(C)]
pub struct PersonaChange: i32 {
const NAME = 0x0001;
@@ -115,7 +115,8 @@ impl <Manager> Friends<Manager> {
}
/// Information about a friend's current state in a game
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct FriendGame {
/// The id of the game that the friend is
/// playing
@@ -130,7 +131,8 @@ pub struct FriendGame {
pub lobby: LobbyId,
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct PersonaStateChange {
pub steam_id: SteamId,
pub flags: PersonaChange,
@@ -149,7 +151,8 @@ unsafe impl Callback for PersonaStateChange {
}
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct GameLobbyJoinRequested {
pub lobby_steam_id: LobbyId,
pub friend_steam_id: SteamId,
diff --git a/src/lib.rs b/src/lib.rs
index 6f85d0f..a041ac6 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -41,6 +41,8 @@ use std::fmt::{
};
use std::marker::PhantomData;
use std::collections::HashMap;
+
+#[cfg(feature = "serde")]
use serde::{Serialize, Deserialize};
pub type SResult<T> = Result<T, SteamError>;
@@ -334,7 +336,8 @@ impl Drop for ClientManager {
}
/// A user's steam id
-#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Serialize, Deserialize)]
+#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq, Hash)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct SteamId(pub(crate) u64);
impl SteamId {
@@ -370,13 +373,15 @@ impl SteamId {
}
/// A user's account id
-#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Serialize, Deserialize)]
+#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq, Hash)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct AccountId(pub(crate) u32);
/// A game id
///
/// Combines `AppId` and other information
-#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct GameId(pub(crate) u64);
impl GameId {
diff --git a/src/matchmaking.rs b/src/matchmaking.rs
index 22486d1..8b9f2f7 100644
--- a/src/matchmaking.rs
+++ b/src/matchmaking.rs
@@ -11,7 +11,8 @@ pub struct Matchmaking<Manager> {
const CALLBACK_BASE_ID: i32 = 500;
/// The visibility of a lobby
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum LobbyType {
Private,
FriendsOnly,
@@ -19,7 +20,8 @@ pub enum LobbyType {
Invisible,
}
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct LobbyId(pub(crate) u64);
impl LobbyId {
diff --git a/src/networking.rs b/src/networking.rs
index 995bea7..696874b 100644
--- a/src/networking.rs
+++ b/src/networking.rs
@@ -7,7 +7,8 @@ pub struct Networking<Manager> {
}
/// The method used to send a packet
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum SendType {
/// Send the packet directly over udp.
///
@@ -89,7 +90,8 @@ impl <Manager> Networking<Manager> {
}
/// Called when a user wants to communicate via p2p
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct P2PSessionRequest {
/// The steam ID of the user requesting a p2p
/// session
diff --git a/src/remote_storage.rs b/src/remote_storage.rs
index eddf3b8..0772ca8 100644
--- a/src/remote_storage.rs
+++ b/src/remote_storage.rs
@@ -250,7 +250,8 @@ impl <Manager> std::io::Seek for SteamFileReader<Manager> {
}
/// Name and size information about a file in the steam cloud
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct SteamFileInfo {
/// The file name
pub name: String,
diff --git a/src/ugc.rs b/src/ugc.rs
index 7e6fa75..7634ab8 100644
--- a/src/ugc.rs
+++ b/src/ugc.rs
@@ -20,7 +20,8 @@ const CALLBACK_REMOTE_STORAGE_BASE_ID: i32 = 1300;
const UGCQueryHandleInvalid: u64 = 0xffffffffffffffff;
/// Worshop item ID
-#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Serialize, Deserialize)]
+#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq, Hash)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct PublishedFileId(pub u64);
/// Workshop item types to search for
diff --git a/src/user_stats.rs b/src/user_stats.rs
index 273e8d4..941deff 100644
--- a/src/user_stats.rs
+++ b/src/user_stats.rs
@@ -177,7 +177,8 @@ impl <Manager> UserStats<Manager> {
}
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct LeaderboardEntry {
pub user: SteamId,
pub global_rank: i32,
@@ -191,7 +192,8 @@ pub enum LeaderboardDataRequest {
Friends,
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct LeaderboardScoreUploaded {
pub score: i32,
pub was_changed: bool,
@@ -199,26 +201,30 @@ pub struct LeaderboardScoreUploaded {
pub global_rank_previous: i32,
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum UploadScoreMethod {
KeepBest,
ForceUpdate,
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum LeaderboardSortMethod {
Ascending,
Descending,
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum LeaderboardDisplayType {
Numeric,
TimeSeconds,
TimeMilliSeconds,
}
-#[derive(Clone, Debug, Serialize, Deserialize)]
+#[derive(Clone, Debug)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Leaderboard(u64);
#[test]