DDraceNetwork Documentation
Loading...
Searching...
No Matches
gamecontext.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_SERVER_GAMECONTEXT_H
4#define GAME_SERVER_GAMECONTEXT_H
5
6#include "eventhandler.h"
7#include "gameworld.h"
8#include "teehistorian.h"
9
10#include <base/types.h>
11
12#include <engine/console.h>
13#include <engine/server.h>
14
15#include <generated/protocol.h>
16
17#include <game/collision.h>
18#include <game/layers.h>
19#include <game/mapbugs.h>
20#include <game/voting.h>
21
22#include <map>
23#include <memory>
24#include <string>
25
26/*
27 Tick
28 Game Context (CGameContext::tick)
29 Game World (GAMEWORLD::tick)
30 Reset world if requested (GAMEWORLD::reset)
31 All entities in the world (ENTITY::tick)
32 All entities in the world (ENTITY::tick_deferred)
33 Remove entities marked for deletion (GAMEWORLD::remove_entities)
34 Game Controller (GAMECONTROLLER::tick)
35 All players (CPlayer::tick)
36
37
38 Snap
39 Game Context (CGameContext::snap)
40 Game World (GAMEWORLD::snap)
41 All entities in the world (ENTITY::snap)
42 Game Controller (GAMECONTROLLER::snap)
43 Events handler (EVENT_HANDLER::snap)
44 All players (CPlayer::snap)
45
46*/
47
48class CCharacter;
49class IConfigManager;
50class CConfig;
51class CHeap;
52class CPlayer;
53class CScore;
54class CUnpacker;
55class IAntibot;
56class IGameController;
57class IMap;
58class IEngine;
59class IStorage;
63
65{
66 CSnapContext(int Version, bool Sixup, int ClientId) :
68 {
69 }
70
71 int GetClientVersion() const { return m_ClientVersion; }
72 bool IsSixup() const { return m_Sixup; }
73 bool ClientId() const { return m_ClientId; }
74
75private:
77 bool m_Sixup;
79};
80
81class CMute
82{
83public:
84 int64_t m_Expire;
85 bool m_Initialized = false;
87 char m_aReason[128];
90
91 int SecondsLeft() const;
92};
93
94class CMutes
95{
96public:
97 CMutes(const char *pSystemName);
98
99 bool Mute(const NETADDR *pAddr, int Seconds, const char *pReason, const char *pClientName, bool InitialDelay);
100 void UnmuteIndex(int Index);
101 void UnmuteAddr(const NETADDR *pAddr);
102 void UnmuteExpired();
103 std::optional<CMute> IsMuted(const NETADDR *pAddr, bool RespectInitialDelay) const;
104 void Print(int Page) const;
105
106private:
107 const char *m_pSystemName;
108 std::map<NETADDR, CMute> m_Mutes;
109};
110
112{
120 std::unique_ptr<IMap> m_pMap;
126 std::vector<std::string> m_vCensorlist;
127
134
136
137 static void CommandCallback(int ClientId, int FlagMask, const char *pCmd, IConsole::IResult *pResult, void *pUser);
138 static void TeeHistorianWrite(const void *pData, int DataSize, void *pUser);
139
140 static void ConTuneParam(IConsole::IResult *pResult, void *pUserData);
141 static void ConToggleTuneParam(IConsole::IResult *pResult, void *pUserData);
142 static void ConTuneReset(IConsole::IResult *pResult, void *pUserData);
143 static void ConTunes(IConsole::IResult *pResult, void *pUserData);
144 static void ConTuneZone(IConsole::IResult *pResult, void *pUserData);
145 static void ConTuneDumpZone(IConsole::IResult *pResult, void *pUserData);
146 static void ConTuneResetZone(IConsole::IResult *pResult, void *pUserData);
147 static void ConTuneSetZoneMsgEnter(IConsole::IResult *pResult, void *pUserData);
148 static void ConTuneSetZoneMsgLeave(IConsole::IResult *pResult, void *pUserData);
149 static void ConMapbug(IConsole::IResult *pResult, void *pUserData);
150 static void ConSwitchOpen(IConsole::IResult *pResult, void *pUserData);
151 static void ConPause(IConsole::IResult *pResult, void *pUserData);
152 static void ConChangeMap(IConsole::IResult *pResult, void *pUserData);
153 static void ConRandomMap(IConsole::IResult *pResult, void *pUserData);
154 static void ConRandomUnfinishedMap(IConsole::IResult *pResult, void *pUserData);
155 static void ConRestart(IConsole::IResult *pResult, void *pUserData);
156 static void ConServerAlert(IConsole::IResult *pResult, void *pUserData);
157 static void ConModAlert(IConsole::IResult *pResult, void *pUserData);
158 static void ConBroadcast(IConsole::IResult *pResult, void *pUserData);
159 static void ConSay(IConsole::IResult *pResult, void *pUserData);
160 static void ConSetTeam(IConsole::IResult *pResult, void *pUserData);
161 static void ConSetTeamAll(IConsole::IResult *pResult, void *pUserData);
162 static void ConHotReload(IConsole::IResult *pResult, void *pUserData);
163 static void ConAddVote(IConsole::IResult *pResult, void *pUserData);
164 static void ConRemoveVote(IConsole::IResult *pResult, void *pUserData);
165 static void ConForceVote(IConsole::IResult *pResult, void *pUserData);
166 static void ConClearVotes(IConsole::IResult *pResult, void *pUserData);
167 static void ConAddMapVotes(IConsole::IResult *pResult, void *pUserData);
168 static void ConVote(IConsole::IResult *pResult, void *pUserData);
169 static void ConVotes(IConsole::IResult *pResult, void *pUserData);
170 static void ConVoteNo(IConsole::IResult *pResult, void *pUserData);
171 static void ConDrySave(IConsole::IResult *pResult, void *pUserData);
172 static void ConDumpAntibot(IConsole::IResult *pResult, void *pUserData);
173 static void ConAntibot(IConsole::IResult *pResult, void *pUserData);
174 static void ConchainSpecialMotdupdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
175 static void ConchainSettingUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
176 static void ConchainPracticeByDefaultUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
177 static void ConDumpLog(IConsole::IResult *pResult, void *pUserData);
178
179 void AddVote(const char *pDescription, const char *pCommand);
180 static int MapScan(const char *pName, int IsDir, int DirType, void *pUserData);
181
186
193
194public:
195 IServer *Server() const { return m_pServer; }
197 CConfig *Config() { return m_pConfig; }
199 IEngine *Engine() { return m_pEngine; }
201 IMap *Map() override { return m_pMap.get(); }
202 const IMap *Map() const override { return m_pMap.get(); }
211
212 CGameContext(bool Resetting = false);
213 ~CGameContext() override;
214
215 void Clear();
216
219 // keep last input to always apply when none is sent
225
226 // returns last input if available otherwise nulled PlayerInput object
227 // ClientId has to be valid
228 CNetObj_PlayerInput GetLastPlayerInput(int ClientId) const;
229
232
233 // helper functions
234 CCharacter *GetPlayerChar(int ClientId);
235 const CCharacter *GetPlayerChar(int ClientId) const;
236 bool EmulateBug(int Bug) const;
237 std::vector<SSwitchers> &Switchers() { return m_World.m_Core.m_vSwitchers; }
238
239 // voting
240 void StartVote(const char *pDesc, const char *pCommand, const char *pReason, const char *pSixupDesc);
241 void EndVote();
242 void SendVoteSet(int ClientId);
243 void SendVoteStatus(int ClientId, int Total, int Yes, int No);
244 void AbortVoteKickOnDisconnect(int ClientId);
245
257 char m_aaZoneEnterMsg[TuneZone::NUM][256]; // 0 is used for switching from or to area without tunings
259
260 void CreateAllEntities(bool Initial);
261 CPlayer *CreatePlayer(int ClientId, int StartTeam, bool Afk, int LastWhisperTo);
262
264 void DeleteTempfile();
265
266 enum
267 {
275 };
279
280 // helper functions
281 void CreateDamageInd(vec2 Pos, float AngleMod, int Amount, CClientMask Mask = CClientMask().set());
282 void CreateExplosion(vec2 Pos, int Owner, int Weapon, bool NoDamage, int ActivatedTeam, CClientMask Mask = CClientMask().set());
283 void CreateHammerHit(vec2 Pos, CClientMask Mask = CClientMask().set());
284 void CreatePlayerSpawn(vec2 Pos, CClientMask Mask = CClientMask().set());
285 void CreateDeath(vec2 Pos, int ClientId, CClientMask Mask = CClientMask().set());
286 void CreateBirthdayEffect(vec2 Pos, CClientMask Mask = CClientMask().set());
287 void CreateFinishEffect(vec2 Pos, CClientMask Mask = CClientMask().set());
288 void CreateSound(vec2 Pos, int Sound, CClientMask Mask = CClientMask().set());
289 void CreateSoundGlobal(int Sound, int Target = -1) const;
290
291 void SnapSwitchers(int SnappingClient);
292 bool SnapLaserObject(const CSnapContext &Context, int SnapId, const vec2 &To, const vec2 &From, int StartTick, int Owner = -1, int LaserType = -1, int Subtype = -1, int SwitchNumber = -1) const;
293 bool SnapPickup(const CSnapContext &Context, int SnapId, const vec2 &Pos, int Type, int SubType, int SwitchNumber, int Flags) const;
294
295 enum
296 {
297 FLAG_SIX = 1 << 0,
298 FLAG_SIXUP = 1 << 1,
299 };
300
301 // network
302 void CallVote(int ClientId, const char *pDesc, const char *pCmd, const char *pReason, const char *pChatmsg, const char *pSixupDesc = nullptr);
303 void SendChatTarget(int To, const char *pText, int VersionFlags = FLAG_SIX | FLAG_SIXUP) const;
304 void SendChatTeam(int Team, const char *pText) const;
305 void SendChat(int ClientId, int Team, const char *pText, int SpamProtectionClientId = -1, int VersionFlags = FLAG_SIX | FLAG_SIXUP);
306 void SendStartWarning(int ClientId, const char *pMessage);
307 void SendEmoticon(int ClientId, int Emoticon, int TargetClientId) const;
308 void SendWeaponPickup(int ClientId, int Weapon) const;
309 void SendMotd(int ClientId) const;
310 void SendSettings(int ClientId) const;
311 void SendServerAlert(const char *pMessage);
312 void SendModeratorAlert(const char *pMessage, int ToClientId);
313 void SendBroadcast(const char *pText, int ClientId, bool IsImportant = true);
314 void SendSkinChange7(int ClientId);
315
316 void List(int ClientId, const char *pFilter);
317
318 //
319 void CheckPureTuning();
320 void SendTuningParams(int ClientId, int Zone = 0);
321
322 const CVoteOptionServer *GetVoteOption(int Index) const;
323 void ProgressVoteOptions(int ClientId);
324
325 //
326 void LoadMapSettings();
327
328 // engine events
329 void OnInit(const void *pPersistentData) override;
330 void OnConsoleInit() override;
333 [[nodiscard]] bool OnMapChange(char *pNewMapName, int MapNameSize) override;
334 void OnShutdown(void *pPersistentData) override;
335
336 void OnTick() override;
337 void OnSnap(int ClientId, bool GlobalSnap, bool RecordingDemo) override;
338 void OnPostGlobalSnap() override;
339
340 void UpdatePlayerMaps();
341
342 void *PreProcessMsg(int *pMsgId, CUnpacker *pUnpacker, int ClientId);
343 void CensorMessage(char *pCensoredMessage, const char *pMessage, int Size);
344 void OnMessage(int MsgId, CUnpacker *pUnpacker, int ClientId) override;
345 void OnSayNetMessage(const CNetMsg_Cl_Say *pMsg, int ClientId, const CUnpacker *pUnpacker);
346 void OnCallVoteNetMessage(const CNetMsg_Cl_CallVote *pMsg, int ClientId);
347 void OnVoteNetMessage(const CNetMsg_Cl_Vote *pMsg, int ClientId);
348 void OnSetTeamNetMessage(const CNetMsg_Cl_SetTeam *pMsg, int ClientId);
349 void OnIsDDNetLegacyNetMessage(const CNetMsg_Cl_IsDDNetLegacy *pMsg, int ClientId, CUnpacker *pUnpacker);
350 void OnShowOthersLegacyNetMessage(const CNetMsg_Cl_ShowOthersLegacy *pMsg, int ClientId);
351 void OnShowOthersNetMessage(const CNetMsg_Cl_ShowOthers *pMsg, int ClientId);
352 void OnShowDistanceNetMessage(const CNetMsg_Cl_ShowDistance *pMsg, int ClientId);
353 void OnCameraInfoNetMessage(const CNetMsg_Cl_CameraInfo *pMsg, int ClientId);
354 void OnSetSpectatorModeNetMessage(const CNetMsg_Cl_SetSpectatorMode *pMsg, int ClientId);
355 void OnChangeInfoNetMessage(const CNetMsg_Cl_ChangeInfo *pMsg, int ClientId);
356 void OnEmoticonNetMessage(const CNetMsg_Cl_Emoticon *pMsg, int ClientId);
357 void OnKillNetMessage(const CNetMsg_Cl_Kill *pMsg, int ClientId);
359 void OnStartInfoNetMessage(const CNetMsg_Cl_StartInfo *pMsg, int ClientId);
360
361 bool OnClientDataPersist(int ClientId, void *pData) override;
362 void OnClientConnected(int ClientId, void *pData) override;
363 void OnClientEnter(int ClientId) override;
364 void OnClientDrop(int ClientId, const char *pReason) override;
365 void OnClientPrepareInput(int ClientId, void *pInput) override;
366 void OnClientDirectInput(int ClientId, const void *pInput) override;
367 void OnClientPredictedInput(int ClientId, const void *pInput) override;
368 void OnClientPredictedEarlyInput(int ClientId, const void *pInput) override;
369
370 void PreInputClients(int ClientId, bool *pClients) override;
371
372 void TeehistorianRecordAntibot(const void *pData, int DataSize) override;
373 void TeehistorianRecordPlayerJoin(int ClientId, bool Sixup) override;
374 void TeehistorianRecordPlayerDrop(int ClientId, const char *pReason) override;
375 void TeehistorianRecordPlayerRejoin(int ClientId) override;
376 void TeehistorianRecordPlayerName(int ClientId, const char *pName) override;
377 void TeehistorianRecordPlayerFinish(int ClientId, int TimeTicks) override;
378 void TeehistorianRecordTeamFinish(int TeamId, int TimeTicks) override;
379 void TeehistorianRecordAuthLogin(int ClientId, int Level, const char *pAuthName) override;
380
381 bool IsClientReady(int ClientId) const override;
382 bool IsClientPlayer(int ClientId) const override;
383 // Whether the client is allowed to have high bandwidth.
384 bool IsClientHighBandwidth(int ClientId) const override;
385 int PersistentDataSize() const override { return sizeof(CPersistentData); }
386 int PersistentClientDataSize() const override { return sizeof(CPersistentClientData); }
387
388 CUuid GameUuid() const override;
389 const char *GameType() const override;
390 const char *Version() const override;
391 const char *NetVersion() const override;
392
393 // DDRace
394 void OnPreTickTeehistorian() override;
395 bool OnClientDDNetVersionKnown(int ClientId);
396 void FillAntibot(CAntibotRoundData *pData) override;
397 bool ProcessSpamProtection(int ClientId, bool RespectChatInitialDelay = true);
398 int GetDDRaceTeam(int ClientId) const;
399 // Describes the time when the first player joined the server.
402 int GetClientVersion(int ClientId) const;
404 bool PlayerExists(int ClientId) const override { return m_apPlayers[ClientId]; }
405 // Returns true if someone is actively moderating.
406 bool PlayerModerating() const;
407 void ForceVote(bool Success);
408
409 // Checks if player can vote and notify them about the reason
410 bool RateLimitPlayerVote(int ClientId);
411 bool RateLimitPlayerMapVote(int ClientId) const;
412
413 void OnUpdatePlayerServerInfo(CJsonWriter *pJsonWriter, int ClientId) override;
414 void ReadCensorList();
415
416 bool PracticeByDefault() const;
417
418 std::shared_ptr<CScoreRandomMapResult> m_SqlRandomMapResult;
419
420 // cached map info from database
421 std::shared_ptr<CScorePlayerResult> m_pLoadMapInfoResult;
423
424private:
425 // starting 1 to make 0 the special value "no client id"
429
430 // DDRace Console Commands
431
432 static void ConKillPlayer(IConsole::IResult *pResult, void *pUserData);
433
434 static void ConNinja(IConsole::IResult *pResult, void *pUserData);
435 static void ConUnNinja(IConsole::IResult *pResult, void *pUserData);
436 static void ConEndlessHook(IConsole::IResult *pResult, void *pUserData);
437 static void ConUnEndlessHook(IConsole::IResult *pResult, void *pUserData);
438 static void ConSolo(IConsole::IResult *pResult, void *pUserData);
439 static void ConUnSolo(IConsole::IResult *pResult, void *pUserData);
440 static void ConFreeze(IConsole::IResult *pResult, void *pUserData);
441 static void ConUnfreeze(IConsole::IResult *pResult, void *pUserData);
442 static void ConDeep(IConsole::IResult *pResult, void *pUserData);
443 static void ConUnDeep(IConsole::IResult *pResult, void *pUserData);
444 static void ConLiveFreeze(IConsole::IResult *pResult, void *pUserData);
445 static void ConUnLiveFreeze(IConsole::IResult *pResult, void *pUserData);
446 static void ConUnSuper(IConsole::IResult *pResult, void *pUserData);
447 static void ConSuper(IConsole::IResult *pResult, void *pUserData);
448 static void ConToggleInvincible(IConsole::IResult *pResult, void *pUserData);
449 static void ConShotgun(IConsole::IResult *pResult, void *pUserData);
450 static void ConGrenade(IConsole::IResult *pResult, void *pUserData);
451 static void ConLaser(IConsole::IResult *pResult, void *pUserData);
452 static void ConJetpack(IConsole::IResult *pResult, void *pUserData);
453 static void ConEndlessJump(IConsole::IResult *pResult, void *pUserData);
454 static void ConSetJumps(IConsole::IResult *pResult, void *pUserData);
455 static void ConWeapons(IConsole::IResult *pResult, void *pUserData);
456 static void ConUnShotgun(IConsole::IResult *pResult, void *pUserData);
457 static void ConUnGrenade(IConsole::IResult *pResult, void *pUserData);
458 static void ConUnLaser(IConsole::IResult *pResult, void *pUserData);
459 static void ConUnJetpack(IConsole::IResult *pResult, void *pUserData);
460 static void ConUnEndlessJump(IConsole::IResult *pResult, void *pUserData);
461 static void ConSetSwitch(IConsole::IResult *pResult, void *pUserData);
462 static void ConUnWeapons(IConsole::IResult *pResult, void *pUserData);
463 static void ConAddWeapon(IConsole::IResult *pResult, void *pUserData);
464 static void ConRemoveWeapon(IConsole::IResult *pResult, void *pUserData);
465 void ModifyWeapons(IConsole::IResult *pResult, void *pUserData, int Weapon, bool Remove);
466 void MoveCharacter(int ClientId, int X, int Y, bool Raw = false);
467 static void ConGoLeft(IConsole::IResult *pResult, void *pUserData);
468 static void ConGoRight(IConsole::IResult *pResult, void *pUserData);
469 static void ConGoUp(IConsole::IResult *pResult, void *pUserData);
470 static void ConGoDown(IConsole::IResult *pResult, void *pUserData);
471 static void ConMove(IConsole::IResult *pResult, void *pUserData);
472 static void ConMoveRaw(IConsole::IResult *pResult, void *pUserData);
473
474 static void ConToTeleporter(IConsole::IResult *pResult, void *pUserData);
475 static void ConToCheckTeleporter(IConsole::IResult *pResult, void *pUserData);
476 void Teleport(CCharacter *pChr, vec2 Pos);
477 static void ConTeleport(IConsole::IResult *pResult, void *pUserData);
478
479 static void ConCredits(IConsole::IResult *pResult, void *pUserData);
480 static void ConInfo(IConsole::IResult *pResult, void *pUserData);
481 static void ConHelp(IConsole::IResult *pResult, void *pUserData);
482 static void ConSettings(IConsole::IResult *pResult, void *pUserData);
483 static void ConRules(IConsole::IResult *pResult, void *pUserData);
484 static void ConKill(IConsole::IResult *pResult, void *pUserData);
485 static void ConTogglePause(IConsole::IResult *pResult, void *pUserData);
486 static void ConTogglePauseVoted(IConsole::IResult *pResult, void *pUserData);
487 static void ConToggleSpec(IConsole::IResult *pResult, void *pUserData);
488 static void ConToggleSpecVoted(IConsole::IResult *pResult, void *pUserData);
489 static void ConForcePause(IConsole::IResult *pResult, void *pUserData);
490 static void ConTeamTop5(IConsole::IResult *pResult, void *pUserData);
491 static void ConTop(IConsole::IResult *pResult, void *pUserData);
492 static void ConTimes(IConsole::IResult *pResult, void *pUserData);
493 static void ConPoints(IConsole::IResult *pResult, void *pUserData);
494 static void ConTopPoints(IConsole::IResult *pResult, void *pUserData);
495 static void ConTimeCP(IConsole::IResult *pResult, void *pUserData);
496
497 static void ConDND(IConsole::IResult *pResult, void *pUserData);
498 static void ConWhispers(IConsole::IResult *pResult, void *pUserData);
499 static void ConMapInfo(IConsole::IResult *pResult, void *pUserData);
500 static void ConTimeout(IConsole::IResult *pResult, void *pUserData);
501 static void ConPractice(IConsole::IResult *pResult, void *pUserData);
502 static void ConUnPractice(IConsole::IResult *pResult, void *pUserData);
503 static void ConPracticeCmdList(IConsole::IResult *pResult, void *pUserData);
504 static void ConSwap(IConsole::IResult *pResult, void *pUserData);
505 static void ConCancelSwap(IConsole::IResult *pResult, void *pUserData);
506 static void ConSave(IConsole::IResult *pResult, void *pUserData);
507 static void ConLoad(IConsole::IResult *pResult, void *pUserData);
508 static void ConMap(IConsole::IResult *pResult, void *pUserData);
509 static void ConTeamRank(IConsole::IResult *pResult, void *pUserData);
510 static void ConRank(IConsole::IResult *pResult, void *pUserData);
511 static void ConTeam(IConsole::IResult *pResult, void *pUserData);
512 static void ConLock(IConsole::IResult *pResult, void *pUserData);
513 static void ConUnlock(IConsole::IResult *pResult, void *pUserData);
514 static void ConInvite(IConsole::IResult *pResult, void *pUserData);
515 static void ConJoin(IConsole::IResult *pResult, void *pUserData);
516 static void ConTeam0Mode(IConsole::IResult *pResult, void *pUserData);
517 static void ConWhisper(IConsole::IResult *pResult, void *pUserData);
518 static void ConConverse(IConsole::IResult *pResult, void *pUserData);
519 static void ConSetEyeEmote(IConsole::IResult *pResult, void *pUserData);
520 static void ConEyeEmote(IConsole::IResult *pResult, void *pUserData);
521 static void ConShowOthers(IConsole::IResult *pResult, void *pUserData);
522 static void ConShowAll(IConsole::IResult *pResult, void *pUserData);
523 static void ConSpecTeam(IConsole::IResult *pResult, void *pUserData);
524 static void ConNinjaJetpack(IConsole::IResult *pResult, void *pUserData);
525 static void ConSayTime(IConsole::IResult *pResult, void *pUserData);
526 static void ConSayTimeAll(IConsole::IResult *pResult, void *pUserData);
527 static void ConTime(IConsole::IResult *pResult, void *pUserData);
528 static void ConSetTimerType(IConsole::IResult *pResult, void *pUserData);
529 static void ConRescue(IConsole::IResult *pResult, void *pUserData);
530 static void ConRescueMode(IConsole::IResult *pResult, void *pUserData);
531 static void ConBack(IConsole::IResult *pResult, void *pUserData);
532 static void ConTeleTo(IConsole::IResult *pResult, void *pUserData);
533 static void ConTeleXY(IConsole::IResult *pResult, void *pUserData);
534 static void ConTeleCursor(IConsole::IResult *pResult, void *pUserData);
535 static void ConLastTele(IConsole::IResult *pResult, void *pUserData);
536
537 // Chat commands for practice mode
538 static void ConPracticeToTeleporter(IConsole::IResult *pResult, void *pUserData);
539 static void ConPracticeToCheckTeleporter(IConsole::IResult *pResult, void *pUserData);
540 static void ConPracticeUnSolo(IConsole::IResult *pResult, void *pUserData);
541 static void ConPracticeSolo(IConsole::IResult *pResult, void *pUserData);
542 static void ConPracticeUnDeep(IConsole::IResult *pResult, void *pUserData);
543 static void ConPracticeDeep(IConsole::IResult *pResult, void *pUserData);
544 static void ConPracticeUnLiveFreeze(IConsole::IResult *pResult, void *pUserData);
545 static void ConPracticeLiveFreeze(IConsole::IResult *pResult, void *pUserData);
546 static void ConPracticeShotgun(IConsole::IResult *pResult, void *pUserData);
547 static void ConPracticeGrenade(IConsole::IResult *pResult, void *pUserData);
548 static void ConPracticeLaser(IConsole::IResult *pResult, void *pUserData);
549 static void ConPracticeJetpack(IConsole::IResult *pResult, void *pUserData);
550 static void ConPracticeEndlessJump(IConsole::IResult *pResult, void *pUserData);
551 static void ConPracticeSetJumps(IConsole::IResult *pResult, void *pUserData);
552 static void ConPracticeWeapons(IConsole::IResult *pResult, void *pUserData);
553 static void ConPracticeUnShotgun(IConsole::IResult *pResult, void *pUserData);
554 static void ConPracticeUnGrenade(IConsole::IResult *pResult, void *pUserData);
555 static void ConPracticeUnLaser(IConsole::IResult *pResult, void *pUserData);
556 static void ConPracticeUnJetpack(IConsole::IResult *pResult, void *pUserData);
557 static void ConPracticeUnEndlessJump(IConsole::IResult *pResult, void *pUserData);
558 static void ConPracticeUnWeapons(IConsole::IResult *pResult, void *pUserData);
559 static void ConPracticeNinja(IConsole::IResult *pResult, void *pUserData);
560 static void ConPracticeUnNinja(IConsole::IResult *pResult, void *pUserData);
561 static void ConPracticeEndlessHook(IConsole::IResult *pResult, void *pUserData);
562 static void ConPracticeUnEndlessHook(IConsole::IResult *pResult, void *pUserData);
563 static void ConPracticeSetSwitch(IConsole::IResult *pResult, void *pUserData);
564 static void ConPracticeToggleInvincible(IConsole::IResult *pResult, void *pUserData);
565 static void ConPracticeToggleCollision(IConsole::IResult *pResult, void *pUserData);
566 static void ConPracticeToggleHookCollision(IConsole::IResult *pResult, void *pUserData);
567 static void ConPracticeToggleHitOthers(IConsole::IResult *pResult, void *pUserData);
568
569 static void ConPracticeAddWeapon(IConsole::IResult *pResult, void *pUserData);
570 static void ConPracticeRemoveWeapon(IConsole::IResult *pResult, void *pUserData);
571
572 static void ConProtectedKill(IConsole::IResult *pResult, void *pUserData);
573 static void ConModerate(IConsole::IResult *pResult, void *pUserData);
574
575 static void ConList(IConsole::IResult *pResult, void *pUserData);
576 static void ConSetDDRTeam(IConsole::IResult *pResult, void *pUserData);
577 static void ConUninvite(IConsole::IResult *pResult, void *pUserData);
578
579 static void ConReloadCensorlist(IConsole::IResult *pResult, void *pUserData);
580
582
585 void MuteWithMessage(const NETADDR *pAddr, int Seconds, const char *pReason, const char *pDisplayName);
586 void VoteMuteWithMessage(const NETADDR *pAddr, int Seconds, const char *pReason, const char *pDisplayName);
587
588 static void ConMute(IConsole::IResult *pResult, void *pUserData);
589 static void ConMuteId(IConsole::IResult *pResult, void *pUserData);
590 static void ConMuteIp(IConsole::IResult *pResult, void *pUserData);
591 static void ConUnmute(IConsole::IResult *pResult, void *pUserData);
592 static void ConUnmuteId(IConsole::IResult *pResult, void *pUserData);
593 static void ConUnmuteIp(IConsole::IResult *pResult, void *pUserData);
594 static void ConMutes(IConsole::IResult *pResult, void *pUserData);
595
596 static void ConVoteMute(IConsole::IResult *pResult, void *pUserData);
597 static void ConVoteMuteId(IConsole::IResult *pResult, void *pUserData);
598 static void ConVoteMuteIp(IConsole::IResult *pResult, void *pUserData);
599 static void ConVoteUnmute(IConsole::IResult *pResult, void *pUserData);
600 static void ConVoteUnmuteId(IConsole::IResult *pResult, void *pUserData);
601 static void ConVoteUnmuteIp(IConsole::IResult *pResult, void *pUserData);
602 static void ConVoteMutes(IConsole::IResult *pResult, void *pUserData);
603
604 void Whisper(int ClientId, char *pStr);
605 void WhisperId(int ClientId, int VictimId, const char *pMessage);
606 void Converse(int ClientId, char *pStr);
607 bool IsVersionBanned(int Version);
608 void UnlockTeam(int ClientId, int Team) const;
609 void AttemptJoinTeam(int ClientId, int Team);
610
611 enum
612 {
614 MAX_LOGS = 512,
615 };
627
628 void LogEvent(const char *Description, int ClientId);
629
630public:
631 CLayers *Layers() { return &m_Layers; }
632 CScore *Score() { return m_pScore; }
633
634 enum
635 {
640 };
642
643 bool IsOptionVote() const { return m_VoteType == VOTE_TYPE_OPTION; }
644 bool IsKickVote() const { return m_VoteType == VOTE_TYPE_KICK; }
645 bool IsSpecVote() const { return m_VoteType == VOTE_TYPE_SPECTATE; }
646
647 bool IsRunningVote(int ClientId) const;
648 bool IsRunningKickOrSpecVote(int ClientId) const;
649
650 void SendRecord(int ClientId);
651 void SendFinish(int ClientId, float Time, std::optional<float> PreviousBestTime);
652 void SendSaveCode(int Team, int TeamSize, int State, const char *pError, const char *pSaveRequester, const char *pServerName, const char *pGeneratedCode, const char *pCode);
653 void OnSetAuthed(int ClientId, int Level) override;
654
655 void ResetTuning();
656};
657
658static inline bool CheckClientId(int ClientId)
659{
660 return ClientId >= 0 && ClientId < MAX_CLIENTS;
661}
662
663#endif
Definition character.h:24
Definition collision.h:35
Definition config.h:30
Definition eventhandler.h:11
static void ConAntibot(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:626
void MuteWithMessage(const NETADDR *pAddr, int Seconds, const char *pReason, const char *pDisplayName)
Definition mutes.cpp:200
static void ConUnNinja(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:114
static void ConLaser(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:274
void CreatePlayerSpawn(vec2 Pos, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:362
static void ConTuneZone(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3158
void CreateFinishEffect(vec2 Pos, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:393
static void ConDumpLog(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:632
CGameContext(bool Resetting=false)
Definition gamecontext.cpp:76
CCharacter * GetPlayerChar(int ClientId)
Definition gamecontext.cpp:207
static void ConGoRight(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:26
static void ConRules(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:214
static void ConMutes(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:309
void OnClientDrop(int ClientId, const char *pReason) override
Definition gamecontext.cpp:1864
static void ConMap(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:509
void OnStartInfoNetMessage(const CNetMsg_Cl_StartInfo *pMsg, int ClientId)
Definition gamecontext.cpp:3012
static void ConPracticeGrenade(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2176
static void ConSetJumps(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:296
CTeeHistorian m_TeeHistorian
Definition gamecontext.h:129
void OnTick() override
Definition gamecontext.cpp:1100
void OnCameraInfoNetMessage(const CNetMsg_Cl_CameraInfo *pMsg, int ClientId)
Definition gamecontext.cpp:2766
static void ConVoteUnmuteId(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:359
CHeap * m_pVoteOptionHeap
Definition gamecontext.h:276
static void ConTogglePause(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:351
void TeehistorianRecordPlayerJoin(int ClientId, bool Sixup) override
Definition gamecontext.cpp:1921
void LogEvent(const char *Description, int ClientId)
Definition ddracecommands.cpp:665
void ForceVote(bool Success)
Definition gamecontext.cpp:5287
static void ConTimeCP(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2420
void SendChatTarget(int To, const char *pText, int VersionFlags=FLAG_SIX|FLAG_SIXUP) const
Definition gamecontext.cpp:599
static void ConTeam(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1293
static void ConPracticeUnGrenade(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2225
static void ConEyeEmote(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1404
IConsole * m_pConsole
Definition gamecontext.h:116
static void ConForcePause(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:506
void AttemptJoinTeam(int ClientId, int Team)
Definition ddracechat.cpp:1079
void Teleport(CCharacter *pChr, vec2 Pos)
Definition ddracecommands.cpp:417
static void ConUnmuteId(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:281
static void ConGrenade(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:268
int64_t m_VoteCloseTime
Definition gamecontext.h:248
static void ConToggleInvincible(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:169
void DeleteTempfile()
Definition gamecontext.cpp:4414
static void ConMove(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:56
bool PracticeByDefault() const
Definition gamecontext.cpp:5462
static void ConchainSpecialMotdupdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition gamecontext.cpp:3828
@ MAX_LOG_SECONDS
Definition gamecontext.h:613
@ MAX_LOGS
Definition gamecontext.h:614
static void ConPause(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3290
static void ConGoLeft(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:16
static void ConNinjaJetpack(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1459
static void ConVoteUnmuteIp(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:373
static void ConSetEyeEmote(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1376
IAntibot * Antibot()
Definition gamecontext.h:206
IStorage * m_pStorage
Definition gamecontext.h:118
void PreInputClients(int ClientId, bool *pClients) override
Definition gamecontext.cpp:1421
void SendMotd(int ClientId) const
Definition gamecontext.cpp:745
void OnClientPredictedInput(int ClientId, const void *pInput) override
Definition gamecontext.cpp:1478
CScore * m_pScore
Definition gamecontext.h:428
static void ConWhispers(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:495
static void ConUnEndlessJump(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:336
CPlayer * CreatePlayer(int ClientId, int StartTeam, bool Afk, int LastWhisperTo)
Definition gamecontext.cpp:4403
bool IsRunningVote(int ClientId) const
Definition gamecontext.cpp:4784
void OnSayNetMessage(const CNetMsg_Cl_Say *pMsg, int ClientId, const CUnpacker *pUnpacker)
Definition gamecontext.cpp:2262
std::shared_ptr< CScorePlayerResult > m_pLoadMapInfoResult
Definition gamecontext.h:421
static void ConPracticeWeapons(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2211
void OnIsDDNetLegacyNetMessage(const CNetMsg_Cl_IsDDNetLegacy *pMsg, int ClientId, CUnpacker *pUnpacker)
Definition gamecontext.cpp:2726
void SendTuningParams(int ClientId, int Zone=0)
Definition gamecontext.cpp:1010
static void ConPracticeToTeleporter(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2032
void OnSnap(int ClientId, bool GlobalSnap, bool RecordingDemo) override
Definition gamecontext.cpp:4623
static void ConDumpAntibot(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:620
bool IsVersionBanned(int Version)
Definition gamecontext.cpp:5216
CVoteOptionServer * m_pVoteOptionLast
Definition gamecontext.h:278
bool IsKickVote() const
Definition gamecontext.h:644
int64_t m_LastMapVote
Definition gamecontext.h:401
CNetObj_PlayerInput m_aLastPlayerInput[MAX_CLIENTS]
Definition gamecontext.h:220
static void ConPracticeEndlessJump(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2197
static void ConPracticeJetpack(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2190
static void ConPracticeLiveFreeze(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2159
void ModifyWeapons(IConsole::IResult *pResult, void *pUserData, int Weapon, bool Remove)
Definition ddracecommands.cpp:388
CLayers m_Layers
Definition gamecontext.h:121
static void ConUnmuteIp(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:295
void CreateDamageInd(vec2 Pos, float AngleMod, int Amount, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:276
CGameWorld m_World
Definition gamecontext.h:231
static void ConUninvite(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:571
void OnSetTeamNetMessage(const CNetMsg_Cl_SetTeam *pMsg, int ClientId)
Definition gamecontext.cpp:2677
char m_aVoteCommand[VOTE_CMD_LENGTH]
Definition gamecontext.h:253
static void ConPracticeUnEndlessHook(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2281
bool m_aPlayerHasInput[MAX_CLIENTS]
Definition gamecontext.h:221
static void ConPracticeSetJumps(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2204
static void ConDrySave(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:586
void RegisterDDRaceCommands()
Definition gamecontext.cpp:3936
void OnClientPredictedEarlyInput(int ClientId, const void *pInput) override
Definition gamecontext.cpp:1497
CNetObjHandler * GetNetObjHandler() override
Definition gamecontext.h:209
CCollision * Collision()
Definition gamecontext.h:203
static void ConToggleSpecVoted(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:346
static void ConMuteId(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:243
static void ConUnWeapons(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:370
void SendWeaponPickup(int ClientId, int Weapon) const
Definition gamecontext.cpp:738
static void ConUnJetpack(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:328
bool OnMapChange(char *pNewMapName, int MapNameSize) override
Definition gamecontext.cpp:4423
CEventHandler m_Events
Definition gamecontext.h:217
void OnInit(const void *pPersistentData) override
Definition gamecontext.cpp:4119
static void ConDND(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:481
void ResetTuning()
Definition gamecontext.cpp:5005
CTuningParams m_aTuningList[TuneZone::NUM]
Definition gamecontext.h:125
static void ConLoad(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:948
void ReadCensorList()
Definition gamecontext.cpp:5444
void CensorMessage(char *pCensoredMessage, const char *pMessage, int Size)
Definition gamecontext.cpp:2170
static void ConVotes(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3796
bool OnClientDDNetVersionKnown(int ClientId)
Definition gamecontext.cpp:1977
static void ConGoDown(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:36
void TeehistorianRecordPlayerRejoin(int ClientId) override
Definition gamecontext.cpp:1937
static void ConJoin(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1336
static void ConPracticeSolo(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2100
static void ConUnfreeze(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:209
CClientMask ClientsMaskExcludeClientVersionAndHigher(int Version) const
Definition gamecontext.cpp:5270
void CreateDeath(vec2 Pos, int ClientId, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:372
void OnKillNetMessage(const CNetMsg_Cl_Kill *pMsg, int ClientId)
Definition gamecontext.cpp:2970
const IMap * Map() const override
Definition gamecontext.h:202
void OnMessage(int MsgId, CUnpacker *pUnpacker, int ClientId) override
Definition gamecontext.cpp:2192
IServer * m_pServer
Definition gamecontext.h:113
static void ConPracticeDeep(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2139
void UpdatePlayerMaps()
Definition gamecontext.cpp:4668
@ VOTE_ENFORCE_NO
Definition gamecontext.h:269
@ VOTE_ENFORCE_NO_ADMIN
Definition gamecontext.h:271
@ VOTE_ENFORCE_YES_ADMIN
Definition gamecontext.h:272
@ VOTE_ENFORCE_UNKNOWN
Definition gamecontext.h:268
@ VOTE_ENFORCE_CANCEL
Definition gamecontext.h:274
@ VOTE_ENFORCE_ABORT
Definition gamecontext.h:273
@ VOTE_ENFORCE_YES
Definition gamecontext.h:270
CLog m_aLogs[MAX_LOGS]
Definition gamecontext.h:625
static void ConPracticeLaser(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2183
static void ConPracticeToCheckTeleporter(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2052
CUuid GameUuid() const override
Definition gamecontext.cpp:4746
void SendSkinChange7(int ClientId)
Definition gamecontext.cpp:850
static void ConConverse(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1366
static void ConMapInfo(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:537
static void ConToTeleporter(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:425
static void ConWeapons(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:304
static void ConHotReload(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3449
static void ConClearVotes(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3680
void SendRecord(int ClientId)
Definition gamecontext.cpp:4794
static void ConUnGrenade(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:316
static void ConPracticeUnSolo(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2072
char m_aaZoneEnterMsg[TuneZone::NUM][256]
Definition gamecontext.h:257
static void ConUnLaser(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:322
void OnPreTickTeehistorian() override
Definition gamecontext.cpp:1082
static void ConTeam0Mode(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1220
static void ConPracticeRemoveWeapon(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2357
void MoveCharacter(int ClientId, int X, int Y, bool Raw=false)
Definition ddracecommands.cpp:74
bool IsSpecVote() const
Definition gamecontext.h:645
static void ConTunes(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3145
static void ConWhisper(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1371
@ VOTE_TYPE_SPECTATE
Definition gamecontext.h:639
@ VOTE_TYPE_KICK
Definition gamecontext.h:638
@ VOTE_TYPE_UNKNOWN
Definition gamecontext.h:636
@ VOTE_TYPE_OPTION
Definition gamecontext.h:637
bool m_Resetting
Definition gamecontext.h:135
static void ConCancelSwap(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:885
void SendChat(int ClientId, int Team, const char *pText, int SpamProtectionClientId=-1, int VersionFlags=FLAG_SIX|FLAG_SIXUP)
Definition gamecontext.cpp:637
static void ConUnDeep(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:229
static void ConPracticeUnNinja(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2267
static void ConPracticeToggleCollision(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2302
static void ConSetTimerType(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1628
void OnConsoleInit() override
Definition gamecontext.cpp:3881
void OnClientPrepareInput(int ClientId, void *pInput) override
Definition gamecontext.cpp:1456
static void ConReloadCensorlist(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:614
void * PreProcessMsg(int *pMsgId, CUnpacker *pUnpacker, int ClientId)
Definition gamecontext.cpp:2027
static void ConRank(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:984
void ProgressVoteOptions(int ClientId)
Definition gamecontext.cpp:1543
static void ConModAlert(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3369
static void ConRemoveWeapon(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:382
static void ConBroadcast(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3387
static void ConPracticeNinja(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2260
int GetDDRaceTeam(int ClientId) const
Definition gamecontext.cpp:5000
void VoteMuteWithMessage(const NETADDR *pAddr, int Seconds, const char *pReason, const char *pDisplayName)
Definition mutes.cpp:219
void OnCallVoteNetMessage(const CNetMsg_Cl_CallVote *pMsg, int ClientId)
Definition gamecontext.cpp:2367
void TeehistorianRecordPlayerDrop(int ClientId, const char *pReason) override
Definition gamecontext.cpp:1929
static void ConRandomUnfinishedMap(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3317
void AddVote(const char *pDescription, const char *pCommand)
Definition gamecontext.cpp:3486
CUuid m_GameUuid
Definition gamecontext.h:131
static void ConVoteMuteIp(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:336
void OnEnableSpectatorCountNetMessage(const CNetMsg_Cl_EnableSpectatorCount *pMsg, int ClientId)
Definition gamecontext.cpp:3003
static void ConAddVote(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3477
static void ConTuneSetZoneMsgLeave(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3237
static void ConPracticeEndlessHook(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2274
~CGameContext() override
Definition gamecontext.cpp:137
void OnShowOthersLegacyNetMessage(const CNetMsg_Cl_ShowOthersLegacy *pMsg, int ClientId)
Definition gamecontext.cpp:2742
void TeehistorianRecordTeamFinish(int TeamId, int TimeTicks) override
Definition gamecontext.cpp:1961
static void ConPracticeShotgun(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2169
static void ConVoteMute(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:316
static void ConTimes(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:424
void SnapSwitchers(int SnappingClient)
Definition gamecontext.cpp:436
static void ConPracticeUnDeep(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2128
static void ConchainPracticeByDefaultUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition gamecontext.cpp:3848
static void ConSetTeam(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3404
bool RateLimitPlayerVote(int ClientId)
Definition gamecontext.cpp:5303
static void ConPracticeToggleHitOthers(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2322
void CreateExplosion(vec2 Pos, int Owner, int Weapon, bool NoDamage, int ActivatedTeam, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:304
void SendStartWarning(int ClientId, const char *pMessage)
Definition gamecontext.cpp:720
CNetObj_PlayerInput GetLastPlayerInput(int ClientId) const
Definition gamecontext.cpp:201
IEngine * Engine()
Definition gamecontext.h:199
uint32_t m_NextUniqueClientId
Definition gamecontext.h:426
ASYNCIO * m_pTeeHistorianFile
Definition gamecontext.h:130
CPlayer * m_apPlayers[MAX_CLIENTS]
Definition gamecontext.h:218
protocol7::CNetObjHandler * GetNetObjHandler7() override
Definition gamecontext.h:210
static void ConSpecTeam(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1522
static void ConLock(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1002
static void ConSwap(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:770
static void ConTuneParam(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3060
int PersistentDataSize() const override
Definition gamecontext.h:385
void CreateSoundGlobal(int Sound, int Target=-1) const
Definition gamecontext.cpp:418
const char * Version() const override
Definition gamecontext.cpp:4753
static void ConInfo(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:49
static void ConSetTeamAll(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3430
static void ConServerAlert(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3358
static void ConchainSettingUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition gamecontext.cpp:3838
static void ConUnlock(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1047
IConfigManager * m_pConfigManager
Definition gamecontext.h:114
static void ConPracticeCmdList(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:748
int m_VoteEnforce
Definition gamecontext.h:256
static void ConVote(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3786
CScore * Score()
Definition gamecontext.h:632
IServer * Server() const
Definition gamecontext.h:195
void TeehistorianRecordPlayerFinish(int ClientId, int TimeTicks) override
Definition gamecontext.cpp:1953
static void ConGoUp(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:46
void StartVote(const char *pDesc, const char *pCommand, const char *pReason, const char *pSixupDesc)
Definition gamecontext.cpp:868
void CreateAllEntities(bool Initial)
Definition gamecontext.cpp:4309
void LoadMapSettings()
Definition gamecontext.cpp:4587
static void ConSetDDRTeam(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:544
void SendVoteSet(int ClientId)
Definition gamecontext.cpp:897
static void ConTuneResetZone(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3198
void RegisterChatCommands()
Definition gamecontext.cpp:4012
void OnPostGlobalSnap() override
Definition gamecontext.cpp:4658
void Clear()
Definition gamecontext.cpp:160
const char * GameType() const override
Definition gamecontext.cpp:4747
static void ConVoteMutes(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:387
static void ConPracticeToggleHookCollision(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2312
int m_aTeamMapping[MAX_CLIENTS]
Definition gamecontext.h:224
bool ProcessSpamProtection(int ClientId, bool RespectChatInitialDelay=true)
Definition gamecontext.cpp:4960
CConfig * Config()
Definition gamecontext.h:197
CTuningParams * TuningList()
Definition gamecontext.h:205
static void ConPoints(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2384
CConfig * m_pConfig
Definition gamecontext.h:115
static void ConPracticeToggleInvincible(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2295
static void ConTeamTop5(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:361
static void ConNinja(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:108
void OnUpdatePlayerServerInfo(CJsonWriter *pJsonWriter, int ClientId) override
Definition gamecontext.cpp:5385
static void ConPracticeSetSwitch(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2288
void SendFinish(int ClientId, float Time, std::optional< float > PreviousBestTime)
Definition gamecontext.cpp:4810
CCollision m_Collision
Definition gamecontext.h:122
CMapBugs m_MapBugs
Definition gamecontext.h:132
static void ConJetpack(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:280
CCharacter * GetPracticeCharacter(IConsole::IResult *pResult)
Definition ddracechat.cpp:2011
bool IsOptionVote() const
Definition gamecontext.h:643
bool m_VoteUpdate
Definition gamecontext.h:249
static void ConTogglePauseVoted(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:356
void WhisperId(int ClientId, int VictimId, const char *pMessage)
Definition gamecontext.cpp:5126
void OnShowDistanceNetMessage(const CNetMsg_Cl_ShowDistance *pMsg, int ClientId)
Definition gamecontext.cpp:2760
static void ConBack(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1772
int PersistentClientDataSize() const override
Definition gamecontext.h:386
static void ConMuteIp(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:258
static void ConPracticeUnLaser(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2232
IConfigManager * ConfigManager() const
Definition gamecontext.h:196
char m_aSixupVoteDescription[VOTE_DESC_LENGTH]
Definition gamecontext.h:252
IAntibot * m_pAntibot
Definition gamecontext.h:119
static void ConAddWeapon(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:376
static void ConRestart(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3331
static void ConTuneSetZoneMsgEnter(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3224
void CreateSound(vec2 Pos, int Sound, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:403
void Converse(int ClientId, char *pStr)
Definition gamecontext.cpp:5199
static void ConSayTimeAll(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1581
char m_aVoteDescription[VOTE_DESC_LENGTH]
Definition gamecontext.h:251
const char * NetVersion() const override
Definition gamecontext.cpp:4754
static void ConToCheckTeleporter(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:441
std::vector< std::string > m_vCensorlist
Definition gamecontext.h:126
void SendVoteStatus(int ClientId, int Total, int Yes, int No)
Definition gamecontext.cpp:959
static void ConMute(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:238
CTuningParams * GlobalTuning()
Definition gamecontext.h:204
std::unique_ptr< IMap > m_pMap
Definition gamecontext.h:120
static void ConShowOthers(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1474
IMap * Map() override
Definition gamecontext.h:201
bool PlayerExists(int ClientId) const override
Definition gamecontext.h:404
void OnShowOthersNetMessage(const CNetMsg_Cl_ShowOthers *pMsg, int ClientId)
Definition gamecontext.cpp:2751
static void ConModerate(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:521
static void ConShowAll(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1494
void AbortVoteKickOnDisconnect(int ClientId)
Definition gamecontext.cpp:985
static void ConTeleXY(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1850
int64_t m_NonEmptySince
Definition gamecontext.h:400
static void ConSayTime(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1538
void OnClientConnected(int ClientId, void *pData) override
Definition gamecontext.cpp:1815
void OnClientDirectInput(int ClientId, const void *pInput) override
Definition gamecontext.cpp:1464
static void ConForceVote(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3612
static void ConEndlessHook(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:120
void SendServerAlert(const char *pMessage)
Definition gamecontext.cpp:764
static void ConVoteNo(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:579
CSaveHotReloadTee * m_apSavedTees[MAX_CLIENTS]
Definition gamecontext.h:223
static void ConVoteMuteId(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:321
static void ConRescueMode(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1715
protocol7::CNetObjHandler m_NetObjHandler7
Definition gamecontext.h:123
static void ConLastTele(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1983
static void ConKill(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:492
static void CommandCallback(int ClientId, int FlagMask, const char *pCmd, IConsole::IResult *pResult, void *pUser)
Definition gamecontext.cpp:192
IGameController * m_pController
Definition gamecontext.h:230
IConsole * Console()
Definition gamecontext.h:198
static void ConPracticeUnWeapons(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2253
std::shared_ptr< CScoreRandomMapResult > m_SqlRandomMapResult
Definition gamecontext.h:418
void SendModeratorAlert(const char *pMessage, int ToClientId)
Definition gamecontext.cpp:796
bool RateLimitPlayerMapVote(int ClientId) const
Definition gamecontext.cpp:5372
void OnClientEnter(int ClientId) override
Definition gamecontext.cpp:1629
static void ConInvite(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1157
static void ConUnSuper(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:157
CLayers * Layers()
Definition gamecontext.h:631
static int MapScan(const char *pName, int IsDir, int DirType, void *pUserData)
Definition gamecontext.cpp:3770
static void ConPracticeUnJetpack(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2239
static void ConLiveFreeze(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:242
void OnChangeInfoNetMessage(const CNetMsg_Cl_ChangeInfo *pMsg, int ClientId)
Definition gamecontext.cpp:2794
void TeehistorianRecordAuthLogin(int ClientId, int Level, const char *pAuthName) override
Definition gamecontext.cpp:1969
void CreateBirthdayEffect(vec2 Pos, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:383
void EndVote()
Definition gamecontext.cpp:891
void TeehistorianRecordPlayerName(int ClientId, const char *pName) override
Definition gamecontext.cpp:1945
int m_VotePos
Definition gamecontext.h:250
bool m_TeeHistorianActive
Definition gamecontext.h:128
static void ConToggleTuneParam(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3094
char m_aDeleteTempfile[128]
Definition gamecontext.h:263
void Whisper(int ClientId, char *pStr)
Definition gamecontext.cpp:5016
static void ConPracticeUnLiveFreeze(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2149
static void ConTopPoints(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2402
static void ConTeleTo(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1789
static void ConPractice(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:600
static void ConSuper(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:144
static void ConUnmute(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:274
static void ConTeamRank(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:966
int m_VoteType
Definition gamecontext.h:247
static void ConRandomMap(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3303
static void ConUnEndlessHook(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:132
IStorage * Storage()
Definition gamecontext.h:200
static void ConMapbug(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3250
static void ConShotgun(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:262
static void ConToggleSpec(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:324
static void ConSwitchOpen(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3276
static void ConDeep(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:219
int m_VoteVictim
Definition gamecontext.h:641
CPrng m_Prng
Definition gamecontext.h:133
CSaveTeam * m_apSavedTeams[MAX_CLIENTS]
Definition gamecontext.h:222
void OnVoteNetMessage(const CNetMsg_Cl_Vote *pMsg, int ClientId)
Definition gamecontext.cpp:2646
static void ConSay(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3398
IEngine * m_pEngine
Definition gamecontext.h:117
void CreateHammerHit(vec2 Pos, CClientMask Mask=CClientMask().set())
Definition gamecontext.cpp:294
void SendBroadcast(const char *pText, int ClientId, bool IsImportant=true)
Definition gamecontext.cpp:817
void List(int ClientId, const char *pFilter)
Definition gamecontext.cpp:5224
bool m_VoteWillPass
Definition gamecontext.h:427
int m_VoteCreator
Definition gamecontext.h:246
int m_NumVoteOptions
Definition gamecontext.h:255
void CheckPureTuning()
Definition gamecontext.cpp:992
void OnSetAuthed(int ClientId, int Level) override
Definition gamecontext.cpp:4758
static void ConTimeout(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:561
void TeehistorianRecordAntibot(const void *pData, int DataSize) override
Definition gamecontext.cpp:1913
static void ConPracticeUnShotgun(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2218
bool IsClientHighBandwidth(int ClientId) const override
Definition gamecontext.cpp:4739
void SendChatTeam(int Team, const char *pText) const
Definition gamecontext.cpp:630
static void ConTeleCursor(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1928
bool SnapLaserObject(const CSnapContext &Context, int SnapId, const vec2 &To, const vec2 &From, int StartTick, int Owner=-1, int LaserType=-1, int Subtype=-1, int SwitchNumber=-1) const
Definition gamecontext.cpp:490
bool IsRunningKickOrSpecVote(int ClientId) const
Definition gamecontext.cpp:4789
static void ConSave(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:929
void SendSettings(int ClientId) const
Definition gamecontext.cpp:752
const CVoteOptionServer * GetVoteOption(int Index) const
Definition gamecontext.cpp:1530
static void ConTeleport(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:458
static void ConSetSwitch(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:344
static void ConPracticeUnEndlessJump(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2246
void SendEmoticon(int ClientId, int Emoticon, int TargetClientId) const
Definition gamecontext.cpp:730
static void ConTuneDumpZone(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3181
int GetClientVersion(int ClientId) const
Definition gamecontext.cpp:5265
static void ConProtectedKill(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2364
static void ConKillPlayer(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:86
static void ConUnSolo(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:189
bool TeeHistorianActive() const
Definition gamecontext.h:208
void UnlockTeam(int ClientId, int Team) const
Definition ddracechat.cpp:1070
static void ConTop(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:406
static void ConTime(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1605
static void ConFreeze(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:199
static void ConEndlessJump(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:288
bool EmulateBug(int Bug) const
Definition gamecontext.cpp:221
void OnShutdown(void *pPersistentData) override
Definition gamecontext.cpp:4550
CMutes m_VoteMutes
Definition gamecontext.h:584
CNetObjHandler m_NetObjHandler
Definition gamecontext.h:124
static void ConVoteUnmute(IConsole::IResult *pResult, void *pUserData)
Definition mutes.cpp:352
static void ConTuneReset(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3118
static void ConMoveRaw(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:65
CTeeHistorian * TeeHistorian()
Definition gamecontext.h:207
static void ConChangeMap(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3297
bool OnClientDataPersist(int ClientId, void *pData) override
Definition gamecontext.cpp:1802
static void ConRemoveVote(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3543
static void ConCredits(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:19
static void ConList(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:63
char m_aVoteReason[VOTE_REASON_LENGTH]
Definition gamecontext.h:254
void CallVote(int ClientId, const char *pDesc, const char *pCmd, const char *pReason, const char *pChatmsg, const char *pSixupDesc=nullptr)
Definition gamecontext.cpp:573
int m_LatestLog
Definition gamecontext.h:626
static void ConSolo(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:179
static void ConAddMapVotes(IConsole::IResult *pResult, void *pUserData)
Definition gamecontext.cpp:3716
CMutes m_Mutes
Definition gamecontext.h:583
char m_aMapInfoMessage[512]
Definition gamecontext.h:422
static void ConRescue(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:1680
bool IsClientReady(int ClientId) const override
Definition gamecontext.cpp:4729
std::vector< SSwitchers > & Switchers()
Definition gamecontext.h:237
@ FLAG_SIXUP
Definition gamecontext.h:298
@ FLAG_SIX
Definition gamecontext.h:297
static void ConUnShotgun(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:310
static void ConHelp(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:76
CVoteOptionServer * m_pVoteOptionFirst
Definition gamecontext.h:277
static void ConUnLiveFreeze(IConsole::IResult *pResult, void *pUserData)
Definition ddracecommands.cpp:252
static void ConPracticeAddWeapon(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:2350
bool IsClientPlayer(int ClientId) const override
Definition gamecontext.cpp:4734
static void TeeHistorianWrite(const void *pData, int DataSize, void *pUser)
Definition gamecontext.cpp:186
bool PlayerModerating() const
Definition gamecontext.cpp:5282
void SendSaveCode(int Team, int TeamSize, int State, const char *pError, const char *pSaveRequester, const char *pServerName, const char *pGeneratedCode, const char *pCode)
Definition gamecontext.cpp:4854
static void ConUnPractice(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:682
void OnEmoticonNetMessage(const CNetMsg_Cl_Emoticon *pMsg, int ClientId)
Definition gamecontext.cpp:2891
void FillAntibot(CAntibotRoundData *pData) override
Definition gamecontext.cpp:226
char m_aaZoneLeaveMsg[TuneZone::NUM][256]
Definition gamecontext.h:258
bool SnapPickup(const CSnapContext &Context, int SnapId, const vec2 &Pos, int Type, int SubType, int SwitchNumber, int Flags) const
Definition gamecontext.cpp:525
static void ConSettings(IConsole::IResult *pResult, void *pUserData)
Definition ddracechat.cpp:112
void OnSetSpectatorModeNetMessage(const CNetMsg_Cl_SetSpectatorMode *pMsg, int ClientId)
Definition gamecontext.cpp:2772
Definition gameworld.h:18
Definition memheap.h:11
Definition jsonwriter.h:15
Definition layers.h:13
Definition mapbugs.h:22
Definition gamecontext.h:82
char m_aReason[128]
Definition gamecontext.h:87
int SecondsLeft() const
Definition mutes.cpp:22
bool m_InitialDelay
Definition gamecontext.h:86
int64_t m_Expire
Definition gamecontext.h:84
bool m_NameKnown
Definition gamecontext.h:89
char m_aClientName[MAX_NAME_LENGTH]
Definition gamecontext.h:88
bool m_Initialized
Definition gamecontext.h:85
Definition gamecontext.h:95
CMutes(const char *pSystemName)
Definition mutes.cpp:27
void UnmuteAddr(const NETADDR *pAddr)
Definition mutes.cpp:88
void UnmuteExpired()
Definition mutes.cpp:120
void UnmuteIndex(int Index)
Definition mutes.cpp:71
std::optional< CMute > IsMuted(const NETADDR *pAddr, bool RespectInitialDelay) const
Definition mutes.cpp:106
const char * m_pSystemName
Definition gamecontext.h:107
bool Mute(const NETADDR *pAddr, int Seconds, const char *pReason, const char *pClientName, bool InitialDelay)
Definition mutes.cpp:32
std::map< NETADDR, CMute > m_Mutes
Definition gamecontext.h:108
void Print(int Page) const
Definition mutes.cpp:136
Definition protocol.h:1616
Definition player.h:26
Definition prng.h:7
Definition save.h:158
Definition save.h:174
Definition score.h:15
Definition teehistorian.h:18
Definition gamecore.h:43
Definition packer.h:54
Definition antibot.h:7
Definition config.h:9
Definition console.h:64
Definition console.h:20
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:102
Definition engine.h:15
Definition gamecontroller.h:24
Definition server.h:298
Definition map.h:19
Definition server.h:34
Definition storage.h:21
Definition protocol7.h:1239
std::bitset< MAX_CLIENTS > CClientMask
Definition protocol.h:166
@ MAX_CLIENTS
Definition protocol.h:89
@ MAX_NAME_LENGTH
Definition protocol.h:99
static bool CheckClientId(int ClientId)
Definition gamecontext.h:658
constexpr int NUM
Definition protocol.h:156
Definition aio.cpp:15
Definition antibot_data.h:111
Definition gamecontext.h:617
char m_aClientName[MAX_NAME_LENGTH]
Definition gamecontext.h:622
bool m_FromServer
Definition gamecontext.h:619
int64_t m_Timestamp
Definition gamecontext.h:618
int m_ClientVersion
Definition gamecontext.h:621
char m_aDescription[256+8]
Definition gamecontext.h:620
char m_aClientAddrStr[NETADDR_MAXSTRSIZE]
Definition gamecontext.h:623
Definition gamecontext.h:188
int m_LastWhisperTo
Definition gamecontext.h:191
bool m_IsSpectator
Definition gamecontext.h:189
bool m_IsAfk
Definition gamecontext.h:190
Definition gamecontext.h:183
CUuid m_PrevGameUuid
Definition gamecontext.h:184
Definition protocol.h:1124
Definition protocol.h:1250
Definition protocol.h:1066
Definition protocol.h:1100
Definition protocol.h:1524
Definition protocol.h:1140
Definition protocol.h:1090
Definition protocol.h:1004
Definition protocol.h:1030
Definition protocol.h:1018
Definition protocol.h:1224
Definition protocol.h:1200
Definition protocol.h:1238
Definition protocol.h:1042
Definition protocol.h:1112
Definition protocol.h:425
Definition scoreworker.h:30
Definition scoreworker.h:103
Definition gamecontext.h:65
bool ClientId() const
Definition gamecontext.h:73
bool m_Sixup
Definition gamecontext.h:77
CSnapContext(int Version, bool Sixup, int ClientId)
Definition gamecontext.h:66
int GetClientVersion() const
Definition gamecontext.h:71
bool IsSixup() const
Definition gamecontext.h:72
int m_ClientId
Definition gamecontext.h:78
int m_ClientVersion
Definition gamecontext.h:76
Definition uuid_manager.h:17
Definition voting.h:23
Definition types.h:79
constexpr auto NETADDR_MAXSTRSIZE
Definition types.h:58
vector2_base< float > vec2
Definition vmath.h:161
@ VOTE_DESC_LENGTH
Definition voting.h:8
@ VOTE_CMD_LENGTH
Definition voting.h:9
@ VOTE_REASON_LENGTH
Definition voting.h:10