idk switching to bevy ecs again

This commit is contained in:
2024-06-13 00:54:52 -04:00
parent df4e433dcc
commit 24a7e299fa
20 changed files with 615 additions and 161 deletions
+48
View File
@@ -0,0 +1,48 @@
use std::sync::mpsc::{channel, Receiver, Sender, TryIter};
use bevy_ecs::{
component::{Component, TableStorage},
entity::Entity,
};
pub enum ServerMessage {}
pub enum ClientMessage {
LoadWorld(Vec<(Entity, Vec<Box<dyn Component<Storage = TableStorage>>>)>),
}
pub struct ServerHandle {
send: Sender<ServerMessage>,
recv: Receiver<ClientMessage>,
}
impl ServerHandle {
pub fn send(&self, msg: ServerMessage) {
self.send.send(msg).expect("BOOOOOO");
}
pub fn recv(&self) -> TryIter<ClientMessage> {
self.recv.try_iter()
}
}
pub struct ClientHandle {
send: Sender<ClientMessage>,
recv: Receiver<ServerMessage>,
}
impl ClientHandle {
pub fn send(&self, msg: ClientMessage) {
self.send.send(msg).expect("YOU HAVE FAILED THE MISSION");
}
pub fn recv(&self) -> TryIter<ServerMessage> {
self.recv.try_iter()
}
}
pub fn client_server_channel() -> (ClientHandle, ServerHandle) {
let (cs, sr) = channel();
let (ss, cr) = channel();
let sh = ServerHandle { send: ss, recv: sr };
let ch = ClientHandle { send: cs, recv: cr };
(ch, sh)
}