1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 10:14:06 +02:00

saytext client id

This commit is contained in:
Robin Appelman 2022-04-29 20:41:36 +02:00
commit 4f8bc1cc31
4 changed files with 26 additions and 11 deletions

View file

@ -158,7 +158,9 @@ impl<'a> Message<'a> {
Message::ServerInfo(Box::new(ServerInfoMessage::parse(stream, state)?))
}
MessageType::ClassInfo => Message::ClassInfo(ClassInfoMessage::parse(stream, state)?),
MessageType::SetPause => Message::SetPause(SetPauseMessage::parse(stream, state)?),
MessageType::SetPause => {
Message::SetPause(dbg!(SetPauseMessage::parse(stream, state)?))
}
MessageType::CreateStringTable => {
Message::CreateStringTable(CreateStringTableMessage::parse(stream, state)?)
}

View file

@ -8,7 +8,7 @@ use crate::demo::parser::{Encode, ParseBitSkip};
use crate::demo::sendprop::{SendProp, SendPropIdentifier, SendPropValue};
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
use parse_display::{Display, FromStr};
use std::cmp::min;
use std::cmp::{min, Ordering};
use std::fmt;
use std::hint::unreachable_unchecked;
@ -62,6 +62,12 @@ impl PartialEq<u32> for EntityId {
}
}
impl PartialOrd<u32> for EntityId {
fn partial_cmp(&self, other: &u32) -> Option<Ordering> {
self.0.partial_cmp(other)
}
}
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(
BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Eq, Serialize_repr, Deserialize_repr,
@ -546,7 +552,7 @@ fn test_packet_entitier_message_roundtrip() {
];
state
.entity_classes
.insert(EntityId::from(4), ClassId::from(1));
.insert(EntityId::from(4u32), ClassId::from(1));
crate::test_roundtrip_encode(
PacketEntitiesMessage {
entities: vec![],
@ -583,7 +589,7 @@ fn test_packet_entitier_message_roundtrip() {
entities: vec![
PacketEntity {
server_class: ClassId::from(0),
entity_index: EntityId::from(0),
entity_index: EntityId::from(0u32),
baseline_props: vec![],
props: vec![],
in_pvs: true,
@ -593,7 +599,7 @@ fn test_packet_entitier_message_roundtrip() {
},
PacketEntity {
server_class: ClassId::from(1),
entity_index: EntityId::from(4),
entity_index: EntityId::from(4u32),
baseline_props: vec![],
props: vec![
SendProp {
@ -614,7 +620,7 @@ fn test_packet_entitier_message_roundtrip() {
},
PacketEntity {
server_class: ClassId::from(1),
entity_index: EntityId::from(5),
entity_index: EntityId::from(5u32),
baseline_props: vec![],
props: vec![
SendProp {

View file

@ -3,6 +3,7 @@ use serde::{Deserialize, Serialize};
use crate::demo::handle_utf8_error;
use crate::demo::parser::analyser::UserId;
use crate::{ReadResult, Stream};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
@ -166,7 +167,7 @@ impl<'a> BitWrite<LittleEndian> for UserMessage<'a> {
fn test_user_message_roundtrip() {
crate::test_roundtrip_write(UserMessage::Train(TrainMessage { data: 12 }));
crate::test_roundtrip_write(UserMessage::SayText2(Box::new(SayText2Message {
client: 3,
client: 3u8.into(),
raw: 1,
kind: ChatMessageKind::ChatTeamDead,
from: Some("Old Billy Riley".into()),
@ -224,7 +225,7 @@ impl BitWrite<LittleEndian> for ChatMessageKind {
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SayText2Message {
pub client: u8,
pub client: UserId,
pub raw: u8,
pub kind: ChatMessageKind,
pub from: Option<String>,
@ -269,7 +270,7 @@ impl SayText2Message {
impl BitRead<'_, LittleEndian> for SayText2Message {
fn read(stream: &mut Stream) -> ReadResult<Self> {
let client = stream.read()?;
let client = UserId(stream.read()?);
let raw = stream.read()?;
let (kind, from, text): (ChatMessageKind, Option<String>, String) =
if stream.read::<u8>()? == 1 {
@ -303,7 +304,7 @@ impl BitRead<'_, LittleEndian> for SayText2Message {
impl BitWrite<LittleEndian> for SayText2Message {
fn write(&self, stream: &mut BitWriteStream<LittleEndian>) -> ReadResult<()> {
self.client.write(stream)?;
u8::from(self.client).write(stream)?;
self.raw.write(stream)?;
if let Some(from) = self.from.as_deref() {
@ -322,7 +323,7 @@ impl BitWrite<LittleEndian> for SayText2Message {
#[test]
fn test_say_text2_roundtrip() {
crate::test_roundtrip_write(SayText2Message {
client: 3,
client: 3u8.into(),
raw: 1,
kind: ChatMessageKind::ChatTeamDead,
from: Some("Old Billy Riley".into()),

View file

@ -230,6 +230,12 @@ impl From<u16> for UserId {
}
}
impl From<u8> for UserId {
fn from(int: u8) -> Self {
UserId(int)
}
}
impl From<UserId> for u8 {
fn from(id: UserId) -> Self {
id.0