mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
saytext client id
This commit is contained in:
parent
64b66a770c
commit
4f8bc1cc31
4 changed files with 26 additions and 11 deletions
|
|
@ -158,7 +158,9 @@ impl<'a> Message<'a> {
|
||||||
Message::ServerInfo(Box::new(ServerInfoMessage::parse(stream, state)?))
|
Message::ServerInfo(Box::new(ServerInfoMessage::parse(stream, state)?))
|
||||||
}
|
}
|
||||||
MessageType::ClassInfo => Message::ClassInfo(ClassInfoMessage::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 => {
|
MessageType::CreateStringTable => {
|
||||||
Message::CreateStringTable(CreateStringTableMessage::parse(stream, state)?)
|
Message::CreateStringTable(CreateStringTableMessage::parse(stream, state)?)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ use crate::demo::parser::{Encode, ParseBitSkip};
|
||||||
use crate::demo::sendprop::{SendProp, SendPropIdentifier, SendPropValue};
|
use crate::demo::sendprop::{SendProp, SendPropIdentifier, SendPropValue};
|
||||||
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||||
use parse_display::{Display, FromStr};
|
use parse_display::{Display, FromStr};
|
||||||
use std::cmp::min;
|
use std::cmp::{min, Ordering};
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::hint::unreachable_unchecked;
|
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))]
|
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||||
#[derive(
|
#[derive(
|
||||||
BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Eq, Serialize_repr, Deserialize_repr,
|
BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Eq, Serialize_repr, Deserialize_repr,
|
||||||
|
|
@ -546,7 +552,7 @@ fn test_packet_entitier_message_roundtrip() {
|
||||||
];
|
];
|
||||||
state
|
state
|
||||||
.entity_classes
|
.entity_classes
|
||||||
.insert(EntityId::from(4), ClassId::from(1));
|
.insert(EntityId::from(4u32), ClassId::from(1));
|
||||||
crate::test_roundtrip_encode(
|
crate::test_roundtrip_encode(
|
||||||
PacketEntitiesMessage {
|
PacketEntitiesMessage {
|
||||||
entities: vec![],
|
entities: vec![],
|
||||||
|
|
@ -583,7 +589,7 @@ fn test_packet_entitier_message_roundtrip() {
|
||||||
entities: vec![
|
entities: vec![
|
||||||
PacketEntity {
|
PacketEntity {
|
||||||
server_class: ClassId::from(0),
|
server_class: ClassId::from(0),
|
||||||
entity_index: EntityId::from(0),
|
entity_index: EntityId::from(0u32),
|
||||||
baseline_props: vec![],
|
baseline_props: vec![],
|
||||||
props: vec![],
|
props: vec![],
|
||||||
in_pvs: true,
|
in_pvs: true,
|
||||||
|
|
@ -593,7 +599,7 @@ fn test_packet_entitier_message_roundtrip() {
|
||||||
},
|
},
|
||||||
PacketEntity {
|
PacketEntity {
|
||||||
server_class: ClassId::from(1),
|
server_class: ClassId::from(1),
|
||||||
entity_index: EntityId::from(4),
|
entity_index: EntityId::from(4u32),
|
||||||
baseline_props: vec![],
|
baseline_props: vec![],
|
||||||
props: vec![
|
props: vec![
|
||||||
SendProp {
|
SendProp {
|
||||||
|
|
@ -614,7 +620,7 @@ fn test_packet_entitier_message_roundtrip() {
|
||||||
},
|
},
|
||||||
PacketEntity {
|
PacketEntity {
|
||||||
server_class: ClassId::from(1),
|
server_class: ClassId::from(1),
|
||||||
entity_index: EntityId::from(5),
|
entity_index: EntityId::from(5u32),
|
||||||
baseline_props: vec![],
|
baseline_props: vec![],
|
||||||
props: vec![
|
props: vec![
|
||||||
SendProp {
|
SendProp {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::demo::handle_utf8_error;
|
use crate::demo::handle_utf8_error;
|
||||||
|
|
||||||
|
use crate::demo::parser::analyser::UserId;
|
||||||
use crate::{ReadResult, Stream};
|
use crate::{ReadResult, Stream};
|
||||||
|
|
||||||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||||
|
|
@ -166,7 +167,7 @@ impl<'a> BitWrite<LittleEndian> for UserMessage<'a> {
|
||||||
fn test_user_message_roundtrip() {
|
fn test_user_message_roundtrip() {
|
||||||
crate::test_roundtrip_write(UserMessage::Train(TrainMessage { data: 12 }));
|
crate::test_roundtrip_write(UserMessage::Train(TrainMessage { data: 12 }));
|
||||||
crate::test_roundtrip_write(UserMessage::SayText2(Box::new(SayText2Message {
|
crate::test_roundtrip_write(UserMessage::SayText2(Box::new(SayText2Message {
|
||||||
client: 3,
|
client: 3u8.into(),
|
||||||
raw: 1,
|
raw: 1,
|
||||||
kind: ChatMessageKind::ChatTeamDead,
|
kind: ChatMessageKind::ChatTeamDead,
|
||||||
from: Some("Old Billy Riley".into()),
|
from: Some("Old Billy Riley".into()),
|
||||||
|
|
@ -224,7 +225,7 @@ impl BitWrite<LittleEndian> for ChatMessageKind {
|
||||||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
pub struct SayText2Message {
|
pub struct SayText2Message {
|
||||||
pub client: u8,
|
pub client: UserId,
|
||||||
pub raw: u8,
|
pub raw: u8,
|
||||||
pub kind: ChatMessageKind,
|
pub kind: ChatMessageKind,
|
||||||
pub from: Option<String>,
|
pub from: Option<String>,
|
||||||
|
|
@ -269,7 +270,7 @@ impl SayText2Message {
|
||||||
|
|
||||||
impl BitRead<'_, LittleEndian> for SayText2Message {
|
impl BitRead<'_, LittleEndian> for SayText2Message {
|
||||||
fn read(stream: &mut Stream) -> ReadResult<Self> {
|
fn read(stream: &mut Stream) -> ReadResult<Self> {
|
||||||
let client = stream.read()?;
|
let client = UserId(stream.read()?);
|
||||||
let raw = stream.read()?;
|
let raw = stream.read()?;
|
||||||
let (kind, from, text): (ChatMessageKind, Option<String>, String) =
|
let (kind, from, text): (ChatMessageKind, Option<String>, String) =
|
||||||
if stream.read::<u8>()? == 1 {
|
if stream.read::<u8>()? == 1 {
|
||||||
|
|
@ -303,7 +304,7 @@ impl BitRead<'_, LittleEndian> for SayText2Message {
|
||||||
|
|
||||||
impl BitWrite<LittleEndian> for SayText2Message {
|
impl BitWrite<LittleEndian> for SayText2Message {
|
||||||
fn write(&self, stream: &mut BitWriteStream<LittleEndian>) -> ReadResult<()> {
|
fn write(&self, stream: &mut BitWriteStream<LittleEndian>) -> ReadResult<()> {
|
||||||
self.client.write(stream)?;
|
u8::from(self.client).write(stream)?;
|
||||||
self.raw.write(stream)?;
|
self.raw.write(stream)?;
|
||||||
|
|
||||||
if let Some(from) = self.from.as_deref() {
|
if let Some(from) = self.from.as_deref() {
|
||||||
|
|
@ -322,7 +323,7 @@ impl BitWrite<LittleEndian> for SayText2Message {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_say_text2_roundtrip() {
|
fn test_say_text2_roundtrip() {
|
||||||
crate::test_roundtrip_write(SayText2Message {
|
crate::test_roundtrip_write(SayText2Message {
|
||||||
client: 3,
|
client: 3u8.into(),
|
||||||
raw: 1,
|
raw: 1,
|
||||||
kind: ChatMessageKind::ChatTeamDead,
|
kind: ChatMessageKind::ChatTeamDead,
|
||||||
from: Some("Old Billy Riley".into()),
|
from: Some("Old Billy Riley".into()),
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
impl From<UserId> for u8 {
|
||||||
fn from(id: UserId) -> Self {
|
fn from(id: UserId) -> Self {
|
||||||
id.0
|
id.0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue