diff options
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/main.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/server/src/main.rs b/server/src/main.rs index a293d15..03ebb82 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -23,6 +23,7 @@ use network::ServerNetwork; use std::net::{IpAddr, SocketAddr}; use weareshared::{ packets::{Data, Packet}, + resources::PrefabIndex, store::ResourceStore, tree::SceneTree, }; @@ -38,6 +39,7 @@ struct Args { struct State { store: ResourceStore, tree: SceneTree, + prefab_index: PrefabIndex, } fn main() -> Result<()> { @@ -63,6 +65,7 @@ impl State { &xdg::BaseDirectories::with_prefix("weareserver")?.place_cache_file("resources")?, )?, tree: SceneTree::default(), + prefab_index: PrefabIndex::default(), }) } pub fn handle_packet(&mut self, conn: u128, packet: Packet, net: &ServerNetwork) -> Result<()> { @@ -75,7 +78,7 @@ impl State { } Packet::Disconnect => {} Packet::RequestResource(resource) => { - if let Some(r) = self.store.get(resource)? { + if let Some(r) = self.store.get_raw(resource)? { debug!("resource is cached"); net.send(conn, Packet::RespondResource(Data(r)), true); } else { @@ -84,7 +87,7 @@ impl State { } } Packet::RespondResource(data) => { - self.store.set(&data.0)?; + self.store.set_raw(&data.0)?; net.broadcast(Packet::RespondResource(data), true); } Packet::Add(object, resource) => { @@ -105,6 +108,16 @@ impl State { Packet::Sound(object, vec) => { net.broadcast(Packet::Sound(object, vec), true); } + Packet::PrefabIndex(_) => { + // ok + } + Packet::PrefabName(resource, name) => { + self.prefab_index.0.insert(name, resource); + net.broadcast( + Packet::PrefabIndex(self.store.set(&self.prefab_index)?), + true, + ); + } } Ok(()) } |