rust/hedgewars-server/src/protocol/messages.rs
changeset 15112 6a1ba3540fa0
parent 15111 1e45db229f9f
child 15124 824472aa4d97
equal deleted inserted replaced
15111:1e45db229f9f 15112:6a1ba3540fa0
   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