diff options
Diffstat (limited to 'client/src/state.rs')
-rw-r--r-- | client/src/state.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/client/src/state.rs b/client/src/state.rs new file mode 100644 index 0000000..ef68b85 --- /dev/null +++ b/client/src/state.rs @@ -0,0 +1,33 @@ +use crate::{download::Downloader, network::Network, renderer::Renderer}; +use anyhow::Result; +use log::info; +use std::net::TcpStream; +use weareshared::{store::ResourceStore, tree::SceneTree}; +use winit::window::Window; + +pub struct State<'a> { + pub network: Network, + pub downloader: Downloader, + pub renderer: Renderer<'a>, + pub tree: SceneTree, +} +impl<'a> State<'a> { + pub fn new(conn: TcpStream, window: &'a Window) -> Result<State<'a>> { + info!("new state"); + Ok(Self { + network: Network::new(conn), + tree: SceneTree::default(), + renderer: Renderer::new(window)?, + downloader: Downloader::new(ResourceStore::new_memory()), + }) + } + + pub fn update(&mut self) -> Result<()> { + for p in self.network.packet_recv.try_iter() { + self.downloader.packet(&p)?; + } + self.downloader.update(&mut self.network); + + Ok(()) + } +} |