diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2022-05-15 01:46:11 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-15 01:46:11 +0000 |
| commit | d0ac62d85276bc48e4f8e0e60afdc35840681622 (patch) | |
| tree | ff4996b89d6f34c7c452d1b2950e53d512bce3c1 /azalea-protocol/packet-macros/src | |
| parent | ef3cbe27f2a7eed5c635924d6fa0401dd04eae77 (diff) | |
| parent | c16e958d0be671a17edf060aee9850faccbcfe14 (diff) | |
| download | azalea-drasl-d0ac62d85276bc48e4f8e0e60afdc35840681622.tar.xz | |
Merge pull request #6 from mat-1/chunk-decoding
Chunk decoding
Diffstat (limited to 'azalea-protocol/packet-macros/src')
| -rwxr-xr-x | azalea-protocol/packet-macros/src/lib.rs | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/azalea-protocol/packet-macros/src/lib.rs b/azalea-protocol/packet-macros/src/lib.rs index 35bf8b9b..f3fe4e40 100755 --- a/azalea-protocol/packet-macros/src/lib.rs +++ b/azalea-protocol/packet-macros/src/lib.rs @@ -157,6 +157,19 @@ pub fn derive_mcbufwritable(input: TokenStream) -> TokenStream { create_impl_mcbufwritable(&ident, &data).into() } +#[proc_macro_derive(McBuf, attributes(var))] +pub fn derive_mcbuf(input: TokenStream) -> TokenStream { + let DeriveInput { ident, data, .. } = parse_macro_input!(input); + + let writable = create_impl_mcbufwritable(&ident, &data); + let readable = create_impl_mcbufreadable(&ident, &data); + quote! { + #writable + #readable + } + .into() +} + fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> TokenStream { let DeriveInput { ident, data, .. } = parse_macro_input!(input); @@ -169,8 +182,8 @@ fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> Toke _ => panic!("#[derive(*Packet)] can only be used on structs with named fields"), }; - let mcbufreadable_impl = create_impl_mcbufreadable(&ident, &data); - let mcbufwritable_impl = create_impl_mcbufwritable(&ident, &data); + let _mcbufreadable_impl = create_impl_mcbufreadable(&ident, &data); + let _mcbufwritable_impl = create_impl_mcbufwritable(&ident, &data); let contents = quote! { impl #ident { @@ -189,10 +202,6 @@ fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> Toke Ok(Self::read_into(buf)?.get()) } } - - #mcbufreadable_impl - - #mcbufwritable_impl }; contents.into() @@ -232,13 +241,12 @@ struct PacketIdMap { impl Parse for PacketIdMap { fn parse(input: ParseStream) -> Result<Self> { let mut packets = vec![]; - loop { - // 0x0e: clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket, - // 0x0e - let packet_id: LitInt = match input.parse() { - Ok(i) => i, - Err(_) => break, - }; + + // example: + // 0x0e: clientbound_change_difficulty_packet::ClientboundChangeDifficultyPacket, + + // 0x0e + while let Ok(packet_id) = input.parse::<LitInt>() { let packet_id = packet_id.base10_parse::<u32>()?; // : input.parse::<Token![:]>()?; |
