diff --git a/client/src/lib.rs b/client/src/lib.rs index 5b6a443c32..d3d3fd7784 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -57,7 +57,7 @@ impl Client { view_distance: u64, ) -> Result { - let mut client_state = ClientState::Visitor; + let mut client_state = ClientState::Connected; let mut postbox = PostBox::to(addr)?; // Send connection request diff --git a/common/src/msg/mod.rs b/common/src/msg/mod.rs index 504bd0d620..f2948ced36 100644 --- a/common/src/msg/mod.rs +++ b/common/src/msg/mod.rs @@ -9,8 +9,8 @@ pub use self::ecs_packet::EcsPacket; #[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)] pub enum ClientState { - Visitor, Connected, + Registered, Spectator, Character, } diff --git a/server/src/client.rs b/server/src/client.rs index 45474f4e7e..c40b54cbef 100644 --- a/server/src/client.rs +++ b/server/src/client.rs @@ -60,7 +60,7 @@ impl Clients { pub fn notify_connected(&mut self, msg: ServerMsg) { for client in self.clients.values_mut() { - if client.client_state != ClientState::Visitor { + if client.client_state != ClientState::Connected { client.notify(msg.clone()); } } @@ -68,7 +68,7 @@ impl Clients { pub fn notify_connected_except(&mut self, except_entity: EcsEntity, msg: ServerMsg) { for (entity, client) in self.clients.iter_mut() { - if client.client_state != ClientState::Visitor && *entity != except_entity { + if client.client_state != ClientState::Connected && *entity != except_entity { client.notify(msg.clone()); } } diff --git a/server/src/lib.rs b/server/src/lib.rs index 19d55a93ec..d5db7688e1 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -217,7 +217,7 @@ impl Server { self.clients.add( entity, Client { - client_state: ClientState::Visitor, + client_state: ClientState::Connected, postbox, last_ping: self.state.get_time(), }, @@ -250,34 +250,34 @@ impl Server { for msg in new_msgs { match msg { ClientMsg::RequestState(requested_state) => match requested_state { - ClientState::Visitor => disconnect = true, - ClientState::Connected => match client.client_state { - ClientState::Visitor => {}, // Use ClientMsg::Connect instead - ClientState::Connected => client.error_state(RequestStateError::Already), - ClientState::Spectator => client.allow_state(ClientState::Connected), - ClientState::Character => client.allow_state(ClientState::Connected), + ClientState::Connected => disconnect = true, + ClientState::Registered => match client.client_state { + ClientState::Connected => {}, // Use ClientMsg::Connect instead + ClientState::Registered => client.error_state(RequestStateError::Already), + ClientState::Spectator => client.allow_state(ClientState::Registered), + ClientState::Character => client.allow_state(ClientState::Registered), }, ClientState::Spectator => match requested_state { - ClientState::Visitor => disconnect = true, // Become Connected first - ClientState::Connected => client.allow_state(ClientState::Spectator), + ClientState::Connected => disconnect = true, // Become Connected first + ClientState::Registered => client.allow_state(ClientState::Spectator), ClientState::Spectator => client.error_state(RequestStateError::Already), ClientState::Character => client.allow_state(ClientState::Spectator), }, ClientState::Character => disconnect = true, // Use ClientMsg::Character instead }, ClientMsg::Connect { player } => match client.client_state { - ClientState::Visitor => Self::initialize_client(state, entity, client, player), + ClientState::Connected => Self::initialize_client(state, entity, client, player), _ => disconnect = true, }, ClientMsg::Character(character) => match client.client_state { - ClientState::Visitor => disconnect = true, // Become Connected first - ClientState::Connected | ClientState::Spectator => + ClientState::Connected => disconnect = true, // Become Connected first + ClientState::Registered | ClientState::Spectator => Self::create_player_character(state, entity, client, character), ClientState::Character => client.error_state(RequestStateError::Already), }, ClientMsg::Chat(msg) => match client.client_state { - ClientState::Visitor => disconnect = true, - ClientState::Connected => new_chat_msgs.push((entity, msg)), + ClientState::Connected => disconnect = true, + ClientState::Registered => new_chat_msgs.push((entity, msg)), ClientState::Spectator => new_chat_msgs.push((entity, msg)), ClientState::Character => new_chat_msgs.push((entity, msg)), }, @@ -294,7 +294,7 @@ impl Server { _ => disconnect = true, // Only characters send their position }, ClientMsg::TerrainChunkRequest { key } => match client.client_state { - ClientState::Visitor | ClientState::Connected => disconnect = true, // Not allowed + ClientState::Connected | ClientState::Registered => disconnect = true, // Not allowed ClientState::Spectator | ClientState::Character => { match state.terrain().get_key(key) { Some(chunk) => {} /*client.postbox.send_message(ServerMsg::TerrainChunkUpdate { @@ -324,7 +324,7 @@ impl Server { if disconnect { disconnected_clients.push(entity); client.postbox.send_message(ServerMsg::StateAnswer( - Err((RequestStateError::Impossible, ClientState::Visitor)))); + Err((RequestStateError::Impossible, ClientState::Connected)))); true } else { false @@ -404,7 +404,7 @@ impl Server { } // Tell the client his request was successful - client.allow_state(ClientState::Connected); + client.allow_state(ClientState::Registered); } /// Sync client states with the most up to date information