@@ -299,6 +299,47 @@ struct NetPacketGameCommand {
299299 // Variable fields: game message arguments
300300};
301301
302+ // //////////////////////////////////////////////////////////////////////////////
303+ // Variable-Length Packet Headers for FillBufferWithXXX serialization
304+ // These structs include the textLength field for direct buffer overlay
305+ // //////////////////////////////////////////////////////////////////////////////
306+
307+ // Chat command header (includes textLength for serialization)
308+ // Fixed fields: T + type, F + frame, R + relay, P + playerID, C + commandID, D + textLength
309+ struct NetPacketChatCommandHeader {
310+ NetPacketCommandTypeField commandType;
311+ NetPacketFrameField frame;
312+ NetPacketRelayField relay;
313+ NetPacketPlayerIdField playerId;
314+ NetPacketCommandIdField commandId;
315+ NetPacketDataFieldHeader dataHeader;
316+ UnsignedByte textLength;
317+ // Variable fields: WideChar text[textLength] + Int playerMask
318+ };
319+
320+ // Disconnect chat command header (includes textLength for serialization)
321+ // Fixed fields: T + type, R + relay, P + playerID, D + textLength
322+ struct NetPacketDisconnectChatCommandHeader {
323+ NetPacketCommandTypeField commandType;
324+ NetPacketRelayField relay;
325+ NetPacketPlayerIdField playerId;
326+ NetPacketDataFieldHeader dataHeader;
327+ UnsignedByte textLength;
328+ // Variable fields: WideChar text[textLength]
329+ };
330+
331+ // Game command header (for serialization)
332+ // Fixed fields: T + type, F + frame, R + relay, P + playerID, C + commandID, D
333+ struct NetPacketGameCommandHeader {
334+ NetPacketCommandTypeField commandType;
335+ NetPacketFrameField frame;
336+ NetPacketRelayField relay;
337+ NetPacketPlayerIdField playerId;
338+ NetPacketCommandIdField commandId;
339+ NetPacketDataFieldHeader dataHeader;
340+ // Variable fields: GameMessage type + argument types + argument data
341+ };
342+
302343// Wrapper command packet (fixed size - contains metadata about wrapped command)
303344// Fields: T + type, R + relay, P + playerID, C + commandID, D + metadata
304345struct NetPacketWrapperCommand {
@@ -380,34 +421,34 @@ struct NetPacketTimeOutGameStartMessage {
380421};
381422
382423// Disconnect frame command packet
383- // Fields: T + type, P + playerID, C + commandID, R + relay , D + disconnectFrame
424+ // Fields: T + type, R + relay, P + playerID, C + commandID , D + disconnectFrame
384425struct NetPacketDisconnectFrameCommand {
385426 NetPacketCommandTypeField commandType;
427+ NetPacketRelayField relay;
386428 NetPacketPlayerIdField playerId;
387429 NetPacketCommandIdField commandId;
388- NetPacketRelayField relay;
389430 NetPacketDataFieldHeader dataHeader;
390431 UnsignedInt disconnectFrame;
391432};
392433
393434// Disconnect screen off command packet
394- // Fields: T + type, P + playerID, C + commandID, R + relay , D + newFrame
435+ // Fields: T + type, R + relay, P + playerID, C + commandID , D + newFrame
395436struct NetPacketDisconnectScreenOffCommand {
396437 NetPacketCommandTypeField commandType;
438+ NetPacketRelayField relay;
397439 NetPacketPlayerIdField playerId;
398440 NetPacketCommandIdField commandId;
399- NetPacketRelayField relay;
400441 NetPacketDataFieldHeader dataHeader;
401442 UnsignedInt newFrame;
402443};
403444
404445// Frame resend request command packet
405- // Fields: T + type, P + playerID, C + commandID, R + relay , D + frameToResend
446+ // Fields: T + type, R + relay, P + playerID, C + commandID , D + frameToResend
406447struct NetPacketFrameResendRequestCommand {
407448 NetPacketCommandTypeField commandType;
449+ NetPacketRelayField relay;
408450 NetPacketPlayerIdField playerId;
409451 NetPacketCommandIdField commandId;
410- NetPacketRelayField relay;
411452 NetPacketDataFieldHeader dataHeader;
412453 UnsignedInt frameToResend;
413454};
0 commit comments