aboutsummaryrefslogtreecommitdiff
path: root/src/wire
diff options
context:
space:
mode:
Diffstat (limited to 'src/wire')
-rw-r--r--src/wire/mod.rs27
-rw-r--r--src/wire/update.rs34
2 files changed, 48 insertions, 13 deletions
diff --git a/src/wire/mod.rs b/src/wire/mod.rs
index 257333ee118c..78d618627d34 100644
--- a/src/wire/mod.rs
+++ b/src/wire/mod.rs
@@ -1,9 +1,16 @@
//! 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},
@@ -27,7 +34,7 @@ pub struct User {
/// A more lobby specific abstraction for a user
#[derive(Serialize, Deserialize)]
-struct LobbyUser {
+pub struct LobbyUser {
/// The user ID
id: UserId,
/// Their nick name
@@ -45,13 +52,13 @@ pub type LobbyId = usize;
#[derive(Serialize, Deserialize)]
pub struct Lobby {
/// The ID of the lobby
- id: LobbyId,
+ pub id: LobbyId,
/// A set of user IDs
- players: Vec<LobbyUser>,
+ pub players: Vec<LobbyUser>,
/// The name of the map
- map: String,
+ pub map: String,
/// Settings
- settings: Vec<String>,
+ pub settings: Vec<String>,
}
/// An alias for a match ID
@@ -60,16 +67,16 @@ pub type MatchId = usize;
/// Mapping users to a player in game
#[derive(Serialize, Deserialize)]
pub struct MatchUser {
- user: User,
- player: Player,
+ pub user: User,
+ pub player: Player,
}
#[derive(Serialize, Deserialize)]
pub struct Match {
/// The match id
- id: MatchId,
+ pub id: MatchId,
/// The list of active players
- players: Vec<MatchUser>,
+ pub players: Vec<MatchUser>,
/// The active game map
- map: Map,
+ pub map: Map,
}
diff --git a/src/wire/update.rs b/src/wire/update.rs
index 27f2d0ddded3..a1b47ff07e50 100644
--- a/src/wire/update.rs
+++ b/src/wire/update.rs
@@ -1,6 +1,7 @@
//! Update to the game state
use super::UserId;
+use crate::data::{NodeId, PacketId, Player, Upgrade};
use serde::{Deserialize, Serialize};
/// An update provided by the game server
@@ -20,15 +21,34 @@ pub enum Update {
/// Update made to a node
#[derive(Serialize, Deserialize)]
-pub enum NodeUpdate {}
+pub enum NodeUpdate {
+ /// The node owner changed
+ Owner(Player),
+ /// Represent a new upgrade state
+ Level { node: NodeId, new: Upgrade },
+ /// A new packet was consumed from a link
+ NewPacket(PacketId),
+ /// Remove a packet from the node buffer
+ SentPacket(PacketId),
+ /// Dropped a packet
+ DropPacket(PacketId),
+}
/// Update made to a link
#[derive(Serialize, Deserialize)]
-pub enum LinkUpdate {}
+pub enum LinkUpdate {
+ /// Take a packet from a node's buffer
+ TakePacket(PacketId),
+ /// Give a packet to a node's buffer
+ GivePacket(PacketId),
+}
/// Update made to a packet
#[derive(Serialize, Deserialize)]
-pub enum PacketUpdate {}
+pub enum PacketUpdate {
+ /// Advance a packet along one step along the link
+ Increment(PacketId),
+}
/// Update made to the user set
#[derive(Serialize, Deserialize)]
@@ -41,4 +61,12 @@ pub enum UserUpdate {
pub enum UpdateError {
/// You are the last user in the match
LastUser,
+ /// The game crashed, so kick all
+ GameCrashed,
+ /// The server's time was behind the client time
+ ///
+ /// This means that newer events will be dropped from the map
+ /// state. This should prompt the client to warn the user this
+ /// has happened, then resync the time of the game states.
+ TimeAheadServer,
}