aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/mod.rs13
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),
+ }
}
})
}