1 use server::coretypes::{ServerVar, GameCfg, TeamInfo, HedgehogInfo}; |
1 use server::coretypes::{ServerVar, GameCfg, TeamInfo, HedgehogInfo}; |
|
2 use std; |
|
3 use std::ops; |
|
4 use std::convert::From; |
2 |
5 |
3 |
6 #[derive(PartialEq, Debug)] |
4 pub enum HWProtocolMessage<'a> { |
7 pub enum HWProtocolMessage { |
5 // core |
8 // core |
6 Ping, |
9 Ping, |
7 Pong, |
10 Pong, |
8 Quit(Option<&'a str>), |
11 Quit(Option<String>), |
9 //Cmd(&'a str, Vec<&'a str>), |
12 //Cmd(String, Vec<String>), |
10 Global(&'a str), |
13 Global(String), |
11 Watch(&'a str), |
14 Watch(String), |
12 ToggleServerRegisteredOnly, |
15 ToggleServerRegisteredOnly, |
13 SuperPower, |
16 SuperPower, |
14 Info(&'a str), |
17 Info(String), |
15 // not entered state |
18 // not entered state |
16 Nick(&'a str), |
19 Nick(String), |
17 Proto(u32), |
20 Proto(u32), |
18 Password(&'a str, &'a str), |
21 Password(String, String), |
19 Checker(&'a str), |
22 Checker(String), |
20 // lobby |
23 // lobby |
21 List, |
24 List, |
22 Chat(&'a str), |
25 Chat(String), |
23 CreateRoom(&'a str, Option<&'a str>), |
26 CreateRoom(String, Option<String>), |
24 Join(&'a str, Option<&'a str>), |
27 Join(String, Option<String>), |
25 Follow(&'a str), |
28 Follow(String), |
26 Rnd(Vec<&'a str>), |
29 Rnd(Vec<String>), |
27 Kick(&'a str), |
30 Kick(String), |
28 Ban(&'a str, &'a str, u32), |
31 Ban(String, String, u32), |
29 BanIP(&'a str, &'a str, u32), |
32 BanIP(String, String, u32), |
30 BanNick(&'a str, &'a str, u32), |
33 BanNick(String, String, u32), |
31 BanList, |
34 BanList, |
32 Unban(&'a str), |
35 Unban(String), |
33 SetServerVar(ServerVar), |
36 SetServerVar(ServerVar), |
34 GetServerVar, |
37 GetServerVar, |
35 RestartServer, |
38 RestartServer, |
36 Stats, |
39 Stats, |
37 // in room |
40 // in room |
38 Part(Option<&'a str>), |
41 Part(Option<String>), |
39 Cfg(GameCfg), |
42 Cfg(GameCfg), |
40 AddTeam(TeamInfo), |
43 AddTeam(TeamInfo), |
41 RemoveTeam(&'a str), |
44 RemoveTeam(String), |
42 SetHedgehogsNumber(&'a str, u8), |
45 SetHedgehogsNumber(String, u8), |
43 SetTeamColor(&'a str, u8), |
46 SetTeamColor(String, u8), |
44 ToggleReady, |
47 ToggleReady, |
45 StartGame, |
48 StartGame, |
46 EngineMessage, |
49 EngineMessage, |
47 RoundFinished, |
50 RoundFinished, |
48 ToggleRestrictJoin, |
51 ToggleRestrictJoin, |
49 ToggleRestrictTeams, |
52 ToggleRestrictTeams, |
50 ToggleRegisteredOnly, |
53 ToggleRegisteredOnly, |
51 RoomName(&'a str), |
54 RoomName(String), |
52 Delegate(&'a str), |
55 Delegate(String), |
53 TeamChat(&'a str), |
56 TeamChat(String), |
54 MaxTeams(u8), |
57 MaxTeams(u8), |
55 Fix, |
58 Fix, |
56 Unfix, |
59 Unfix, |
57 Greeting(&'a str), |
60 Greeting(String), |
58 CallVote(Option<(&'a str, Option<&'a str>)>), |
61 CallVote(Option<(String, Option<String>)>), |
59 Vote(&'a str), |
62 Vote(String), |
60 ForceVote(&'a str), |
63 ForceVote(String), |
61 Save(&'a str, &'a str), |
64 Save(String, String), |
62 Delete(&'a str, &'a str), |
65 Delete(String, String), |
63 SaveRoom(&'a str), |
66 SaveRoom(String), |
64 LoadRoom(&'a str), |
67 LoadRoom(String), |
65 } |
68 } |
|
69 |
|
70 pub fn number<T: From<u8> |
|
71 + std::default::Default |
|
72 + std::ops::MulAssign |
|
73 + std::ops::AddAssign> |
|
74 (digits: Vec<u8>) -> T { |
|
75 let mut value: T = T::default(); |
|
76 for digit in digits { |
|
77 value *= T::from(10); |
|
78 value += T::from(digit); |
|
79 } |
|
80 value |
|
81 } |