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

packet clone

This commit is contained in:
Robin Appelman 2021-07-27 22:53:18 +02:00
commit 099c2d33b9
22 changed files with 1658 additions and 2865 deletions

8
codegen/Cargo.lock generated
View file

@ -94,7 +94,9 @@ dependencies = [
[[package]] [[package]]
name = "bitbuffer" name = "bitbuffer"
version = "0.10.2" version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "650346fecc0be01be480d078b014cc0deb000d26790a53f6ef854dda35f87d62"
dependencies = [ dependencies = [
"bitbuffer_derive", "bitbuffer_derive",
"err-derive", "err-derive",
@ -106,6 +108,8 @@ dependencies = [
[[package]] [[package]]
name = "bitbuffer_derive" name = "bitbuffer_derive"
version = "0.10.0" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4090254bfbc71442ff4a426ddba663346e26fd14b55b259281f763e350d7f621"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -895,7 +899,7 @@ dependencies = [
[[package]] [[package]]
name = "tf-demo-parser" name = "tf-demo-parser"
version = "0.3.1" version = "0.3.2"
dependencies = [ dependencies = [
"bitbuffer", "bitbuffer",
"enumflags2", "enumflags2",

File diff suppressed because it is too large Load diff

View file

@ -265,7 +265,7 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
quote!( quote!(
#[cfg_attr(feature = "wasm", derive(schemars::JsonSchema))] #[cfg_attr(feature = "wasm", derive(schemars::JsonSchema))]
#[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize, Clone)]
pub struct #name { pub struct #name {
#(#fields)* #(#fields)*
} }
@ -382,7 +382,7 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
#[cfg_attr(feature = "wasm", derive(schemars::JsonSchema))] #[cfg_attr(feature = "wasm", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(tag = "type")] #[serde(tag = "type")]
pub enum GameEvent { pub enum GameEvent {
#(#event_variants)* #(#event_variants)*

File diff suppressed because it is too large Load diff

View file

@ -158,7 +158,7 @@ impl EventValue for () {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct RawGameEvent { pub struct RawGameEvent {
pub event_type: GameEventType, pub event_type: GameEventType,
pub values: Vec<GameEventValue>, pub values: Vec<GameEventValue>,

View file

@ -6,7 +6,7 @@ use crate::{ReadResult, Stream};
use std::cmp::min; use std::cmp::min;
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitReadSized, BitWriteSized, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitReadSized, BitWriteSized, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct ClassInfoEntry { pub struct ClassInfoEntry {
#[size = "input_size"] #[size = "input_size"]
class_id: u16, class_id: u16,
@ -15,7 +15,7 @@ pub struct ClassInfoEntry {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct ClassInfoMessage { pub struct ClassInfoMessage {
count: u16, count: u16,
create: bool, create: bool,

View file

@ -10,7 +10,7 @@ use crate::demo::parser::{Encode, ParseBitSkip};
use crate::{GameEventError, Parse, ParseError, ParserState, ReadResult, Result, Stream}; use crate::{GameEventError, Parse, ParseError, ParserState, ReadResult, Result, Stream};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct GameEventMessage { pub struct GameEventMessage {
pub event_type_id: GameEventTypeId, pub event_type_id: GameEventTypeId,
pub event: GameEvent, pub event: GameEvent,
@ -147,7 +147,7 @@ impl From<GameEventTypeId> for u16 {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct GameEventListMessage { pub struct GameEventListMessage {
pub event_list: Vec<GameEventDefinition>, pub event_list: Vec<GameEventDefinition>,
} }

View file

@ -4,7 +4,7 @@ use bitbuffer::{BitRead, BitWrite, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct FileMessage { pub struct FileMessage {
pub transfer_id: u32, pub transfer_id: u32,
pub file_name: String, pub file_name: String,
@ -12,7 +12,7 @@ pub struct FileMessage {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct NetTickMessage { pub struct NetTickMessage {
pub tick: u32, pub tick: u32,
pub frame_time: u16, pub frame_time: u16,
@ -20,26 +20,26 @@ pub struct NetTickMessage {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct StringCmdMessage { pub struct StringCmdMessage {
pub command: String, pub command: String,
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct SignOnStateMessage { pub struct SignOnStateMessage {
pub state: u8, pub state: u8,
pub count: u32, pub count: u32,
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct PrintMessage { pub struct PrintMessage {
pub value: String, pub value: String,
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct ServerInfoMessage { pub struct ServerInfoMessage {
pub version: u16, pub version: u16,
pub server_count: u32, pub server_count: u32,
@ -61,20 +61,20 @@ pub struct ServerInfoMessage {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct SetPauseMessage { pub struct SetPauseMessage {
pub pause: bool, pub pause: bool,
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct SetViewMessage { pub struct SetViewMessage {
#[size = 11] #[size = 11]
pub index: u16, pub index: u16,
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct FixAngleMessage { pub struct FixAngleMessage {
pub relative: bool, pub relative: bool,
pub x: u16, pub x: u16,
@ -83,7 +83,7 @@ pub struct FixAngleMessage {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct EntityMessage<'a> { pub struct EntityMessage<'a> {
@ -98,14 +98,14 @@ pub struct EntityMessage<'a> {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct PreFetchMessage { pub struct PreFetchMessage {
#[size = 14] #[size = 14]
pub index: u16, pub index: u16,
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct MenuMessage<'a> { pub struct MenuMessage<'a> {
@ -116,14 +116,14 @@ pub struct MenuMessage<'a> {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct GetCvarValueMessage { pub struct GetCvarValueMessage {
pub cookie: u32, pub cookie: u32,
pub value: String, pub value: String,
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct CmdKeyValuesMessage<'a> { pub struct CmdKeyValuesMessage<'a> {

View file

@ -64,7 +64,7 @@ pub enum MessageType {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
#[serde(tag = "type")] #[serde(tag = "type")]
pub enum Message<'a> { pub enum Message<'a> {

View file

@ -178,7 +178,7 @@ fn test_bit_var_roundtrip() {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct PacketEntitiesMessage { pub struct PacketEntitiesMessage {
pub entities: Vec<PacketEntity>, pub entities: Vec<PacketEntity>,
pub removed_entities: Vec<EntityId>, pub removed_entities: Vec<EntityId>,

View file

@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize};
use crate::ReadResult; use crate::ReadResult;
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize, Clone)]
pub struct ConVar { pub struct ConVar {
key: String, key: String,
value: String, value: String,
@ -23,7 +23,7 @@ impl<E: Endianness> BitRead<'_, E> for ConVar {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, BitRead, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitRead, PartialEq, Serialize, Deserialize, Clone)]
pub struct SetConVarMessage { pub struct SetConVarMessage {
length: u8, length: u8,
#[size = "length"] #[size = "length"]

View file

@ -15,7 +15,7 @@ use std::borrow::Cow;
use std::cmp::min; use std::cmp::min;
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct CreateStringTableMessage<'a> { pub struct CreateStringTableMessage<'a> {
pub table: StringTable<'a>, pub table: StringTable<'a>,
@ -238,7 +238,7 @@ fn test_create_string_table_roundtrip() {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct UpdateStringTableMessage<'a> { pub struct UpdateStringTableMessage<'a> {
pub entries: Vec<(u16, StringTableEntry<'a>)>, pub entries: Vec<(u16, StringTableEntry<'a>)>,

View file

@ -10,7 +10,7 @@ use bitbuffer::{BitWrite, BitWriteSized, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct TempEntitiesMessage { pub struct TempEntitiesMessage {
pub events: Vec<EventInfo>, pub events: Vec<EventInfo>,
} }

View file

@ -72,7 +72,7 @@ pub enum UserMessageType {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
#[serde(tag = "type")] #[serde(tag = "type")]
pub enum UserMessage<'a> { pub enum UserMessage<'a> {

View file

@ -3,7 +3,7 @@ use bitbuffer::{BitRead, BitWrite, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct ConsoleCmdPacket { pub struct ConsoleCmdPacket {
pub tick: u32, pub tick: u32,
pub command: String, pub command: String,

View file

@ -346,7 +346,7 @@ pub struct SendTable {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct DataTablePacket { pub struct DataTablePacket {
pub tick: u32, pub tick: u32,
pub tables: Vec<ParseSendTable>, pub tables: Vec<ParseSendTable>,

View file

@ -7,7 +7,7 @@ use crate::demo::vector::Vector;
use crate::{Parse, ParserState, ReadResult, Result, Stream}; use crate::{Parse, ParserState, ReadResult, Result, Stream};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize, Clone)]
pub struct MessagePacketMeta { pub struct MessagePacketMeta {
pub flags: u32, // TODO pub flags: u32, // TODO
pub view_angles: ViewAngles, pub view_angles: ViewAngles,
@ -16,7 +16,7 @@ pub struct MessagePacketMeta {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct MessagePacket<'a> { pub struct MessagePacket<'a> {
pub tick: u32, pub tick: u32,

View file

@ -21,7 +21,7 @@ pub mod synctick;
pub mod usercmd; pub mod usercmd;
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
#[serde(tag = "type")] #[serde(tag = "type")]
pub enum Packet<'a> { pub enum Packet<'a> {

View file

@ -2,7 +2,7 @@ use bitbuffer::{BitRead, BitWrite};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize, Clone)]
pub struct StopPacket { pub struct StopPacket {
#[size = 24] #[size = 24]
pub tick: u32, pub tick: u32,

View file

@ -18,7 +18,7 @@ pub struct FixedUserDataSize {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct StringTable<'a> { pub struct StringTable<'a> {
pub name: Cow<'a, str>, pub name: Cow<'a, str>,
@ -216,7 +216,7 @@ impl fmt::Debug for StringTableEntry<'_> {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct StringTablePacket<'a> { pub struct StringTablePacket<'a> {
pub tick: u32, pub tick: u32,

View file

@ -2,7 +2,7 @@ use bitbuffer::{BitRead, BitWrite};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct SyncTickPacket { pub struct SyncTickPacket {
pub tick: u32, pub tick: u32,
} }

View file

@ -2,7 +2,7 @@ use bitbuffer::{BitRead, BitReadStream, BitWrite, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct UserCmdPacket { pub struct UserCmdPacket {
pub tick: u32, pub tick: u32,
pub sequence_out: u32, pub sequence_out: u32,
@ -33,7 +33,7 @@ impl BitWrite<LittleEndian> for UserCmdPacket {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, BitRead, BitWrite, Serialize, Deserialize)] #[derive(Debug, PartialEq, BitRead, BitWrite, Serialize, Deserialize, Clone)]
pub struct UserCmd { pub struct UserCmd {
command_number: Option<u32>, command_number: Option<u32>,
tick_count: Option<u32>, tick_count: Option<u32>,
@ -47,7 +47,7 @@ pub struct UserCmd {
} }
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Debug, PartialEq, BitRead, BitWrite, Serialize, Deserialize)] #[derive(Debug, PartialEq, BitRead, BitWrite, Serialize, Deserialize, Clone)]
pub struct WeaponSelect { pub struct WeaponSelect {
#[size = 11] #[size = 11]
select: u16, select: u16,