mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 10:14:06 +02:00
schema fixes
This commit is contained in:
parent
93b51bff70
commit
2d3708d027
9 changed files with 10516 additions and 12308 deletions
22
Cargo.lock
generated
22
Cargo.lock
generated
|
|
@ -4,9 +4,9 @@ version = 3
|
|||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.15.2"
|
||||
version = "0.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a"
|
||||
checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd"
|
||||
dependencies = [
|
||||
"gimli",
|
||||
]
|
||||
|
|
@ -54,9 +54,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
|
|||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.60"
|
||||
version = "0.3.61"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282"
|
||||
checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"cc",
|
||||
|
|
@ -79,7 +79,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bitbuffer"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "650346fecc0be01be480d078b014cc0deb000d26790a53f6ef854dda35f87d62"
|
||||
dependencies = [
|
||||
"bitbuffer_derive",
|
||||
"err-derive",
|
||||
|
|
@ -92,6 +94,8 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "bitbuffer_derive"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4090254bfbc71442ff4a426ddba663346e26fd14b55b259281f763e350d7f621"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -235,9 +239,9 @@ checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394"
|
|||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.24.0"
|
||||
version = "0.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189"
|
||||
checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7"
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
|
|
@ -435,9 +439,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.25.3"
|
||||
version = "0.26.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7"
|
||||
checksum = "c55827317fb4c08822499848a14237d2874d6f139828893017237e7ab93eb386"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ path = "src/bin/schema.rs"
|
|||
required-features = ["schema"]
|
||||
|
||||
[dependencies]
|
||||
bitbuffer = { version = "0.10", features = ["serde"], path = "../../bitbuffer" }
|
||||
bitbuffer = { version = "0.10", features = ["serde"] }
|
||||
num_enum = "0.5"
|
||||
num-traits = "0.2"
|
||||
enumflags2 = { version = "0.7", features = ["serde"] }
|
||||
|
|
@ -54,6 +54,7 @@ iai = "0.1"
|
|||
|
||||
[profile.release]
|
||||
lto = true
|
||||
debug = true
|
||||
|
||||
[profile.dev]
|
||||
opt-level = 2
|
||||
|
|
|
|||
|
|
@ -383,6 +383,7 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
|
|||
|
||||
#[cfg_attr(feature = "wasm", derive(schemars::JsonSchema))]
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(tag = "type")]
|
||||
pub enum GameEvent {
|
||||
#(#event_variants)*
|
||||
Unknown(RawGameEvent),
|
||||
|
|
|
|||
20749
schema.json
20749
schema.json
File diff suppressed because it is too large
Load diff
|
|
@ -6282,6 +6282,7 @@ impl ReplayServerErrorEvent {
|
|||
}
|
||||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(tag = "type")]
|
||||
pub enum GameEvent {
|
||||
ServerSpawn(Box<ServerSpawnEvent>),
|
||||
ServerChangeLevelFailed(ServerChangeLevelFailedEvent),
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ pub enum MessageType {
|
|||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(bound(deserialize = "'a: 'static"))]
|
||||
#[serde(tag = "type")]
|
||||
pub enum Message<'a> {
|
||||
Empty,
|
||||
File(FileMessage),
|
||||
|
|
|
|||
|
|
@ -382,13 +382,7 @@ impl PacketEntitiesMessage {
|
|||
state: &ParserState,
|
||||
) -> Result<()> {
|
||||
let bits = log_base2(state.server_classes.len()) + 1;
|
||||
let (class_index, _class) = state
|
||||
.server_classes
|
||||
.iter()
|
||||
.enumerate()
|
||||
.find(|(_, class)| entity.server_class == class.id)
|
||||
.ok_or(ParseError::UnknownServerClass(entity.server_class))?;
|
||||
class_index.write_sized(stream, bits as usize)?;
|
||||
u16::from(entity.server_class).write_sized(stream, bits as usize)?;
|
||||
entity.serial_number.write_sized(stream, 10)?;
|
||||
|
||||
Ok(())
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ pub enum UserMessageType {
|
|||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(bound(deserialize = "'a: 'static"))]
|
||||
#[serde(tag = "type")]
|
||||
pub enum UserMessage<'a> {
|
||||
SayText2(Box<SayText2Message>),
|
||||
Text(Box<TextMessage>),
|
||||
|
|
@ -81,7 +82,7 @@ pub enum UserMessage<'a> {
|
|||
Train(TrainMessage),
|
||||
VoiceSubtitle(VoiceSubtitleMessage),
|
||||
Shake(ShakeMessage),
|
||||
Unknown(u8, UnknownUserMessage<'a>),
|
||||
Unknown(UnknownUserMessage<'a>),
|
||||
}
|
||||
|
||||
impl UserMessage<'_> {
|
||||
|
|
@ -93,7 +94,7 @@ impl UserMessage<'_> {
|
|||
UserMessage::Train(_) => UserMessageType::Train as u8,
|
||||
UserMessage::VoiceSubtitle(_) => UserMessageType::VoiceSubtitle as u8,
|
||||
UserMessage::Shake(_) => UserMessageType::Shake as u8,
|
||||
UserMessage::Unknown(ty, _) => *ty,
|
||||
UserMessage::Unknown(msg) => msg.raw_type,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -111,13 +112,19 @@ impl<'a> BitRead<'a, LittleEndian> for UserMessage<'a> {
|
|||
UserMessageType::Train => UserMessage::Train(data.read()?),
|
||||
UserMessageType::VoiceSubtitle => UserMessage::VoiceSubtitle(data.read()?),
|
||||
UserMessageType::Shake => UserMessage::Shake(data.read()?),
|
||||
_ => UserMessage::Unknown(message_type as u8, data.read()?),
|
||||
_ => UserMessage::Unknown(UnknownUserMessage {
|
||||
raw_type: message_type as u8,
|
||||
data,
|
||||
}),
|
||||
}
|
||||
}
|
||||
Err(BitError::UnmatchedDiscriminant { discriminant, .. }) => {
|
||||
let length = stream.read_int(11)?;
|
||||
let mut data = stream.read_bits(length)?;
|
||||
UserMessage::Unknown(discriminant as u8, data.read()?)
|
||||
let data = stream.read_bits(length)?;
|
||||
UserMessage::Unknown(UnknownUserMessage {
|
||||
raw_type: discriminant as u8,
|
||||
data,
|
||||
})
|
||||
}
|
||||
Err(e) => return Err(e),
|
||||
};
|
||||
|
|
@ -142,7 +149,7 @@ impl<'a> BitWrite<LittleEndian> for UserMessage<'a> {
|
|||
UserMessage::Train(body) => stream.write(body),
|
||||
UserMessage::VoiceSubtitle(body) => stream.write(body),
|
||||
UserMessage::Shake(body) => stream.write(body),
|
||||
UserMessage::Unknown(_, body) => stream.write(body),
|
||||
UserMessage::Unknown(body) => stream.write(&body.data),
|
||||
})?;
|
||||
|
||||
Ok(())
|
||||
|
|
@ -368,19 +375,6 @@ pub struct ShakeMessage {
|
|||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(bound(deserialize = "'a: 'static"))]
|
||||
pub struct UnknownUserMessage<'a> {
|
||||
raw_type: u8,
|
||||
data: Stream<'a>,
|
||||
}
|
||||
|
||||
impl<'a> BitRead<'a, LittleEndian> for UnknownUserMessage<'a> {
|
||||
fn read(stream: &mut Stream<'a>) -> ReadResult<Self> {
|
||||
Ok(UnknownUserMessage {
|
||||
data: stream.read_bits(stream.bits_left())?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> BitWrite<LittleEndian> for UnknownUserMessage<'a> {
|
||||
fn write(&self, stream: &mut BitWriteStream<LittleEndian>) -> ReadResult<()> {
|
||||
self.data.write(stream)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ pub mod usercmd;
|
|||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(bound(deserialize = "'a: 'static"))]
|
||||
#[serde(tag = "type")]
|
||||
pub enum Packet<'a> {
|
||||
Sigon(MessagePacket<'a>),
|
||||
Message(MessagePacket<'a>),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue