rust/hedgewars-engine-messages/src/messages.rs
changeset 16011 cf580d9ff7ef
parent 15285 7515ae6010bb
equal deleted inserted replaced
16010:5ba4d3a0c3eb 16011:cf580d9ff7ef
   126     SetShoppaBorder(bool),
   126     SetShoppaBorder(bool),
   127 }
   127 }
   128 
   128 
   129 #[derive(Debug, PartialEq, Clone)]
   129 #[derive(Debug, PartialEq, Clone)]
   130 pub enum EngineMessage {
   130 pub enum EngineMessage {
   131     Unknown,
   131     Unknown(Vec<u8>),
   132     Empty,
   132     Empty,
   133     Synced(SyncedEngineMessage, u32),
   133     Synced(SyncedEngineMessage, u32),
   134     Unsynced(UnsyncedEngineMessage),
   134     Unsynced(UnsyncedEngineMessage),
   135     Unordered(UnorderedEngineMessage),
   135     Unordered(UnorderedEngineMessage),
   136     Config(ConfigEngineMessage),
   136     Config(ConfigEngineMessage),
   170             Attack(Press) => em![b'A'],
   170             Attack(Press) => em![b'A'],
   171             Attack(Release) => em![b'a'],
   171             Attack(Release) => em![b'a'],
   172             NextTurn => em![b'N'],
   172             NextTurn => em![b'N'],
   173             Switch => em![b'S'],
   173             Switch => em![b'S'],
   174             Timer(t) => vec![b'0' + t],
   174             Timer(t) => vec![b'0' + t],
   175             Slot(s) => vec![b'~' , *s],
   175             Slot(s) => vec![b'~', *s],
   176             SetWeapon(s) => vec![b'~', *s],
   176             SetWeapon(s) => vec![b'~', *s],
   177             Put(x, y) => {
   177             Put(x, y) => {
   178                 let mut v = vec![b'p'];
   178                 let mut v = vec![b'p'];
   179                 v.write_i24::<BigEndian>(*x).unwrap();
   179                 v.write_i24::<BigEndian>(*x).unwrap();
   180                 v.write_i24::<BigEndian>(*y).unwrap();
   180                 v.write_i24::<BigEndian>(*y).unwrap();
   181 
   181 
   182                 v
   182                 v
   183             },
   183             }
   184             CursorMove(x, y) => {
   184             CursorMove(x, y) => {
   185                 let mut v = vec![b'P'];
   185                 let mut v = vec![b'P'];
   186                 v.write_i24::<BigEndian>(*x).unwrap();
   186                 v.write_i24::<BigEndian>(*x).unwrap();
   187                 v.write_i24::<BigEndian>(*y).unwrap();
   187                 v.write_i24::<BigEndian>(*y).unwrap();
   188 
   188 
   189                 v
   189                 v
   190             },
   190             }
   191             HighJump => em![b'J'],
   191             HighJump => em![b'J'],
   192             LongJump => em![b'j'],
   192             LongJump => em![b'j'],
   193             Skip => em![b','],
   193             Skip => em![b','],
   194             TeamControlGained(str) => ems![b'g', str],
   194             TeamControlGained(str) => ems![b'g', str],
   195             TeamControlLost(str) => ems![b'f', str],
   195             TeamControlLost(str) => ems![b'f', str],
   240     pub const MAX_LEN: u16 = 49215;
   240     pub const MAX_LEN: u16 = 49215;
   241 
   241 
   242     fn to_unwrapped(&self) -> Vec<u8> {
   242     fn to_unwrapped(&self) -> Vec<u8> {
   243         use self::EngineMessage::*;
   243         use self::EngineMessage::*;
   244         match self {
   244         match self {
   245             Unknown => unreachable!("you're not supposed to construct such messages"),
   245             Unknown(_) => unreachable!("you're not supposed to construct such messages"),
   246             Empty => unreachable!("you're not supposed to construct such messages"),
   246             Empty => unreachable!("you're not supposed to construct such messages"),
   247             Synced(SyncedEngineMessage::TimeWrap, _) => vec![b'#', 0xff, 0xff],
   247             Synced(SyncedEngineMessage::TimeWrap, _) => vec![b'#', 0xff, 0xff],
   248             Synced(msg, timestamp) => {
   248             Synced(msg, timestamp) => {
   249                 let mut v = msg.to_bytes();
   249                 let mut v = msg.to_bytes();
   250                 v.push((*timestamp / 256) as u8);
   250                 v.push((*timestamp / 256) as u8);