rust/hedgewars-server/src/server/core.rs
changeset 14804 b3adc030104b
parent 14802 01f8ab45f806
child 14807 8ecdb5c6bb2a
--- a/rust/hedgewars-server/src/server/core.rs	Wed Apr 10 16:14:33 2019 +0300
+++ b/rust/hedgewars-server/src/server/core.rs	Wed Apr 10 18:12:30 2019 +0300
@@ -6,6 +6,7 @@
 };
 use crate::utils;
 
+use crate::protocol::messages::HWProtocolMessage::Greeting;
 use log::*;
 use slab;
 use std::{borrow::BorrowMut, iter, num::NonZeroU16};
@@ -45,10 +46,26 @@
     }
 }
 
+pub struct ServerGreetings {
+    pub for_latest_protocol: String,
+    pub for_old_protocols: String,
+}
+
+impl ServerGreetings {
+    fn new() -> Self {
+        Self {
+            for_latest_protocol: "\u{1f994} is watching".to_string(),
+            for_old_protocols: "\u{1f994} is watching".to_string(),
+        }
+    }
+}
+
 pub struct HWServer {
     pub clients: IndexSlab<HWClient>,
     pub rooms: Slab<HWRoom>,
     pub anteroom: HWAnteroom,
+    pub latest_protocol: u16,
+    pub greetings: ServerGreetings,
 }
 
 impl HWServer {
@@ -59,6 +76,8 @@
             clients,
             rooms,
             anteroom: HWAnteroom::new(clients_limit),
+            greetings: ServerGreetings::new(),
+            latest_protocol: 58,
         }
     }
 
@@ -74,6 +93,14 @@
         self.clients.remove(client_id);
     }
 
+    pub fn get_greetings(&self, client_id: ClientId) -> &str {
+        if self.clients[client_id].protocol_number < self.latest_protocol {
+            &self.greetings.for_old_protocols
+        } else {
+            &self.greetings.for_latest_protocol
+        }
+    }
+
     #[inline]
     pub fn create_room(
         &mut self,