macro_rules! build {
    ($packet_id : expr) => { ... };
    ($packet_id : expr, $($data : expr), *) => { ... };
}
Expand description

Creating osu!packet

The first parameter is always packet_id.

Two cases exist for the remaining parameters:

  1. When last parameters ending with a semicolon, it means origin data (impl OsuWrite trait).
  2. Otherwise it means packet data.

Examples:

use bancho_packets::{id, build, data, out_packet, write_traits::*};
 
// Origin data here (i32)
let data: i32 = 6;
build!(id::BANCHO_USER_STATS, data);

// Packet data here (Vec<u8>)
let data = vec![1, 2, 3];
build!(id::BANCHO_USER_STATS, data);

// Only packet_id
build!(id::BANCHO_USER_STATS);

// Complex
let user_id: i32 = 1000;
let username: &str = "PurePeace";
 
build!(
    id::BANCHO_USER_PRESENCE,
    data!(
        user_id,
        username
    )
);