1#ifndef GENERATED_PROTOCOL_H
2#define GENERATED_PROTOCOL_H
3class CUnpacker;
4#include <base/cxx.h>
5#include <engine/message.h>
6
7#include <engine/shared/teehistorian_ex.h>
8
9enum
10{
11 INPUT_STATE_MASK=0x3f
12};
13
14enum
15{
16 FLAG_MISSING=-3,
17 FLAG_ATSTAND,
18 FLAG_TAKEN,
19};
20
21enum
22{
23 SPEC_FREEVIEW=-1,
24 SPEC_FOLLOW=-2,
25};
26
27enum
28{
29 GAMEINFO_CURVERSION=11,
30};
31
32enum
33{
34 EMOTE_NORMAL,
35 EMOTE_PAIN,
36 EMOTE_HAPPY,
37 EMOTE_SURPRISE,
38 EMOTE_ANGRY,
39 EMOTE_BLINK,
40 NUM_EMOTES
41};
42
43enum
44{
45 POWERUP_HEALTH,
46 POWERUP_ARMOR,
47 POWERUP_WEAPON,
48 POWERUP_NINJA,
49 POWERUP_ARMOR_SHOTGUN,
50 POWERUP_ARMOR_GRENADE,
51 POWERUP_ARMOR_NINJA,
52 POWERUP_ARMOR_LASER,
53 NUM_POWERUPS
54};
55
56enum
57{
58 EMOTICON_OOP,
59 EMOTICON_EXCLAMATION,
60 EMOTICON_HEARTS,
61 EMOTICON_DROP,
62 EMOTICON_DOTDOT,
63 EMOTICON_MUSIC,
64 EMOTICON_SORRY,
65 EMOTICON_GHOST,
66 EMOTICON_SUSHI,
67 EMOTICON_SPLATTEE,
68 EMOTICON_DEVILTEE,
69 EMOTICON_ZOMG,
70 EMOTICON_ZZZ,
71 EMOTICON_WTF,
72 EMOTICON_EYES,
73 EMOTICON_QUESTION,
74 NUM_EMOTICONS
75};
76
77enum
78{
79 AUTHED_NO,
80 AUTHED_HELPER,
81 AUTHED_MOD,
82 AUTHED_ADMIN,
83 NUM_AUTHEDS
84};
85
86enum
87{
88 ENTITYCLASS_PROJECTILE,
89 ENTITYCLASS_DOOR,
90 ENTITYCLASS_DRAGGER_WEAK,
91 ENTITYCLASS_DRAGGER_NORMAL,
92 ENTITYCLASS_DRAGGER_STRONG,
93 ENTITYCLASS_GUN_NORMAL,
94 ENTITYCLASS_GUN_EXPLOSIVE,
95 ENTITYCLASS_GUN_FREEZE,
96 ENTITYCLASS_GUN_UNFREEZE,
97 ENTITYCLASS_LIGHT,
98 ENTITYCLASS_PICKUP,
99 NUM_ENTITYCLASSS
100};
101
102enum
103{
104 LASERTYPE_RIFLE,
105 LASERTYPE_SHOTGUN,
106 LASERTYPE_DOOR,
107 LASERTYPE_FREEZE,
108 LASERTYPE_DRAGGER,
109 LASERTYPE_GUN,
110 LASERTYPE_PLASMA,
111 NUM_LASERTYPES
112};
113
114enum
115{
116 LASERDRAGGERTYPE_WEAK,
117 LASERDRAGGERTYPE_WEAK_NW,
118 LASERDRAGGERTYPE_NORMAL,
119 LASERDRAGGERTYPE_NORMAL_NW,
120 LASERDRAGGERTYPE_STRONG,
121 LASERDRAGGERTYPE_STRONG_NW,
122 NUM_LASERDRAGGERTYPES
123};
124
125enum
126{
127 LASERGUNTYPE_UNFREEZE,
128 LASERGUNTYPE_EXPLOSIVE,
129 LASERGUNTYPE_FREEZE,
130 LASERGUNTYPE_EXPFREEZE,
131 NUM_LASERGUNTYPES
132};
133
134enum
135{
136 TEAM_ALL = -2,
137 TEAM_SPECTATORS,
138 TEAM_RED,
139 TEAM_BLUE,
140 TEAM_WHISPER_SEND,
141 TEAM_WHISPER_RECV,
142 NUM_TEAMS
143};
144
145enum
146{
147 SAVESTATE_PENDING,
148 SAVESTATE_DONE,
149 SAVESTATE_FALLBACKFILE,
150 SAVESTATE_WARNING,
151 SAVESTATE_ERROR,
152 NUM_SAVESTATES
153};
154
155enum
156{
157 PLAYERFLAG_PLAYING = 1U<<0,
158 PLAYERFLAG_IN_MENU = 1U<<1,
159 PLAYERFLAG_CHATTING = 1U<<2,
160 PLAYERFLAG_SCOREBOARD = 1U<<3,
161 PLAYERFLAG_AIM = 1U<<4,
162 PLAYERFLAG_SPEC_CAM = 1U<<5,
163 PLAYERFLAG_INPUT_ABSOLUTE = 1U<<6,
164 PLAYERFLAG_INPUT_MANUAL = 1U<<7,
165};
166
167enum
168{
169 GAMEFLAG_TEAMS = 1U<<0,
170 GAMEFLAG_FLAGS = 1U<<1,
171};
172
173enum
174{
175 GAMESTATEFLAG_GAMEOVER = 1U<<0,
176 GAMESTATEFLAG_SUDDENDEATH = 1U<<1,
177 GAMESTATEFLAG_PAUSED = 1U<<2,
178 GAMESTATEFLAG_RACETIME = 1U<<3,
179};
180
181enum
182{
183 CHARACTERFLAG_SOLO = 1U<<0,
184 CHARACTERFLAG_JETPACK = 1U<<1,
185 CHARACTERFLAG_COLLISION_DISABLED = 1U<<2,
186 CHARACTERFLAG_ENDLESS_HOOK = 1U<<3,
187 CHARACTERFLAG_ENDLESS_JUMP = 1U<<4,
188 CHARACTERFLAG_SUPER = 1U<<5,
189 CHARACTERFLAG_HAMMER_HIT_DISABLED = 1U<<6,
190 CHARACTERFLAG_SHOTGUN_HIT_DISABLED = 1U<<7,
191 CHARACTERFLAG_GRENADE_HIT_DISABLED = 1U<<8,
192 CHARACTERFLAG_LASER_HIT_DISABLED = 1U<<9,
193 CHARACTERFLAG_HOOK_HIT_DISABLED = 1U<<10,
194 CHARACTERFLAG_TELEGUN_GUN = 1U<<11,
195 CHARACTERFLAG_TELEGUN_GRENADE = 1U<<12,
196 CHARACTERFLAG_TELEGUN_LASER = 1U<<13,
197 CHARACTERFLAG_WEAPON_HAMMER = 1U<<14,
198 CHARACTERFLAG_WEAPON_GUN = 1U<<15,
199 CHARACTERFLAG_WEAPON_SHOTGUN = 1U<<16,
200 CHARACTERFLAG_WEAPON_GRENADE = 1U<<17,
201 CHARACTERFLAG_WEAPON_LASER = 1U<<18,
202 CHARACTERFLAG_WEAPON_NINJA = 1U<<19,
203 CHARACTERFLAG_MOVEMENTS_DISABLED = 1U<<20,
204 CHARACTERFLAG_IN_FREEZE = 1U<<21,
205 CHARACTERFLAG_PRACTICE_MODE = 1U<<22,
206 CHARACTERFLAG_LOCK_MODE = 1U<<23,
207 CHARACTERFLAG_TEAM0_MODE = 1U<<24,
208 CHARACTERFLAG_INVINCIBLE = 1U<<25,
209};
210
211enum
212{
213 GAMEINFOFLAG_TIMESCORE = 1U<<0,
214 GAMEINFOFLAG_GAMETYPE_RACE = 1U<<1,
215 GAMEINFOFLAG_GAMETYPE_FASTCAP = 1U<<2,
216 GAMEINFOFLAG_GAMETYPE_FNG = 1U<<3,
217 GAMEINFOFLAG_GAMETYPE_DDRACE = 1U<<4,
218 GAMEINFOFLAG_GAMETYPE_DDNET = 1U<<5,
219 GAMEINFOFLAG_GAMETYPE_BLOCK_WORLDS = 1U<<6,
220 GAMEINFOFLAG_GAMETYPE_VANILLA = 1U<<7,
221 GAMEINFOFLAG_GAMETYPE_PLUS = 1U<<8,
222 GAMEINFOFLAG_FLAG_STARTS_RACE = 1U<<9,
223 GAMEINFOFLAG_RACE = 1U<<10,
224 GAMEINFOFLAG_UNLIMITED_AMMO = 1U<<11,
225 GAMEINFOFLAG_DDRACE_RECORD_MESSAGE = 1U<<12,
226 GAMEINFOFLAG_RACE_RECORD_MESSAGE = 1U<<13,
227 GAMEINFOFLAG_ALLOW_EYE_WHEEL = 1U<<14,
228 GAMEINFOFLAG_ALLOW_HOOK_COLL = 1U<<15,
229 GAMEINFOFLAG_ALLOW_ZOOM = 1U<<16,
230 GAMEINFOFLAG_BUG_DDRACE_GHOST = 1U<<17,
231 GAMEINFOFLAG_BUG_DDRACE_INPUT = 1U<<18,
232 GAMEINFOFLAG_BUG_FNG_LASER_RANGE = 1U<<19,
233 GAMEINFOFLAG_BUG_VANILLA_BOUNCE = 1U<<20,
234 GAMEINFOFLAG_PREDICT_FNG = 1U<<21,
235 GAMEINFOFLAG_PREDICT_DDRACE = 1U<<22,
236 GAMEINFOFLAG_PREDICT_DDRACE_TILES = 1U<<23,
237 GAMEINFOFLAG_PREDICT_VANILLA = 1U<<24,
238 GAMEINFOFLAG_ENTITIES_DDNET = 1U<<25,
239 GAMEINFOFLAG_ENTITIES_DDRACE = 1U<<26,
240 GAMEINFOFLAG_ENTITIES_RACE = 1U<<27,
241 GAMEINFOFLAG_ENTITIES_FNG = 1U<<28,
242 GAMEINFOFLAG_ENTITIES_VANILLA = 1U<<29,
243 GAMEINFOFLAG_DONT_MASK_ENTITIES = 1U<<30,
244 GAMEINFOFLAG_ENTITIES_BW = 1U<<31,
245};
246
247enum
248{
249 GAMEINFOFLAG2_ALLOW_X_SKINS = 1U<<0,
250 GAMEINFOFLAG2_GAMETYPE_CITY = 1U<<1,
251 GAMEINFOFLAG2_GAMETYPE_FDDRACE = 1U<<2,
252 GAMEINFOFLAG2_ENTITIES_FDDRACE = 1U<<3,
253 GAMEINFOFLAG2_HUD_HEALTH_ARMOR = 1U<<4,
254 GAMEINFOFLAG2_HUD_AMMO = 1U<<5,
255 GAMEINFOFLAG2_HUD_DDRACE = 1U<<6,
256 GAMEINFOFLAG2_NO_WEAK_HOOK = 1U<<7,
257 GAMEINFOFLAG2_NO_SKIN_CHANGE_FOR_FROZEN = 1U<<8,
258 GAMEINFOFLAG2_DDRACE_TEAM = 1U<<9,
259 GAMEINFOFLAG2_PREDICT_EVENTS = 1U<<10,
260};
261
262enum
263{
264 EXPLAYERFLAG_AFK = 1U<<0,
265 EXPLAYERFLAG_PAUSED = 1U<<1,
266 EXPLAYERFLAG_SPEC = 1U<<2,
267};
268
269enum
270{
271 LEGACYPROJECTILEFLAG_CLIENTID_BIT0 = 1U<<0,
272 LEGACYPROJECTILEFLAG_CLIENTID_BIT1 = 1U<<1,
273 LEGACYPROJECTILEFLAG_CLIENTID_BIT2 = 1U<<2,
274 LEGACYPROJECTILEFLAG_CLIENTID_BIT3 = 1U<<3,
275 LEGACYPROJECTILEFLAG_CLIENTID_BIT4 = 1U<<4,
276 LEGACYPROJECTILEFLAG_CLIENTID_BIT5 = 1U<<5,
277 LEGACYPROJECTILEFLAG_CLIENTID_BIT6 = 1U<<6,
278 LEGACYPROJECTILEFLAG_CLIENTID_BIT7 = 1U<<7,
279 LEGACYPROJECTILEFLAG_NO_OWNER = 1U<<8,
280 LEGACYPROJECTILEFLAG_IS_DDNET = 1U<<9,
281 LEGACYPROJECTILEFLAG_BOUNCE_HORIZONTAL = 1U<<10,
282 LEGACYPROJECTILEFLAG_BOUNCE_VERTICAL = 1U<<11,
283 LEGACYPROJECTILEFLAG_EXPLOSIVE = 1U<<12,
284 LEGACYPROJECTILEFLAG_FREEZE = 1U<<13,
285};
286
287enum
288{
289 PROJECTILEFLAG_BOUNCE_HORIZONTAL = 1U<<0,
290 PROJECTILEFLAG_BOUNCE_VERTICAL = 1U<<1,
291 PROJECTILEFLAG_EXPLOSIVE = 1U<<2,
292 PROJECTILEFLAG_FREEZE = 1U<<3,
293 PROJECTILEFLAG_NORMALIZE_VEL = 1U<<4,
294};
295
296enum
297{
298 LASERFLAG_NO_PREDICT = 1U<<0,
299};
300
301enum
302{
303 PICKUPFLAG_XFLIP = 1U<<0,
304 PICKUPFLAG_YFLIP = 1U<<1,
305 PICKUPFLAG_ROTATE = 1U<<2,
306 PICKUPFLAG_NO_PREDICT = 1U<<3,
307};
308
309enum
310{
311 NETOBJTYPE_EX,
312 NETOBJTYPE_PLAYERINPUT,
313 NETOBJTYPE_PROJECTILE,
314 NETOBJTYPE_LASER,
315 NETOBJTYPE_PICKUP,
316 NETOBJTYPE_FLAG,
317 NETOBJTYPE_GAMEINFO,
318 NETOBJTYPE_GAMEDATA,
319 NETOBJTYPE_CHARACTERCORE,
320 NETOBJTYPE_CHARACTER,
321 NETOBJTYPE_PLAYERINFO,
322 NETOBJTYPE_CLIENTINFO,
323 NETOBJTYPE_SPECTATORINFO,
324 NETEVENTTYPE_COMMON,
325 NETEVENTTYPE_EXPLOSION,
326 NETEVENTTYPE_SPAWN,
327 NETEVENTTYPE_HAMMERHIT,
328 NETEVENTTYPE_DEATH,
329 NETEVENTTYPE_SOUNDGLOBAL,
330 NETEVENTTYPE_SOUNDWORLD,
331 NETEVENTTYPE_DAMAGEIND,
332 NUM_NETOBJTYPES
333};
334enum
335{
336 __NETOBJTYPE_UUID_HELPER=OFFSET_GAME_UUID-1,
337 NETOBJTYPE_MYOWNOBJECT,
338 NETOBJTYPE_DDNETCHARACTER,
339 NETOBJTYPE_DDNETPLAYER,
340 NETOBJTYPE_GAMEINFOEX,
341 NETOBJTYPE_DDRACEPROJECTILE,
342 NETOBJTYPE_DDNETLASER,
343 NETOBJTYPE_DDNETPROJECTILE,
344 NETOBJTYPE_DDNETPICKUP,
345 NETOBJTYPE_DDNETSPECTATORINFO,
346 NETOBJTYPE_SPECTATORCOUNT,
347 NETEVENTTYPE_BIRTHDAY,
348 NETEVENTTYPE_FINISH,
349 NETOBJTYPE_MYOWNEVENT,
350 NETOBJTYPE_SPECCHAR,
351 NETOBJTYPE_SWITCHSTATE,
352 NETOBJTYPE_ENTITYEX,
353 NETOBJTYPE_MAPBESTTIME,
354 NETEVENTTYPE_MAPSOUNDWORLD,
355 OFFSET_NETMSGTYPE_UUID
356};
357
358enum
359{
360 NETMSGTYPE_EX,
361 NETMSGTYPE_SV_MOTD,
362 NETMSGTYPE_SV_BROADCAST,
363 NETMSGTYPE_SV_CHAT,
364 NETMSGTYPE_SV_KILLMSG,
365 NETMSGTYPE_SV_SOUNDGLOBAL,
366 NETMSGTYPE_SV_TUNEPARAMS,
367 NETMSGTYPE_UNUSED,
368 NETMSGTYPE_SV_READYTOENTER,
369 NETMSGTYPE_SV_WEAPONPICKUP,
370 NETMSGTYPE_SV_EMOTICON,
371 NETMSGTYPE_SV_VOTECLEAROPTIONS,
372 NETMSGTYPE_SV_VOTEOPTIONLISTADD,
373 NETMSGTYPE_SV_VOTEOPTIONADD,
374 NETMSGTYPE_SV_VOTEOPTIONREMOVE,
375 NETMSGTYPE_SV_VOTESET,
376 NETMSGTYPE_SV_VOTESTATUS,
377 NETMSGTYPE_CL_SAY,
378 NETMSGTYPE_CL_SETTEAM,
379 NETMSGTYPE_CL_SETSPECTATORMODE,
380 NETMSGTYPE_CL_STARTINFO,
381 NETMSGTYPE_CL_CHANGEINFO,
382 NETMSGTYPE_CL_KILL,
383 NETMSGTYPE_CL_EMOTICON,
384 NETMSGTYPE_CL_VOTE,
385 NETMSGTYPE_CL_CALLVOTE,
386 NETMSGTYPE_CL_ISDDNETLEGACY,
387 NETMSGTYPE_SV_DDRACETIMELEGACY,
388 NETMSGTYPE_SV_RECORDLEGACY,
389 NETMSGTYPE_UNUSED2,
390 NETMSGTYPE_SV_TEAMSSTATELEGACY,
391 NETMSGTYPE_CL_SHOWOTHERSLEGACY,
392 NUM_NETMSGTYPES
393};
394
395enum
396{
397 __NETMSGTYPE_UUID_HELPER=OFFSET_NETMSGTYPE_UUID-1,
398 NETMSGTYPE_SV_MYOWNMESSAGE,
399 NETMSGTYPE_CL_SHOWDISTANCE,
400 NETMSGTYPE_CL_SHOWOTHERS,
401 NETMSGTYPE_CL_CAMERAINFO,
402 NETMSGTYPE_SV_TEAMSSTATE,
403 NETMSGTYPE_SV_DDRACETIME,
404 NETMSGTYPE_SV_RECORD,
405 NETMSGTYPE_SV_KILLMSGTEAM,
406 NETMSGTYPE_SV_YOURVOTE,
407 NETMSGTYPE_SV_RACEFINISH,
408 NETMSGTYPE_SV_COMMANDINFO,
409 NETMSGTYPE_SV_COMMANDINFOREMOVE,
410 NETMSGTYPE_SV_VOTEOPTIONGROUPSTART,
411 NETMSGTYPE_SV_VOTEOPTIONGROUPEND,
412 NETMSGTYPE_SV_COMMANDINFOGROUPSTART,
413 NETMSGTYPE_SV_COMMANDINFOGROUPEND,
414 NETMSGTYPE_SV_CHANGEINFOCOOLDOWN,
415 NETMSGTYPE_SV_MAPSOUNDGLOBAL,
416 NETMSGTYPE_SV_PREINPUT,
417 NETMSGTYPE_SV_SAVECODE,
418 NETMSGTYPE_SV_SERVERALERT,
419 NETMSGTYPE_SV_MODERATORALERT,
420 NETMSGTYPE_CL_ENABLESPECTATORCOUNT,
421 NETMSGTYPE_SV_MAPINFO,
422 OFFSET_MAPITEMTYPE_UUID
423};
424
425struct CNetObj_PlayerInput
426{
427 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINPUT;
428 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
429 int m_Direction;
430 int m_TargetX;
431 int m_TargetY;
432 int m_Jump;
433 int m_Fire;
434 int m_Hook;
435 int m_PlayerFlags;
436 int m_WantedWeapon;
437 int m_NextWeapon;
438 int m_PrevWeapon;
439};
440
441struct CNetObj_Projectile
442{
443 static constexpr int ms_MsgId = NETOBJTYPE_PROJECTILE;
444 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
445 int m_X;
446 int m_Y;
447 int m_VelX;
448 int m_VelY;
449 int m_Type;
450 int m_StartTick;
451};
452
453struct CNetObj_Laser
454{
455 static constexpr int ms_MsgId = NETOBJTYPE_LASER;
456 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
457 int m_X;
458 int m_Y;
459 int m_FromX;
460 int m_FromY;
461 int m_StartTick;
462};
463
464struct CNetObj_Pickup
465{
466 static constexpr int ms_MsgId = NETOBJTYPE_PICKUP;
467 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
468 int m_X;
469 int m_Y;
470 int m_Type;
471 int m_Subtype;
472};
473
474struct CNetObj_Flag
475{
476 static constexpr int ms_MsgId = NETOBJTYPE_FLAG;
477 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
478 int m_X;
479 int m_Y;
480 int m_Team;
481};
482
483struct CNetObj_GameInfo
484{
485 static constexpr int ms_MsgId = NETOBJTYPE_GAMEINFO;
486 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
487 int m_GameFlags;
488 int m_GameStateFlags;
489 int m_RoundStartTick;
490 int m_WarmupTimer;
491 int m_ScoreLimit;
492 int m_TimeLimit;
493 int m_RoundNum;
494 int m_RoundCurrent;
495};
496
497struct CNetObj_GameData
498{
499 static constexpr int ms_MsgId = NETOBJTYPE_GAMEDATA;
500 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
501 int m_TeamscoreRed;
502 int m_TeamscoreBlue;
503 int m_FlagCarrierRed;
504 int m_FlagCarrierBlue;
505};
506
507struct CNetObj_CharacterCore
508{
509 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTERCORE;
510 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
511 int m_Tick;
512 int m_X;
513 int m_Y;
514 int m_VelX;
515 int m_VelY;
516 int m_Angle;
517 int m_Direction;
518 int m_Jumped;
519 int m_HookedPlayer;
520 int m_HookState;
521 int m_HookTick;
522 int m_HookX;
523 int m_HookY;
524 int m_HookDx;
525 int m_HookDy;
526};
527
528struct CNetObj_Character : public CNetObj_CharacterCore
529{
530 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTER;
531 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
532 int m_PlayerFlags;
533 int m_Health;
534 int m_Armor;
535 int m_AmmoCount;
536 int m_Weapon;
537 int m_Emote;
538 int m_AttackTick;
539};
540
541struct CNetObj_PlayerInfo
542{
543 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINFO;
544 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
545 int m_Local;
546 int m_ClientId;
547 int m_Team;
548 int m_Score;
549 int m_Latency;
550};
551
552struct CNetObj_ClientInfo
553{
554 static constexpr int ms_MsgId = NETOBJTYPE_CLIENTINFO;
555 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
556 int m_aName[4];
557 int m_aClan[3];
558 int m_Country;
559 int m_aSkin[6];
560 int m_UseCustomColor;
561 int m_ColorBody;
562 int m_ColorFeet;
563};
564
565struct CNetObj_SpectatorInfo
566{
567 static constexpr int ms_MsgId = NETOBJTYPE_SPECTATORINFO;
568 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
569 int m_SpectatorId;
570 int m_X;
571 int m_Y;
572};
573
574struct CNetObj_MyOwnObject
575{
576 static constexpr int ms_MsgId = NETOBJTYPE_MYOWNOBJECT;
577 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
578 int m_Test;
579};
580
581struct CNetObj_DDNetCharacter
582{
583 static constexpr int ms_MsgId = NETOBJTYPE_DDNETCHARACTER;
584 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
585 int m_Flags;
586 int m_FreezeEnd;
587 int m_Jumps;
588 int m_TeleCheckpoint;
589 int m_StrongWeakId;
590 int m_JumpedTotal;
591 int m_NinjaActivationTick;
592 int m_FreezeStart;
593 int m_TargetX;
594 int m_TargetY;
595 int m_TuneZoneOverride;
596};
597
598struct CNetObj_DDNetPlayer
599{
600 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPLAYER;
601 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
602 int m_Flags;
603 int m_AuthLevel;
604 int m_FinishTimeSeconds;
605 int m_FinishTimeMillis;
606};
607
608struct CNetObj_GameInfoEx
609{
610 static constexpr int ms_MsgId = NETOBJTYPE_GAMEINFOEX;
611 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
612 int m_Flags;
613 int m_Version;
614 int m_Flags2;
615};
616
617struct CNetObj_DDRaceProjectile
618{
619 static constexpr int ms_MsgId = NETOBJTYPE_DDRACEPROJECTILE;
620 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
621 int m_X;
622 int m_Y;
623 int m_Angle;
624 int m_Data;
625 int m_Type;
626 int m_StartTick;
627};
628
629struct CNetObj_DDNetLaser
630{
631 static constexpr int ms_MsgId = NETOBJTYPE_DDNETLASER;
632 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
633 int m_ToX;
634 int m_ToY;
635 int m_FromX;
636 int m_FromY;
637 int m_StartTick;
638 int m_Owner;
639 int m_Type;
640 int m_SwitchNumber;
641 int m_Subtype;
642 int m_Flags;
643};
644
645struct CNetObj_DDNetProjectile
646{
647 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPROJECTILE;
648 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
649 int m_X;
650 int m_Y;
651 int m_VelX;
652 int m_VelY;
653 int m_Type;
654 int m_StartTick;
655 int m_Owner;
656 int m_SwitchNumber;
657 int m_TuneZone;
658 int m_Flags;
659};
660
661struct CNetObj_DDNetPickup
662{
663 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPICKUP;
664 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
665 int m_X;
666 int m_Y;
667 int m_Type;
668 int m_Subtype;
669 int m_SwitchNumber;
670 int m_Flags;
671};
672
673struct CNetObj_DDNetSpectatorInfo
674{
675 static constexpr int ms_MsgId = NETOBJTYPE_DDNETSPECTATORINFO;
676 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
677 int m_HasCameraInfo;
678 int m_Zoom;
679 int m_Deadzone;
680 int m_FollowFactor;
681 int m_SpectatorCount;
682};
683
684struct CNetObj_SpectatorCount
685{
686 static constexpr int ms_MsgId = NETOBJTYPE_SPECTATORCOUNT;
687 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
688 int m_NumSpectators;
689};
690
691struct CNetEvent_Common
692{
693 static constexpr int ms_MsgId = NETEVENTTYPE_COMMON;
694 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
695 int m_X;
696 int m_Y;
697};
698
699struct CNetEvent_Explosion : public CNetEvent_Common
700{
701 static constexpr int ms_MsgId = NETEVENTTYPE_EXPLOSION;
702 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
703};
704
705struct CNetEvent_Spawn : public CNetEvent_Common
706{
707 static constexpr int ms_MsgId = NETEVENTTYPE_SPAWN;
708 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
709};
710
711struct CNetEvent_HammerHit : public CNetEvent_Common
712{
713 static constexpr int ms_MsgId = NETEVENTTYPE_HAMMERHIT;
714 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
715};
716
717struct CNetEvent_Death : public CNetEvent_Common
718{
719 static constexpr int ms_MsgId = NETEVENTTYPE_DEATH;
720 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
721 int m_ClientId;
722};
723
724struct CNetEvent_SoundGlobal : public CNetEvent_Common
725{
726 static constexpr int ms_MsgId = NETEVENTTYPE_SOUNDGLOBAL;
727 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
728 int m_SoundId;
729};
730
731struct CNetEvent_SoundWorld : public CNetEvent_Common
732{
733 static constexpr int ms_MsgId = NETEVENTTYPE_SOUNDWORLD;
734 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
735 int m_SoundId;
736};
737
738struct CNetEvent_DamageInd : public CNetEvent_Common
739{
740 static constexpr int ms_MsgId = NETEVENTTYPE_DAMAGEIND;
741 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
742 int m_Angle;
743};
744
745struct CNetEvent_Birthday : public CNetEvent_Common
746{
747 static constexpr int ms_MsgId = NETEVENTTYPE_BIRTHDAY;
748 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
749};
750
751struct CNetEvent_Finish : public CNetEvent_Common
752{
753 static constexpr int ms_MsgId = NETEVENTTYPE_FINISH;
754 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
755};
756
757struct CNetObj_MyOwnEvent
758{
759 static constexpr int ms_MsgId = NETOBJTYPE_MYOWNEVENT;
760 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
761 int m_Test;
762};
763
764struct CNetObj_SpecChar
765{
766 static constexpr int ms_MsgId = NETOBJTYPE_SPECCHAR;
767 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
768 int m_X;
769 int m_Y;
770};
771
772struct CNetObj_SwitchState
773{
774 static constexpr int ms_MsgId = NETOBJTYPE_SWITCHSTATE;
775 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
776 int m_HighestSwitchNumber;
777 int m_aStatus[8];
778 int m_aSwitchNumbers[4];
779 int m_aEndTicks[4];
780};
781
782struct CNetObj_EntityEx
783{
784 static constexpr int ms_MsgId = NETOBJTYPE_ENTITYEX;
785 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
786 int m_SwitchNumber;
787 int m_Layer;
788 int m_EntityClass;
789};
790
791struct CNetObj_MapBestTime
792{
793 static constexpr int ms_MsgId = NETOBJTYPE_MAPBESTTIME;
794 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
795 int m_MapBestTimeSeconds;
796 int m_MapBestTimeMillis;
797};
798
799struct CNetEvent_MapSoundWorld : public CNetEvent_Common
800{
801 static constexpr int ms_MsgId = NETEVENTTYPE_MAPSOUNDWORLD;
802 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
803 int m_SoundId;
804};
805
806struct CNetMsg_Sv_Motd
807{
808 static constexpr int ms_MsgId = NETMSGTYPE_SV_MOTD;
809 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
810 const char *m_pMessage;
811
812 bool Pack(CMsgPacker *pPacker) const
813 {
814 pPacker->AddString(pStr: m_pMessage, Limit: -1);
815 return pPacker->Error() != 0;
816 }
817};
818
819struct CNetMsg_Sv_Broadcast
820{
821 static constexpr int ms_MsgId = NETMSGTYPE_SV_BROADCAST;
822 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
823 const char *m_pMessage;
824
825 bool Pack(CMsgPacker *pPacker) const
826 {
827 pPacker->AddString(pStr: m_pMessage, Limit: -1);
828 return pPacker->Error() != 0;
829 }
830};
831
832struct CNetMsg_Sv_Chat
833{
834 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHAT;
835 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
836 int m_Team;
837 int m_ClientId;
838 const char *m_pMessage;
839
840 bool Pack(CMsgPacker *pPacker) const
841 {
842 pPacker->AddInt(i: m_Team);
843 pPacker->AddInt(i: m_ClientId);
844 pPacker->AddString(pStr: m_pMessage, Limit: -1);
845 return pPacker->Error() != 0;
846 }
847};
848
849struct CNetMsg_Sv_KillMsg
850{
851 static constexpr int ms_MsgId = NETMSGTYPE_SV_KILLMSG;
852 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
853 int m_Killer;
854 int m_Victim;
855 int m_Weapon;
856 int m_ModeSpecial;
857
858 bool Pack(CMsgPacker *pPacker) const
859 {
860 pPacker->AddInt(i: m_Killer);
861 pPacker->AddInt(i: m_Victim);
862 pPacker->AddInt(i: m_Weapon);
863 pPacker->AddInt(i: m_ModeSpecial);
864 return pPacker->Error() != 0;
865 }
866};
867
868struct CNetMsg_Sv_SoundGlobal
869{
870 static constexpr int ms_MsgId = NETMSGTYPE_SV_SOUNDGLOBAL;
871 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
872 int m_SoundId;
873
874 bool Pack(CMsgPacker *pPacker) const
875 {
876 pPacker->AddInt(i: m_SoundId);
877 return pPacker->Error() != 0;
878 }
879};
880
881struct CNetMsg_Sv_TuneParams
882{
883 static constexpr int ms_MsgId = NETMSGTYPE_SV_TUNEPARAMS;
884 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
885
886 bool Pack(CMsgPacker *pPacker) const
887 {
888 return pPacker->Error() != 0;
889 }
890};
891
892struct CNetMsg_Unused
893{
894 static constexpr int ms_MsgId = NETMSGTYPE_UNUSED;
895 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
896
897 bool Pack(CMsgPacker *pPacker) const
898 {
899 return pPacker->Error() != 0;
900 }
901};
902
903struct CNetMsg_Sv_ReadyToEnter
904{
905 static constexpr int ms_MsgId = NETMSGTYPE_SV_READYTOENTER;
906 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
907
908 bool Pack(CMsgPacker *pPacker) const
909 {
910 return pPacker->Error() != 0;
911 }
912};
913
914struct CNetMsg_Sv_WeaponPickup
915{
916 static constexpr int ms_MsgId = NETMSGTYPE_SV_WEAPONPICKUP;
917 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
918 int m_Weapon;
919
920 bool Pack(CMsgPacker *pPacker) const
921 {
922 pPacker->AddInt(i: m_Weapon);
923 return pPacker->Error() != 0;
924 }
925};
926
927struct CNetMsg_Sv_Emoticon
928{
929 static constexpr int ms_MsgId = NETMSGTYPE_SV_EMOTICON;
930 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
931 int m_ClientId;
932 int m_Emoticon;
933
934 bool Pack(CMsgPacker *pPacker) const
935 {
936 pPacker->AddInt(i: m_ClientId);
937 pPacker->AddInt(i: m_Emoticon);
938 return pPacker->Error() != 0;
939 }
940};
941
942struct CNetMsg_Sv_VoteClearOptions
943{
944 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTECLEAROPTIONS;
945 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
946
947 bool Pack(CMsgPacker *pPacker) const
948 {
949 return pPacker->Error() != 0;
950 }
951};
952
953struct CNetMsg_Sv_VoteOptionListAdd
954{
955 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONLISTADD;
956 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
957 int m_NumOptions;
958 const char *m_pDescription0;
959 const char *m_pDescription1;
960 const char *m_pDescription2;
961 const char *m_pDescription3;
962 const char *m_pDescription4;
963 const char *m_pDescription5;
964 const char *m_pDescription6;
965 const char *m_pDescription7;
966 const char *m_pDescription8;
967 const char *m_pDescription9;
968 const char *m_pDescription10;
969 const char *m_pDescription11;
970 const char *m_pDescription12;
971 const char *m_pDescription13;
972 const char *m_pDescription14;
973
974 bool Pack(CMsgPacker *pPacker) const
975 {
976 pPacker->AddInt(i: m_NumOptions);
977 pPacker->AddString(pStr: m_pDescription0, Limit: -1);
978 pPacker->AddString(pStr: m_pDescription1, Limit: -1);
979 pPacker->AddString(pStr: m_pDescription2, Limit: -1);
980 pPacker->AddString(pStr: m_pDescription3, Limit: -1);
981 pPacker->AddString(pStr: m_pDescription4, Limit: -1);
982 pPacker->AddString(pStr: m_pDescription5, Limit: -1);
983 pPacker->AddString(pStr: m_pDescription6, Limit: -1);
984 pPacker->AddString(pStr: m_pDescription7, Limit: -1);
985 pPacker->AddString(pStr: m_pDescription8, Limit: -1);
986 pPacker->AddString(pStr: m_pDescription9, Limit: -1);
987 pPacker->AddString(pStr: m_pDescription10, Limit: -1);
988 pPacker->AddString(pStr: m_pDescription11, Limit: -1);
989 pPacker->AddString(pStr: m_pDescription12, Limit: -1);
990 pPacker->AddString(pStr: m_pDescription13, Limit: -1);
991 pPacker->AddString(pStr: m_pDescription14, Limit: -1);
992 return pPacker->Error() != 0;
993 }
994};
995
996struct CNetMsg_Sv_VoteOptionAdd
997{
998 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONADD;
999 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1000 const char *m_pDescription;
1001
1002 bool Pack(CMsgPacker *pPacker) const
1003 {
1004 pPacker->AddString(pStr: m_pDescription, Limit: -1);
1005 return pPacker->Error() != 0;
1006 }
1007};
1008
1009struct CNetMsg_Sv_VoteOptionRemove
1010{
1011 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONREMOVE;
1012 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1013 const char *m_pDescription;
1014
1015 bool Pack(CMsgPacker *pPacker) const
1016 {
1017 pPacker->AddString(pStr: m_pDescription, Limit: -1);
1018 return pPacker->Error() != 0;
1019 }
1020};
1021
1022struct CNetMsg_Sv_VoteSet
1023{
1024 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESET;
1025 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1026 int m_Timeout;
1027 const char *m_pDescription;
1028 const char *m_pReason;
1029
1030 bool Pack(CMsgPacker *pPacker) const
1031 {
1032 pPacker->AddInt(i: m_Timeout);
1033 pPacker->AddString(pStr: m_pDescription, Limit: -1);
1034 pPacker->AddString(pStr: m_pReason, Limit: -1);
1035 return pPacker->Error() != 0;
1036 }
1037};
1038
1039struct CNetMsg_Sv_VoteStatus
1040{
1041 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESTATUS;
1042 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1043 int m_Yes;
1044 int m_No;
1045 int m_Pass;
1046 int m_Total;
1047
1048 bool Pack(CMsgPacker *pPacker) const
1049 {
1050 pPacker->AddInt(i: m_Yes);
1051 pPacker->AddInt(i: m_No);
1052 pPacker->AddInt(i: m_Pass);
1053 pPacker->AddInt(i: m_Total);
1054 return pPacker->Error() != 0;
1055 }
1056};
1057
1058struct CNetMsg_Cl_Say
1059{
1060 static constexpr int ms_MsgId = NETMSGTYPE_CL_SAY;
1061 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1062 int m_Team;
1063 const char *m_pMessage;
1064
1065 bool Pack(CMsgPacker *pPacker) const
1066 {
1067 pPacker->AddInt(i: m_Team);
1068 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1069 return pPacker->Error() != 0;
1070 }
1071};
1072
1073struct CNetMsg_Cl_SetTeam
1074{
1075 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETTEAM;
1076 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1077 int m_Team;
1078
1079 bool Pack(CMsgPacker *pPacker) const
1080 {
1081 pPacker->AddInt(i: m_Team);
1082 return pPacker->Error() != 0;
1083 }
1084};
1085
1086struct CNetMsg_Cl_SetSpectatorMode
1087{
1088 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETSPECTATORMODE;
1089 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1090 int m_SpectatorId;
1091
1092 bool Pack(CMsgPacker *pPacker) const
1093 {
1094 pPacker->AddInt(i: m_SpectatorId);
1095 return pPacker->Error() != 0;
1096 }
1097};
1098
1099struct CNetMsg_Cl_StartInfo
1100{
1101 static constexpr int ms_MsgId = NETMSGTYPE_CL_STARTINFO;
1102 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1103 const char *m_pName;
1104 const char *m_pClan;
1105 int m_Country;
1106 const char *m_pSkin;
1107 int m_UseCustomColor;
1108 int m_ColorBody;
1109 int m_ColorFeet;
1110
1111 bool Pack(CMsgPacker *pPacker) const
1112 {
1113 pPacker->AddString(pStr: m_pName, Limit: -1);
1114 pPacker->AddString(pStr: m_pClan, Limit: -1);
1115 pPacker->AddInt(i: m_Country);
1116 pPacker->AddString(pStr: m_pSkin, Limit: -1);
1117 pPacker->AddInt(i: m_UseCustomColor);
1118 pPacker->AddInt(i: m_ColorBody);
1119 pPacker->AddInt(i: m_ColorFeet);
1120 return pPacker->Error() != 0;
1121 }
1122};
1123
1124struct CNetMsg_Cl_ChangeInfo
1125{
1126 static constexpr int ms_MsgId = NETMSGTYPE_CL_CHANGEINFO;
1127 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1128 const char *m_pName;
1129 const char *m_pClan;
1130 int m_Country;
1131 const char *m_pSkin;
1132 int m_UseCustomColor;
1133 int m_ColorBody;
1134 int m_ColorFeet;
1135
1136 bool Pack(CMsgPacker *pPacker) const
1137 {
1138 pPacker->AddString(pStr: m_pName, Limit: -1);
1139 pPacker->AddString(pStr: m_pClan, Limit: -1);
1140 pPacker->AddInt(i: m_Country);
1141 pPacker->AddString(pStr: m_pSkin, Limit: -1);
1142 pPacker->AddInt(i: m_UseCustomColor);
1143 pPacker->AddInt(i: m_ColorBody);
1144 pPacker->AddInt(i: m_ColorFeet);
1145 return pPacker->Error() != 0;
1146 }
1147};
1148
1149struct CNetMsg_Cl_Kill
1150{
1151 static constexpr int ms_MsgId = NETMSGTYPE_CL_KILL;
1152 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1153
1154 bool Pack(CMsgPacker *pPacker) const
1155 {
1156 return pPacker->Error() != 0;
1157 }
1158};
1159
1160struct CNetMsg_Cl_Emoticon
1161{
1162 static constexpr int ms_MsgId = NETMSGTYPE_CL_EMOTICON;
1163 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1164 int m_Emoticon;
1165
1166 bool Pack(CMsgPacker *pPacker) const
1167 {
1168 pPacker->AddInt(i: m_Emoticon);
1169 return pPacker->Error() != 0;
1170 }
1171};
1172
1173struct CNetMsg_Cl_Vote
1174{
1175 static constexpr int ms_MsgId = NETMSGTYPE_CL_VOTE;
1176 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1177 int m_Vote;
1178
1179 bool Pack(CMsgPacker *pPacker) const
1180 {
1181 pPacker->AddInt(i: m_Vote);
1182 return pPacker->Error() != 0;
1183 }
1184};
1185
1186struct CNetMsg_Cl_CallVote
1187{
1188 static constexpr int ms_MsgId = NETMSGTYPE_CL_CALLVOTE;
1189 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1190 const char *m_pType;
1191 const char *m_pValue;
1192 const char *m_pReason;
1193
1194 bool Pack(CMsgPacker *pPacker) const
1195 {
1196 pPacker->AddString(pStr: m_pType, Limit: -1);
1197 pPacker->AddString(pStr: m_pValue, Limit: -1);
1198 pPacker->AddString(pStr: m_pReason, Limit: -1);
1199 return pPacker->Error() != 0;
1200 }
1201};
1202
1203struct CNetMsg_Cl_IsDDNetLegacy
1204{
1205 static constexpr int ms_MsgId = NETMSGTYPE_CL_ISDDNETLEGACY;
1206 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1207
1208 bool Pack(CMsgPacker *pPacker) const
1209 {
1210 return pPacker->Error() != 0;
1211 }
1212};
1213
1214struct CNetMsg_Sv_DDRaceTimeLegacy
1215{
1216 static constexpr int ms_MsgId = NETMSGTYPE_SV_DDRACETIMELEGACY;
1217 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1218 int m_Time;
1219 int m_Check;
1220 int m_Finish;
1221
1222 bool Pack(CMsgPacker *pPacker) const
1223 {
1224 pPacker->AddInt(i: m_Time);
1225 pPacker->AddInt(i: m_Check);
1226 pPacker->AddInt(i: m_Finish);
1227 return pPacker->Error() != 0;
1228 }
1229};
1230
1231struct CNetMsg_Sv_RecordLegacy
1232{
1233 static constexpr int ms_MsgId = NETMSGTYPE_SV_RECORDLEGACY;
1234 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1235 int m_ServerTimeBest;
1236 int m_PlayerTimeBest;
1237
1238 bool Pack(CMsgPacker *pPacker) const
1239 {
1240 pPacker->AddInt(i: m_ServerTimeBest);
1241 pPacker->AddInt(i: m_PlayerTimeBest);
1242 return pPacker->Error() != 0;
1243 }
1244};
1245
1246struct CNetMsg_Unused2
1247{
1248 static constexpr int ms_MsgId = NETMSGTYPE_UNUSED2;
1249 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1250
1251 bool Pack(CMsgPacker *pPacker) const
1252 {
1253 return pPacker->Error() != 0;
1254 }
1255};
1256
1257struct CNetMsg_Sv_TeamsStateLegacy
1258{
1259 static constexpr int ms_MsgId = NETMSGTYPE_SV_TEAMSSTATELEGACY;
1260 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1261
1262 bool Pack(CMsgPacker *pPacker) const
1263 {
1264 return pPacker->Error() != 0;
1265 }
1266};
1267
1268struct CNetMsg_Cl_ShowOthersLegacy
1269{
1270 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWOTHERSLEGACY;
1271 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1272 int m_Show;
1273
1274 bool Pack(CMsgPacker *pPacker) const
1275 {
1276 pPacker->AddInt(i: m_Show);
1277 return pPacker->Error() != 0;
1278 }
1279};
1280
1281struct CNetMsg_Sv_MyOwnMessage
1282{
1283 static constexpr int ms_MsgId = NETMSGTYPE_SV_MYOWNMESSAGE;
1284 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1285 int m_Test;
1286
1287 bool Pack(CMsgPacker *pPacker) const
1288 {
1289 pPacker->AddInt(i: m_Test);
1290 return pPacker->Error() != 0;
1291 }
1292};
1293
1294struct CNetMsg_Cl_ShowDistance
1295{
1296 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWDISTANCE;
1297 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1298 int m_X;
1299 int m_Y;
1300
1301 bool Pack(CMsgPacker *pPacker) const
1302 {
1303 pPacker->AddInt(i: m_X);
1304 pPacker->AddInt(i: m_Y);
1305 return pPacker->Error() != 0;
1306 }
1307};
1308
1309struct CNetMsg_Cl_ShowOthers
1310{
1311 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWOTHERS;
1312 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1313 int m_Show;
1314
1315 bool Pack(CMsgPacker *pPacker) const
1316 {
1317 pPacker->AddInt(i: m_Show);
1318 return pPacker->Error() != 0;
1319 }
1320};
1321
1322struct CNetMsg_Cl_CameraInfo
1323{
1324 static constexpr int ms_MsgId = NETMSGTYPE_CL_CAMERAINFO;
1325 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1326 int m_Zoom;
1327 int m_Deadzone;
1328 int m_FollowFactor;
1329
1330 bool Pack(CMsgPacker *pPacker) const
1331 {
1332 pPacker->AddInt(i: m_Zoom);
1333 pPacker->AddInt(i: m_Deadzone);
1334 pPacker->AddInt(i: m_FollowFactor);
1335 return pPacker->Error() != 0;
1336 }
1337};
1338
1339struct CNetMsg_Sv_TeamsState
1340{
1341 static constexpr int ms_MsgId = NETMSGTYPE_SV_TEAMSSTATE;
1342 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1343
1344 bool Pack(CMsgPacker *pPacker) const
1345 {
1346 return pPacker->Error() != 0;
1347 }
1348};
1349
1350struct CNetMsg_Sv_DDRaceTime
1351{
1352 static constexpr int ms_MsgId = NETMSGTYPE_SV_DDRACETIME;
1353 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1354 int m_Time;
1355 int m_Check;
1356 int m_Finish;
1357
1358 bool Pack(CMsgPacker *pPacker) const
1359 {
1360 pPacker->AddInt(i: m_Time);
1361 pPacker->AddInt(i: m_Check);
1362 pPacker->AddInt(i: m_Finish);
1363 return pPacker->Error() != 0;
1364 }
1365};
1366
1367struct CNetMsg_Sv_Record
1368{
1369 static constexpr int ms_MsgId = NETMSGTYPE_SV_RECORD;
1370 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1371 int m_ServerTimeBest;
1372 int m_PlayerTimeBest;
1373
1374 bool Pack(CMsgPacker *pPacker) const
1375 {
1376 pPacker->AddInt(i: m_ServerTimeBest);
1377 pPacker->AddInt(i: m_PlayerTimeBest);
1378 return pPacker->Error() != 0;
1379 }
1380};
1381
1382struct CNetMsg_Sv_KillMsgTeam
1383{
1384 static constexpr int ms_MsgId = NETMSGTYPE_SV_KILLMSGTEAM;
1385 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1386 int m_Team;
1387 int m_First;
1388
1389 bool Pack(CMsgPacker *pPacker) const
1390 {
1391 pPacker->AddInt(i: m_Team);
1392 pPacker->AddInt(i: m_First);
1393 return pPacker->Error() != 0;
1394 }
1395};
1396
1397struct CNetMsg_Sv_YourVote
1398{
1399 static constexpr int ms_MsgId = NETMSGTYPE_SV_YOURVOTE;
1400 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1401 int m_Voted;
1402
1403 bool Pack(CMsgPacker *pPacker) const
1404 {
1405 pPacker->AddInt(i: m_Voted);
1406 return pPacker->Error() != 0;
1407 }
1408};
1409
1410struct CNetMsg_Sv_RaceFinish
1411{
1412 static constexpr int ms_MsgId = NETMSGTYPE_SV_RACEFINISH;
1413 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1414 int m_ClientId;
1415 int m_Time;
1416 int m_Diff;
1417 int m_RecordPersonal;
1418 int m_RecordServer;
1419
1420 bool Pack(CMsgPacker *pPacker) const
1421 {
1422 pPacker->AddInt(i: m_ClientId);
1423 pPacker->AddInt(i: m_Time);
1424 pPacker->AddInt(i: m_Diff);
1425 pPacker->AddInt(i: m_RecordPersonal);
1426 pPacker->AddInt(i: m_RecordServer);
1427 return pPacker->Error() != 0;
1428 }
1429};
1430
1431struct CNetMsg_Sv_CommandInfo
1432{
1433 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFO;
1434 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1435 const char *m_pName;
1436 const char *m_pArgsFormat;
1437 const char *m_pHelpText;
1438
1439 bool Pack(CMsgPacker *pPacker) const
1440 {
1441 pPacker->AddString(pStr: m_pName, Limit: -1);
1442 pPacker->AddString(pStr: m_pArgsFormat, Limit: -1);
1443 pPacker->AddString(pStr: m_pHelpText, Limit: -1);
1444 return pPacker->Error() != 0;
1445 }
1446};
1447
1448struct CNetMsg_Sv_CommandInfoRemove
1449{
1450 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOREMOVE;
1451 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1452 const char *m_pName;
1453
1454 bool Pack(CMsgPacker *pPacker) const
1455 {
1456 pPacker->AddString(pStr: m_pName, Limit: -1);
1457 return pPacker->Error() != 0;
1458 }
1459};
1460
1461struct CNetMsg_Sv_VoteOptionGroupStart
1462{
1463 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONGROUPSTART;
1464 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1465
1466 bool Pack(CMsgPacker *pPacker) const
1467 {
1468 return pPacker->Error() != 0;
1469 }
1470};
1471
1472struct CNetMsg_Sv_VoteOptionGroupEnd
1473{
1474 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONGROUPEND;
1475 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1476
1477 bool Pack(CMsgPacker *pPacker) const
1478 {
1479 return pPacker->Error() != 0;
1480 }
1481};
1482
1483struct CNetMsg_Sv_CommandInfoGroupStart
1484{
1485 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOGROUPSTART;
1486 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1487
1488 bool Pack(CMsgPacker *pPacker) const
1489 {
1490 return pPacker->Error() != 0;
1491 }
1492};
1493
1494struct CNetMsg_Sv_CommandInfoGroupEnd
1495{
1496 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOGROUPEND;
1497 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1498
1499 bool Pack(CMsgPacker *pPacker) const
1500 {
1501 return pPacker->Error() != 0;
1502 }
1503};
1504
1505struct CNetMsg_Sv_ChangeInfoCooldown
1506{
1507 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHANGEINFOCOOLDOWN;
1508 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1509 int m_WaitUntil;
1510
1511 bool Pack(CMsgPacker *pPacker) const
1512 {
1513 pPacker->AddInt(i: m_WaitUntil);
1514 return pPacker->Error() != 0;
1515 }
1516};
1517
1518struct CNetMsg_Sv_MapSoundGlobal
1519{
1520 static constexpr int ms_MsgId = NETMSGTYPE_SV_MAPSOUNDGLOBAL;
1521 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1522 int m_SoundId;
1523
1524 bool Pack(CMsgPacker *pPacker) const
1525 {
1526 pPacker->AddInt(i: m_SoundId);
1527 return pPacker->Error() != 0;
1528 }
1529};
1530
1531struct CNetMsg_Sv_PreInput
1532{
1533 static constexpr int ms_MsgId = NETMSGTYPE_SV_PREINPUT;
1534 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1535 int m_Direction;
1536 int m_TargetX;
1537 int m_TargetY;
1538 int m_Jump;
1539 int m_Fire;
1540 int m_Hook;
1541 int m_WantedWeapon;
1542 int m_NextWeapon;
1543 int m_PrevWeapon;
1544 int m_Owner;
1545 int m_IntendedTick;
1546
1547 bool Pack(CMsgPacker *pPacker) const
1548 {
1549 pPacker->AddInt(i: m_Direction);
1550 pPacker->AddInt(i: m_TargetX);
1551 pPacker->AddInt(i: m_TargetY);
1552 pPacker->AddInt(i: m_Jump);
1553 pPacker->AddInt(i: m_Fire);
1554 pPacker->AddInt(i: m_Hook);
1555 pPacker->AddInt(i: m_WantedWeapon);
1556 pPacker->AddInt(i: m_NextWeapon);
1557 pPacker->AddInt(i: m_PrevWeapon);
1558 pPacker->AddInt(i: m_Owner);
1559 pPacker->AddInt(i: m_IntendedTick);
1560 return pPacker->Error() != 0;
1561 }
1562};
1563
1564struct CNetMsg_Sv_SaveCode
1565{
1566 static constexpr int ms_MsgId = NETMSGTYPE_SV_SAVECODE;
1567 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1568 int m_State;
1569 const char *m_pError;
1570 const char *m_pSaveRequester;
1571 const char *m_pServerName;
1572 const char *m_pGeneratedCode;
1573 const char *m_pCode;
1574 const char *m_pTeamMembers;
1575
1576 bool Pack(CMsgPacker *pPacker) const
1577 {
1578 pPacker->AddInt(i: m_State);
1579 pPacker->AddString(pStr: m_pError, Limit: -1);
1580 pPacker->AddString(pStr: m_pSaveRequester, Limit: -1);
1581 pPacker->AddString(pStr: m_pServerName, Limit: -1);
1582 pPacker->AddString(pStr: m_pGeneratedCode, Limit: -1);
1583 pPacker->AddString(pStr: m_pCode, Limit: -1);
1584 pPacker->AddString(pStr: m_pTeamMembers, Limit: -1);
1585 return pPacker->Error() != 0;
1586 }
1587};
1588
1589struct CNetMsg_Sv_ServerAlert
1590{
1591 static constexpr int ms_MsgId = NETMSGTYPE_SV_SERVERALERT;
1592 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1593 const char *m_pMessage;
1594
1595 bool Pack(CMsgPacker *pPacker) const
1596 {
1597 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1598 return pPacker->Error() != 0;
1599 }
1600};
1601
1602struct CNetMsg_Sv_ModeratorAlert
1603{
1604 static constexpr int ms_MsgId = NETMSGTYPE_SV_MODERATORALERT;
1605 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1606 const char *m_pMessage;
1607
1608 bool Pack(CMsgPacker *pPacker) const
1609 {
1610 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1611 return pPacker->Error() != 0;
1612 }
1613};
1614
1615struct CNetMsg_Cl_EnableSpectatorCount
1616{
1617 static constexpr int ms_MsgId = NETMSGTYPE_CL_ENABLESPECTATORCOUNT;
1618 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1619 int m_Enable;
1620
1621 bool Pack(CMsgPacker *pPacker) const
1622 {
1623 pPacker->AddInt(i: m_Enable);
1624 return pPacker->Error() != 0;
1625 }
1626};
1627
1628struct CNetMsg_Sv_MapInfo
1629{
1630 static constexpr int ms_MsgId = NETMSGTYPE_SV_MAPINFO;
1631 rust::Slice<const int32_t> AsSlice() const { return rust::Slice((const int32_t *)this, sizeof(*this) / sizeof(int32_t)); }
1632 const char *m_pDescription;
1633
1634 bool Pack(CMsgPacker *pPacker) const
1635 {
1636 pPacker->AddString(pStr: m_pDescription, Limit: -1);
1637 return pPacker->Error() != 0;
1638 }
1639};
1640
1641enum
1642{
1643 SOUND_GUN_FIRE=0,
1644 SOUND_SHOTGUN_FIRE,
1645 SOUND_GRENADE_FIRE,
1646 SOUND_HAMMER_FIRE,
1647 SOUND_HAMMER_HIT,
1648 SOUND_NINJA_FIRE,
1649 SOUND_GRENADE_EXPLODE,
1650 SOUND_NINJA_HIT,
1651 SOUND_LASER_FIRE,
1652 SOUND_LASER_BOUNCE,
1653 SOUND_WEAPON_SWITCH,
1654 SOUND_PLAYER_PAIN_SHORT,
1655 SOUND_PLAYER_PAIN_LONG,
1656 SOUND_BODY_LAND,
1657 SOUND_PLAYER_AIRJUMP,
1658 SOUND_PLAYER_JUMP,
1659 SOUND_PLAYER_DIE,
1660 SOUND_PLAYER_SPAWN,
1661 SOUND_PLAYER_SKID,
1662 SOUND_TEE_CRY,
1663 SOUND_HOOK_LOOP,
1664 SOUND_HOOK_ATTACH_GROUND,
1665 SOUND_HOOK_ATTACH_PLAYER,
1666 SOUND_HOOK_NOATTACH,
1667 SOUND_PICKUP_HEALTH,
1668 SOUND_PICKUP_ARMOR,
1669 SOUND_PICKUP_GRENADE,
1670 SOUND_PICKUP_SHOTGUN,
1671 SOUND_PICKUP_NINJA,
1672 SOUND_WEAPON_SPAWN,
1673 SOUND_WEAPON_NOAMMO,
1674 SOUND_HIT,
1675 SOUND_CHAT_SERVER,
1676 SOUND_CHAT_CLIENT,
1677 SOUND_CHAT_HIGHLIGHT,
1678 SOUND_CTF_DROP,
1679 SOUND_CTF_RETURN,
1680 SOUND_CTF_GRAB_PL,
1681 SOUND_CTF_GRAB_EN,
1682 SOUND_CTF_CAPTURE,
1683 SOUND_MENU,
1684 NUM_SOUNDS
1685};
1686enum
1687{
1688 WEAPON_HAMMER=0,
1689 WEAPON_GUN,
1690 WEAPON_SHOTGUN,
1691 WEAPON_GRENADE,
1692 WEAPON_LASER,
1693 WEAPON_NINJA,
1694 NUM_WEAPONS
1695};
1696
1697enum
1698{
1699 WEAPON_GAME = -3, // team switching etc
1700 WEAPON_SELF = -2, // console kill command
1701 WEAPON_WORLD = -1, // death tiles etc
1702};
1703
1704enum
1705{
1706 TEAM_GAME = TEAM_RED,
1707};
1708
1709class CNetObjHandler
1710{
1711 const char *m_pMsgFailedOn;
1712 const char *m_pObjFailedOn;
1713 const char *m_pObjCorrectedOn;
1714 char m_aUnpackedData[1024 * 2];
1715 int m_NumObjCorrections;
1716 int ClampInt(const char *pErrorMsg, int Value, int Min, int Max);
1717
1718 static const char *ms_apObjNames[];
1719 static const char *ms_apExObjNames[];
1720 static int ms_aObjSizes[];
1721 static int ms_aUnpackedObjSizes[];
1722 static int ms_aUnpackedExObjSizes[];
1723 static const char *ms_apMsgNames[];
1724 static const char *ms_apExMsgNames[];
1725
1726public:
1727 CNetObjHandler();
1728
1729 void *SecureUnpackObj(int Type, CUnpacker *pUnpacker);
1730 const char *GetObjName(int Type) const;
1731 int GetObjSize(int Type) const;
1732 int GetUnpackedObjSize(int Type) const;
1733 int NumObjCorrections() const;
1734 const char *CorrectedObjOn() const;
1735 const char *FailedObjOn() const;
1736
1737 const char *GetMsgName(int Type) const;
1738 void DebugDumpSnapshot(const class CSnapshot *pSnap) const;
1739 int DumpObj(int Type, const void *pData, int Size) const;
1740 void *SecureUnpackMsg(int Type, CUnpacker *pUnpacker);
1741 bool TeeHistorianRecordMsg(int Type);
1742 const char *FailedMsgOn() const;
1743};
1744
1745#endif // GENERATED_PROTOCOL_H
1746