diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/mod.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server/mod.rs b/src/server/mod.rs index 9b55502..fe208ad 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -2,6 +2,7 @@ use crate::net::server::ConnectionManager; use crate::net::Cargo; +use crate::world::World; use std::io; use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr}; use std::thread::{self, JoinHandle}; @@ -40,9 +41,17 @@ pub fn start_any_port(ipv4: bool) -> Result<(JoinHandle<()>, u16), io::Error> { fn start(conn_man: ConnectionManager<Cargo>) -> JoinHandle<()> { info!("Server started on port {}", conn_man.port()); + + let mut world = World::new(); thread::spawn(move || loop { - if let Some(cargo) = conn_man.next_packet() { - println!("Received cargo: {:?}", cargo); + if let Some((user, cargo)) = conn_man.next_packet() { + match cargo { + Cargo::AddRoom(room) => { + let room_id = world.push_room(room.clone()); + conn_man.broadcast(Cargo::SetRoom((room_id, room))); + } + other => error!("Unknown packet received from `{}`: {:?}", user, other), + } } }) } |
