From e15b39b2a9cf028b12cbe98f56674e58c5a6bd4c Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 5 Jan 2025 22:27:53 +0100 Subject: a --- client/src/state.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 client/src/state.rs (limited to 'client/src/state.rs') 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> { + 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(()) + } +} -- cgit v1.2.3-70-g09d2