aboutsummaryrefslogtreecommitdiff
path: root/games/rstnode/src/wire/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'games/rstnode/src/wire/mod.rs')
-rw-r--r--games/rstnode/src/wire/mod.rs70
1 files changed, 70 insertions, 0 deletions
diff --git a/games/rstnode/src/wire/mod.rs b/games/rstnode/src/wire/mod.rs
new file mode 100644
index 000000000000..b1c231b44580
--- /dev/null
+++ b/games/rstnode/src/wire/mod.rs
@@ -0,0 +1,70 @@
+//! Network formats and container messages
+
+mod action;
+pub use action::*;
+
+mod req;
+pub use req::*;
+
+mod resp;
+pub use resp::*;
+
+mod update;
+pub use update::*;
+
+use crate::{
+ data::{Color, Player},
+ map::Map,
+ Id,
+};
+use serde::{Deserialize, Serialize};
+
+/// An alias for a User's ID
+pub type UserId = usize;
+
+/// Represents a user payload
+#[derive(Copy, Clone, Serialize, Deserialize)]
+pub struct User {
+ /// The internal user ID
+ pub id: UserId,
+ /// The auth token provided by the client
+ pub token: Id,
+ /// Whether the scores will be tracked
+ pub registered: bool,
+}
+
+/// A more lobby specific abstraction for a user
+#[derive(Clone, Serialize, Deserialize)]
+pub struct LobbyUser {
+ /// The user ID
+ pub id: UserId,
+ /// Their nick name
+ pub name: String,
+ /// Are they ready?
+ pub ready: bool,
+ /// Are they the lobby admin?
+ pub admin: bool,
+ /// The colour they will be in the match
+ pub color: Color,
+}
+
+/// An alias for a Room ID
+pub type LobbyId = usize;
+
+/// Represent a lobby
+#[derive(Clone, Serialize, Deserialize)]
+pub struct Lobby {
+ /// The ID of the lobby
+ pub id: LobbyId,
+ /// A set of user IDs
+ pub players: Vec<LobbyUser>,
+ /// The name of the map
+ pub map: String,
+ /// Settings
+ pub settings: Vec<String>,
+}
+
+/// An alias for a match ID
+pub type MatchId = usize;
+
+