16 use super::{ |
16 use super::{ |
17 messages::{HWProtocolMessage, HWProtocolMessage::*}, |
17 messages::{HWProtocolMessage, HWProtocolMessage::*}, |
18 test::gen_proto_msg |
18 test::gen_proto_msg |
19 }; |
19 }; |
20 use crate::server::coretypes::{ |
20 use crate::server::coretypes::{ |
21 HedgehogInfo, TeamInfo, GameCfg, VoteType |
21 HedgehogInfo, TeamInfo, GameCfg, VoteType, MAX_HEDGEHOGS_PER_TEAM |
22 }; |
22 }; |
23 |
23 |
24 named!(end_of_message, tag!("\n\n")); |
24 named!(end_of_message, tag!("\n\n")); |
25 named!(str_line<&[u8], &str>, map_res!(not_line_ending, str::from_utf8)); |
25 named!(str_line<&[u8], &str>, map_res!(not_line_ending, str::from_utf8)); |
26 named!( a_line<&[u8], String>, map!(str_line, String::from)); |
26 named!( a_line<&[u8], String>, map!(str_line, String::from)); |
40 do_parse!(peek!(tag!("\n\n")) >> (None)) |
40 do_parse!(peek!(tag!("\n\n")) >> (None)) |
41 | do_parse!(spaces >> s: str_line >> (Some(s.to_string()))))); |
41 | do_parse!(spaces >> s: str_line >> (Some(s.to_string()))))); |
42 named!(hog_line<&[u8], HedgehogInfo>, |
42 named!(hog_line<&[u8], HedgehogInfo>, |
43 do_parse!(name: str_line >> eol >> hat: str_line >> |
43 do_parse!(name: str_line >> eol >> hat: str_line >> |
44 (HedgehogInfo{name: name.to_string(), hat: hat.to_string()}))); |
44 (HedgehogInfo{name: name.to_string(), hat: hat.to_string()}))); |
45 named!(_8_hogs<&[u8], [HedgehogInfo; 8]>, |
45 named!(_8_hogs<&[u8], [HedgehogInfo; MAX_HEDGEHOGS_PER_TEAM as usize]>, |
46 do_parse!(h1: hog_line >> eol >> h2: hog_line >> eol >> |
46 do_parse!(h1: hog_line >> eol >> h2: hog_line >> eol >> |
47 h3: hog_line >> eol >> h4: hog_line >> eol >> |
47 h3: hog_line >> eol >> h4: hog_line >> eol >> |
48 h5: hog_line >> eol >> h6: hog_line >> eol >> |
48 h5: hog_line >> eol >> h6: hog_line >> eol >> |
49 h7: hog_line >> eol >> h8: hog_line >> |
49 h7: hog_line >> eol >> h8: hog_line >> |
50 ([h1, h2, h3, h4, h5, h6, h7, h8]))); |
50 ([h1, h2, h3, h4, h5, h6, h7, h8]))); |