171 special_chat("(global notice)", msg) |
171 special_chat("(global notice)", msg) |
172 } |
172 } |
173 |
173 |
174 impl ServerVar { |
174 impl ServerVar { |
175 pub fn to_protocol(&self) -> Vec<String> { |
175 pub fn to_protocol(&self) -> Vec<String> { |
176 match self { |
176 use ServerVar::*; |
177 ServerVar::MOTDNew(s) => vec!["MOTD_NEW".to_string(), s.clone()], |
177 match self { |
178 ServerVar::MOTDOld(s) => vec!["MOTD_OLD".to_string(), s.clone()], |
178 MOTDNew(s) => vec!["MOTD_NEW".to_string(), s.clone()], |
179 ServerVar::LatestProto(n) => vec!["LATEST_PROTO".to_string(), n.to_string()], |
179 MOTDOld(s) => vec!["MOTD_OLD".to_string(), s.clone()], |
|
180 LatestProto(n) => vec!["LATEST_PROTO".to_string(), n.to_string()], |
|
181 } |
|
182 } |
|
183 } |
|
184 |
|
185 impl VoteType { |
|
186 pub fn to_protocol(&self) -> Vec<String> { |
|
187 use VoteType::*; |
|
188 match self { |
|
189 Kick(nick) => vec!["KICK".to_string(), nick.clone()], |
|
190 Map(None) => vec!["MAP".to_string()], |
|
191 Map(Some(name)) => vec!["MAP".to_string(), name.clone()], |
|
192 Pause => vec!["PAUSE".to_string()], |
|
193 NewSeed => vec!["NEWSEED".to_string()], |
|
194 HedgehogsPerTeam(count) => vec!["HEDGEHOGS".to_string(), count.to_string()], |
180 } |
195 } |
181 } |
196 } |
182 } |
197 } |
183 |
198 |
184 impl GameCfg { |
199 impl GameCfg { |
185 pub fn to_protocol(&self) -> (String, Vec<String>) { |
200 pub fn to_protocol(&self) -> (String, Vec<String>) { |
186 use crate::core::types::GameCfg::*; |
201 use GameCfg::*; |
187 match self { |
202 match self { |
188 FeatureSize(s) => ("FEATURE_SIZE".to_string(), vec![s.to_string()]), |
203 FeatureSize(s) => ("FEATURE_SIZE".to_string(), vec![s.to_string()]), |
189 MapType(t) => ("MAP".to_string(), vec![t.to_string()]), |
204 MapType(t) => ("MAP".to_string(), vec![t.to_string()]), |
190 MapGenerator(g) => ("MAPGEN".to_string(), vec![g.to_string()]), |
205 MapGenerator(g) => ("MAPGEN".to_string(), vec![g.to_string()]), |
191 MazeSize(s) => ("MAZE_SIZE".to_string(), vec![s.to_string()]), |
206 MazeSize(s) => ("MAZE_SIZE".to_string(), vec![s.to_string()]), |
323 SetTeamColor(team, color) => msg!["TEAM_COLOR", team, color], |
338 SetTeamColor(team, color) => msg!["TEAM_COLOR", team, color], |
324 ToggleReady => msg!["TOGGLE_READY"], |
339 ToggleReady => msg!["TOGGLE_READY"], |
325 StartGame => msg!["START_GAME"], |
340 StartGame => msg!["START_GAME"], |
326 EngineMessage(msg) => msg!["EM", msg], |
341 EngineMessage(msg) => msg!["EM", msg], |
327 RoundFinished => msg!["ROUNDFINISHED"], |
342 RoundFinished => msg!["ROUNDFINISHED"], |
328 ReplayStart => msg!["REPLAY_START"], |
|
329 ToggleRestrictJoin => msg!["TOGGLE_RESTRICT_JOINS"], |
343 ToggleRestrictJoin => msg!["TOGGLE_RESTRICT_JOINS"], |
330 ToggleRestrictTeams => msg!["TOGGLE_RESTRICT_TEAMS"], |
344 ToggleRestrictTeams => msg!["TOGGLE_RESTRICT_TEAMS"], |
331 ToggleRegisteredOnly => msg!["TOGGLE_REGISTERED_ONLY"], |
345 ToggleRegisteredOnly => msg!["TOGGLE_REGISTERED_ONLY"], |
332 RoomName(name) => msg!["ROOM_NAME", name], |
346 RoomName(name) => msg!["ROOM_NAME", name], |
333 Delegate(name) => msg!["CMD", format!("DELEGATE {}", name)], |
347 Delegate(name) => msg!["CMD", format!("DELEGATE {}", name)], |
335 MaxTeams(count) => msg!["CMD", format!("MAXTEAMS {}", count)], |
349 MaxTeams(count) => msg!["CMD", format!("MAXTEAMS {}", count)], |
336 Fix => msg!["CMD", "FIX"], |
350 Fix => msg!["CMD", "FIX"], |
337 Unfix => msg!["CMD", "UNFIX"], |
351 Unfix => msg!["CMD", "UNFIX"], |
338 Greeting(None) => msg!["CMD", "GREETING"], |
352 Greeting(None) => msg!["CMD", "GREETING"], |
339 Greeting(Some(msg)) => msg!["CMD", format!("GREETING {}", msg)], |
353 Greeting(Some(msg)) => msg!["CMD", format!("GREETING {}", msg)], |
340 //CallVote(Option<(String, Option<String>)>) =>, ?? |
354 CallVote(None) => msg!["CMD", "CALLVOTE"], |
|
355 CallVote(Some(vote)) => { |
|
356 msg!["CMD", format!("CALLVOTE {}", &vote.to_protocol().join(" "))] |
|
357 } |
341 Vote(msg) => msg!["CMD", format!("VOTE {}", if *msg { "YES" } else { "NO" })], |
358 Vote(msg) => msg!["CMD", format!("VOTE {}", if *msg { "YES" } else { "NO" })], |
342 ForceVote(msg) => msg!["CMD", format!("FORCE {}", if *msg { "YES" } else { "NO" })], |
359 ForceVote(msg) => msg!["CMD", format!("FORCE {}", if *msg { "YES" } else { "NO" })], |
343 Save(name, location) => msg!["CMD", format!("SAVE {} {}", name, location)], |
360 Save(name, location) => msg!["CMD", format!("SAVE {} {}", name, location)], |
344 Delete(name) => msg!["CMD", format!("DELETE {}", name)], |
361 Delete(name) => msg!["CMD", format!("DELETE {}", name)], |
345 SaveRoom(name) => msg!["CMD", format!("SAVEROOM {}", name)], |
362 SaveRoom(name) => msg!["CMD", format!("SAVEROOM {}", name)], |
398 ServerMessage(msg) => msg!["SERVER_MESSAGE", msg], |
415 ServerMessage(msg) => msg!["SERVER_MESSAGE", msg], |
399 ServerVars(vars) => construct_message(&["SERVER_VARS"], &vars), |
416 ServerVars(vars) => construct_message(&["SERVER_VARS"], &vars), |
400 Notice(msg) => msg!["NOTICE", msg], |
417 Notice(msg) => msg!["NOTICE", msg], |
401 Warning(msg) => msg!["WARNING", msg], |
418 Warning(msg) => msg!["WARNING", msg], |
402 Error(msg) => msg!["ERROR", msg], |
419 Error(msg) => msg!["ERROR", msg], |
|
420 ReplayStart => msg!["REPLAY_START"], |
403 |
421 |
404 LegacyReady(is_ready, nicks) => { |
422 LegacyReady(is_ready, nicks) => { |
405 construct_message(&[if *is_ready { "READY" } else { "NOT_READY" }], &nicks) |
423 construct_message(&[if *is_ready { "READY" } else { "NOT_READY" }], &nicks) |
406 } |
424 } |
407 |
425 |