diff options
| -rw-r--r-- | server/editor/src/main.rs | 16 | ||||
| -rw-r--r-- | server/game-core/src/lib.rs | 4 | ||||
| -rw-r--r-- | server/protocol/src/lib.rs | 8 | ||||
| -rw-r--r-- | server/registry/src/lobby.rs | 30 | ||||
| -rw-r--r-- | server/src/server.rs | 14 | ||||
| -rw-r--r-- | server/src/state.rs | 7 | ||||
| -rw-r--r-- | test-client/main.ts | 6 | ||||
| -rw-r--r-- | test-client/protocol.ts | 11 |
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) |