aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/editor/src/main.rs16
-rw-r--r--server/game-core/src/lib.rs4
-rw-r--r--server/protocol/src/lib.rs8
-rw-r--r--server/registry/src/lobby.rs30
-rw-r--r--server/src/server.rs14
-rw-r--r--server/src/state.rs7
-rw-r--r--test-client/main.ts6
-rw-r--r--test-client/protocol.ts11
8 files changed, 41 insertions, 55 deletions
diff --git a/server/editor/src/main.rs b/server/editor/src/main.rs
index 0f0dcab3..5d2c06ea 100644
--- a/server/editor/src/main.rs
+++ b/server/editor/src/main.rs
@@ -141,15 +141,13 @@ async fn handle_conn(
minor: VERSION.1,
supports_bincode: false,
});
- state.out.push(PacketC::GameData {
- data: Box::new(Gamedata {
- tile_collide: (0..TILES.len()).map(TileIndex).collect(),
- tile_placeable_items: BTreeMap::new(),
- tile_names: TILES.iter().map(|(name, _, _)| name.to_string()).collect(),
- current_map: "editor".to_owned(),
- ..Default::default()
- }),
- });
+ state.out.push(PacketC::GameData(Gamedata {
+ tile_collide: (0..TILES.len()).map(TileIndex).collect(),
+ tile_placeable_items: BTreeMap::new(),
+ tile_names: TILES.iter().map(|(name, _, _)| name.to_string()).collect(),
+ current_map: "editor".to_owned(),
+ ..Default::default()
+ }));
state.out.push(PacketC::SetIngame {
state: true,
lobby: false, // very ironic
diff --git a/server/game-core/src/lib.rs b/server/game-core/src/lib.rs
index ed6faf5b..faecb9d1 100644
--- a/server/game-core/src/lib.rs
+++ b/server/game-core/src/lib.rs
@@ -88,8 +88,8 @@ pub struct Game {
impl Game {
pub fn apply_packet(&mut self, packet: PacketC) {
match packet {
- PacketC::GameData { data } => {
- self.data = Arc::new(*data);
+ PacketC::GameData(data) => {
+ self.data = Arc::new(data);
}
PacketC::AddPlayer {
id,
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs
index db69f6be..f90dd351 100644
--- a/server/protocol/src/lib.rs
+++ b/server/protocol/src/lib.rs
@@ -221,12 +221,8 @@ pub enum PacketC {
Joined {
id: PlayerID,
},
- ServerData {
- data: Box<Serverdata>,
- },
- GameData {
- data: Box<Gamedata>,
- },
+ ServerData(Serverdata),
+ GameData(Gamedata),
AddPlayer {
id: PlayerID,
position: Vec2,
diff --git a/server/registry/src/lobby.rs b/server/registry/src/lobby.rs
index eb6ae1f0..44f18ad3 100644
--- a/server/registry/src/lobby.rs
+++ b/server/registry/src/lobby.rs
@@ -75,23 +75,19 @@ async fn handle_conn(sock: TcpStream, addr: SocketAddr, entries: &[Entry]) -> Re
minor: VERSION.1,
supports_bincode: false,
});
- out.push(PacketC::ServerData {
- data: Box::new(Serverdata {
- bot_algos: vec![],
- maps: vec![],
- motd: None,
- name: "Registry".to_string(),
- }),
- });
- out.push(PacketC::GameData {
- data: Box::new(Gamedata {
- tile_collide: (0..TILES.len()).map(TileIndex).collect(),
- tile_placeable_items: BTreeMap::new(),
- tile_names: TILES.iter().map(|(s, _)| s.to_string()).collect(),
- current_map: "registry".to_owned(),
- ..Default::default()
- }),
- });
+ out.push(PacketC::ServerData(Serverdata {
+ bot_algos: vec![],
+ maps: vec![],
+ motd: None,
+ name: "Registry".to_string(),
+ }));
+ out.push(PacketC::GameData(Gamedata {
+ tile_collide: (0..TILES.len()).map(TileIndex).collect(),
+ tile_placeable_items: BTreeMap::new(),
+ tile_names: TILES.iter().map(|(s, _)| s.to_string()).collect(),
+ current_map: "registry".to_owned(),
+ ..Default::default()
+ }));
let walkable = HashSet::from_iter(
tiles
.iter()
diff --git a/server/src/server.rs b/server/src/server.rs
index 795192c5..69ef89fe 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -228,14 +228,12 @@ impl GameServerExt for Game {
fn prime_client(&self) -> Vec<PacketC> {
let mut out = Vec::new();
- out.push(PacketC::GameData {
- data: {
- let mut k = self.data.as_ref().to_owned();
- k.recipes.clear();
- k.demands.clear();
- Box::new(k)
- },
- });
+ out.push(PacketC::GameData({
+ let mut k = self.data.as_ref().to_owned();
+ k.recipes.clear();
+ k.demands.clear();
+ k
+ }));
out.push(PacketC::Environment {
effects: self.environment_effects.clone(),
});
diff --git a/server/src/state.rs b/server/src/state.rs
index 533c5a0c..83d04d16 100644
--- a/server/src/state.rs
+++ b/server/src/state.rs
@@ -128,12 +128,7 @@ impl Server {
supports_bincode: true,
},
);
- init.insert(
- 1,
- PacketC::ServerData {
- data: self.data.clone(),
- },
- );
+ init.insert(1, PacketC::ServerData(*self.data.clone()));
self.connections.insert(
id,
ConnectionData {
diff --git a/test-client/main.ts b/test-client/main.ts
index 3f349d7c..662a726c 100644
--- a/test-client/main.ts
+++ b/test-client/main.ts
@@ -128,9 +128,7 @@ export let data: Gamedata = {
tile_interactable_empty: [],
tile_placeable_any: [],
tile_placeable_items: {},
- maps: [],
hand_count: 0,
- bot_algos: [],
current_map: "",
tile_collide: [],
}
@@ -174,8 +172,8 @@ function packet(p: PacketC) {
case "joined":
my_id = p.id
break;
- case "data":
- data = p.data
+ case "game_data":
+ data = p
break;
case "add_player": {
players.set(p.id, {
diff --git a/test-client/protocol.ts b/test-client/protocol.ts
index 3dfcc594..afec2b41 100644
--- a/test-client/protocol.ts
+++ b/test-client/protocol.ts
@@ -30,6 +30,12 @@ export interface MapMetadata {
difficulty: int,
}
+export interface Serverdata {
+ maps: [string, MapMetadata][], // Metadata for most available maps
+ bot_algos: string[],
+ name: string,
+ motd?: string
+}
export interface Gamedata {
current_map: string,
item_names: string[], // Look-up table for ItemIndex
@@ -38,8 +44,6 @@ export interface Gamedata {
tile_placeable_items: { [key: string /*TileIndex*/]: ItemIndex[] }, // Map from TileIndex to list of ItemIndex which can be placed on that tile. Not set if not restricted
tile_placeable_any: TileIndex[],
tile_interactable_empty: TileIndex[], // List of TileIndex that have "crate recipes"
- maps: [string, MapMetadata][], // Metadata for most available maps
- bot_algos: string[],
hand_count: int,
}
@@ -58,7 +62,8 @@ export type PacketS =
export type PacketC =
{ type: "version", minor: int, major: int, supports_bincode?: boolean } // Sent once after connecting to ensure you client is compatible
| { type: "joined", id: PlayerID } // Informs you about the id of the character you spawned
- | { type: "data", data: Gamedata } // Game data was changed
+ | { type: "game_data" } & Gamedata // Game data was changed
+ | { type: "server_data" } & Serverdata // Server data was changed
| { type: "add_player", id: PlayerID, name: string, position: Vec2, character: Character, class: PlayerClass } // Somebody else joined (or was already in the game)
| { type: "remove_player", id: PlayerID } // Somebody left
| { type: "movement", player: PlayerID, pos: Vec2, rot: float, boost: boolean, dir: Vec2 } // Update the movement of a players (your own position is included here)