summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/src/main.rs17
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(())
}