DDraceNetwork Documentation
Loading...
Searching...
No Matches
client.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 ENGINE_CLIENT_CLIENT_H
4#define ENGINE_CLIENT_CLIENT_H
5
6#include <base/hash.h>
7#include <base/types.h>
8
9#include <engine/client.h>
12#include <engine/client/ghost.h>
15#include <engine/editor.h>
16#include <engine/graphics.h>
18#include <engine/shared/demo.h>
19#include <engine/shared/fifo.h>
20#include <engine/shared/http.h>
22#include <engine/textrender.h>
23#include <engine/warning.h>
24
25#include "graph.h"
26#include "smooth_time.h"
27
28#include <chrono>
29#include <deque>
30#include <memory>
31#include <mutex>
32
33class CDemoEdit;
34class IDemoRecorder;
35class CMsgPacker;
36class CUnpacker;
37class IConfigManager;
38class IDiscord;
39class IEngine;
40class IEngineInput;
41class IEngineMap;
42class IEngineSound;
43class IFriends;
44class ILogger;
45class ISteam;
46class INotifications;
47class IStorage;
48class IUpdater;
49
51{
52public:
53 bool m_ChatTimeoutCode = false;
54 bool m_AnyPlayerFlag = false;
55 bool m_PingEx = false;
56 bool m_AllowDummy = false;
57 bool m_SyncWeaponInput = false;
58};
59
61{
62 // needed interfaces
64 CConfig *m_pConfig = nullptr;
65 IConsole *m_pConsole = nullptr;
66 IDiscord *m_pDiscord = nullptr;
67 IEditor *m_pEditor = nullptr;
68 IEngine *m_pEngine = nullptr;
73 IEngineMap *m_pMap = nullptr;
75 ISteam *m_pSteam = nullptr;
77 IStorage *m_pStorage = nullptr;
79 IUpdater *m_pUpdater = nullptr;
81
92
94
96 bool m_Sixup;
97
98 bool m_HaveGlobalTcpAddr = false;
100
101 uint64_t m_aSnapshotParts[NUM_DUMMIES] = {0, 0};
102 int64_t m_LocalStartTime = 0;
103 int64_t m_GlobalStartTime = 0;
104
106
108
112 bool m_AutoCSVRecycle = false;
113 bool m_EditorActive = false;
114
118 char m_aRconUsername[64] = "";
119 char m_aRconPassword[sizeof(g_Config.m_SvRconPassword)] = "";
123 char m_aPassword[sizeof(g_Config.m_Password)] = "";
124 bool m_SendPassword = false;
125
127 std::vector<std::string> m_vMaplistEntries;
128
129 // version-checking
130 char m_aVersionStr[10] = "0";
131
132 // pinging
134
137
138 char m_aTimeoutCodes[NUM_DUMMIES][32] = {"", ""};
139 bool m_aCodeRunAfterJoin[NUM_DUMMIES] = {false, false};
141
142 char m_aCmdConnect[256] = "";
145
146 // map download
147 char m_aMapDownloadUrl[256] = "";
148 std::shared_ptr<CHttpRequest> m_pMapdownloadTask = nullptr;
151 char m_aMapdownloadName[256] = "";
159
161 char m_aMapDetailsName[256] = "";
164 char m_aMapDetailsUrl[256] = "";
165
167 std::shared_ptr<CHttpRequest> m_pDDNetInfoTask = nullptr;
168
169 // time
172
173 // input
174 struct // TODO: handle input better
175 {
176 int m_aData[MAX_INPUT_SIZE]; // the input data
177 int m_Tick; // the tick that the input is for
178 int64_t m_PredictedTime; // prediction latency when we sent this input
179 int64_t m_PredictionMargin; // prediction margin when we sent this input
182
184 bool m_LastDummy = false;
186 bool m_DummyConnecting = false;
187 bool m_DummyConnected = false;
191
192 // graphs
196
197 // the game snapshots are modifiable by the game
200
204
207
209
210 std::deque<std::shared_ptr<CDemoEdit>> m_EditJobs;
211
212 //
216
218
220 int64_t m_CurrentServerInfoRequestTime = -1; // >= 0 should request, == -1 got info
221
226 int64_t m_CurrentServerCurrentPingTime = -1; // >= 0 request running
227 int64_t m_CurrentServerNextPingTime = -1; // >= 0 should request
228
229 // version info
241
242 std::mutex m_WarningsMutex;
243 std::vector<SWarning> m_vWarnings;
244 std::vector<SWarning> m_vQuittingWarnings;
245
247
250
254
255 // favorite command handling
256 bool m_FavoritesGroup = false;
260
262 int MaxLatencyTicks() const;
263 int PredictionMargin() const;
264
265 std::shared_ptr<ILogger> m_pFileLogger = nullptr;
266 std::shared_ptr<ILogger> m_pStdoutLogger = nullptr;
267
268 // For RenderDebug function
271 std::chrono::nanoseconds m_NetstatsLastUpdate = std::chrono::nanoseconds(0);
272
273 // For DummyName function
275
276public:
278 CConfig *Config() { return m_pConfig; }
280 IEngine *Engine() { return m_pEngine; }
285 ISteam *Steam() { return m_pSteam; }
290 IHttp *Http() { return &m_Http; }
291
292 CClient();
293
294 // ----- send functions -----
295 int SendMsg(int Conn, CMsgPacker *pMsg, int Flags) override;
296 // Send via the currently active client (main/dummy)
297 int SendMsgActive(CMsgPacker *pMsg, int Flags) override;
298
299 void SendInfo(int Conn);
300 void SendEnterGame(int Conn);
301 void SendReady(int Conn);
302 void SendMapRequest();
303
304 bool RconAuthed() const override { return m_aRconAuthed[g_Config.m_ClDummy] != 0; }
305 bool UseTempRconCommands() const override { return m_UseTempRconCommands != 0; }
306 void RconAuth(const char *pName, const char *pPassword, bool Dummy = g_Config.m_ClDummy) override;
307 void Rcon(const char *pCmd) override;
308 bool ReceivingRconCommands() const override { return m_ExpectedRconCommands > 0; }
309 float GotRconCommandsPercentage() const override;
310 bool ReceivingMaplist() const override { return m_ExpectedMaplistEntries > 0; }
311 float GotMaplistPercentage() const override;
312 const std::vector<std::string> &MaplistEntries() const override { return m_vMaplistEntries; }
313
314 bool ConnectionProblems() const override;
315
317
318 void SendInput();
319
320 // TODO: OPT: do this a lot smarter!
321 int *GetInput(int Tick, int IsDummy) const override;
322
323 const char *LatestVersion() const override;
324
325 // ------ state handling -----
327
328 // called when the map is loaded and we should init for a new round
329 void OnEnterGame(bool Dummy);
330 void EnterGame(int Conn) override;
331
332 void Connect(const char *pAddress, const char *pPassword = nullptr) override;
333 void DisconnectWithReason(const char *pReason);
334 void Disconnect() override;
335
336 void DummyDisconnect(const char *pReason) override;
337 void DummyConnect() override;
338 bool DummyConnected() const override;
339 bool DummyConnecting() const override;
340 bool DummyConnectingDelayed() const override;
341 bool DummyAllowed() const override;
342
343 void GetServerInfo(CServerInfo *pServerInfo) const override;
344 void ServerInfoRequest();
345
346 void LoadDebugFont();
347
348 // ---
349
350 int GetPredictionTime() override;
351 CSnapItem SnapGetItem(int SnapId, int Index) const override;
352 int GetPredictionTick() override;
353 const void *SnapFindItem(int SnapId, int Type, int Id) const override;
354 int SnapNumItems(int SnapId) const override;
355 void SnapSetStaticsize(int ItemType, int Size) override;
356 void SnapSetStaticsize7(int ItemType, int Size) override;
357
358 void Render();
359 void RenderDebug();
360 void RenderGraphs();
361
362 void Restart() override;
363 void Quit() override;
364
365 const char *PlayerName() const override;
366 const char *DummyName() override;
367 const char *ErrorString() const override;
368
369 const char *LoadMap(const char *pName, const char *pFilename, SHA256_DIGEST *pWantedSha256, unsigned WantedCrc);
370 const char *LoadMapSearch(const char *pMapName, SHA256_DIGEST *pWantedSha256, int WantedCrc);
371
373
376 void ProcessServerInfo(int Type, NETADDR *pFrom, const void *pData, int DataSize);
378
380
381 void ResetMapDownload(bool ResetActive);
382 void FinishMapDownload();
383
384 EInfoState InfoState() const override { return m_InfoState; }
385 void RequestDDNetInfo() override;
386 void ResetDDNetInfoTask();
387 void LoadDDNetInfo();
388
389 bool IsSixup() const override { return m_Sixup; }
390
391 const NETADDR &ServerAddress() const override { return *m_aNetClient[CONN_MAIN].ServerAddress(); }
392 int ConnectNetTypes() const override;
393 const char *ConnectAddressString() const override { return m_aConnectAddressStr; }
394 const char *MapDownloadName() const override { return m_aMapdownloadName; }
395 int MapDownloadAmount() const override { return !m_pMapdownloadTask ? m_MapdownloadAmount : (int)m_pMapdownloadTask->Current(); }
397
398 void PumpNetwork();
399
400 void OnDemoPlayerSnapshot(void *pData, int Size) override;
401 void OnDemoPlayerMessage(void *pData, int Size) override;
402
403 void Update();
404
405 void RegisterInterfaces();
406 void InitInterfaces();
407
408 void Run();
409
410 bool InitNetworkClient(char *pError, size_t ErrorSize);
411 bool CtrlShiftKey(int Key, bool &Last);
412
413 static void Con_Connect(IConsole::IResult *pResult, void *pUserData);
415
419
420 static void Con_Quit(IConsole::IResult *pResult, void *pUserData);
421 static void Con_Restart(IConsole::IResult *pResult, void *pUserData);
422 static void Con_DemoPlay(IConsole::IResult *pResult, void *pUserData);
424 static void Con_Minimize(IConsole::IResult *pResult, void *pUserData);
425 static void Con_Ping(IConsole::IResult *pResult, void *pUserData);
427
428#if defined(CONF_VIDEORECORDER)
429 void StartVideo(const char *pFilename, bool WithTimestamp);
432 const char *DemoPlayer_Render(const char *pFilename, int StorageType, const char *pVideoName, int SpeedIndex, bool StartPaused = false) override;
433#endif
434
435 static void Con_Rcon(IConsole::IResult *pResult, void *pUserData);
436 static void Con_RconAuth(IConsole::IResult *pResult, void *pUserData);
442 static void Con_Play(IConsole::IResult *pResult, void *pUserData);
443 static void Con_Record(IConsole::IResult *pResult, void *pUserData);
459
464
465 void RegisterCommands();
466
467 const char *DemoPlayer_Play(const char *pFilename, int StorageType) override;
468 void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder, bool Verbose = false) override;
469 void DemoRecorder_HandleAutoStart() override;
470 void DemoRecorder_UpdateReplayRecorder() override;
472 IDemoRecorder *DemoRecorder(int Recorder) override;
473
474 void AutoScreenshot_Start() override;
475 void AutoStatScreenshot_Start() override;
478
479 void AutoCSV_Start() override;
480 void AutoCSV_Cleanup();
481
482 void ServerBrowserUpdate() override;
483
485 void HandleConnectLink(const char *pLink);
486 void HandleDemoPath(const char *pPath);
487 void HandleMapPath(const char *pPath);
488
489 virtual void InitChecksum();
490 virtual int HandleChecksum(int Conn, CUuid Uuid, CUnpacker *pUnpacker);
491
492 // gfx
493 void Notify(const char *pTitle, const char *pMessage) override;
494 void OnWindowResize() override;
495 void BenchmarkQuit(int Seconds, const char *pFilename);
496
497 void UpdateAndSwap() override;
498
499 // DDRace
500
501 void GenerateTimeoutSeed() override;
503
504 const char *GetCurrentMap() const override;
505 const char *GetCurrentMapPath() const override;
506 SHA256_DIGEST GetCurrentMapSha256() const override;
507 unsigned GetCurrentMapCrc() const override;
508
509 void RaceRecord_Start(const char *pFilename) override;
510 void RaceRecord_Stop() override;
511 bool RaceRecord_IsRecording() override;
512
513 void DemoSliceBegin() override;
514 void DemoSliceEnd() override;
515 void DemoSlice(const char *pDstPath, CLIENTFUNC_FILTER pfnFilter, void *pUser) override;
516 virtual void SaveReplay(int Length, const char *pFilename = "");
517
518 bool EditorHasUnsavedData() const override { return m_pEditor->HasUnsavedData(); }
519
520 IFriends *Foes() override { return &m_Foes; }
521
522 void GetSmoothTick(int *pSmoothTick, float *pSmoothIntraTick, float MixAmount) override;
523
524 void AddWarning(const SWarning &Warning) override;
525 std::optional<SWarning> CurrentWarning() override;
526 std::vector<SWarning> &&QuittingWarnings() { return std::move(m_vQuittingWarnings); }
527
529 int UdpConnectivity(int NetType) override;
530
531 bool ViewLink(const char *pLink) override;
532 bool ViewFile(const char *pFilename) override;
533
534#if defined(CONF_FAMILY_WINDOWS)
535 void ShellRegister() override;
536 void ShellUnregister() override;
537#endif
538
539 std::optional<int> ShowMessageBox(const IGraphics::CMessageBox &MessageBox) override;
540 void GetGpuInfoString(char (&aGpuInfo)[512]) override;
541 void SetLoggers(std::shared_ptr<ILogger> &&pFileLogger, std::shared_ptr<ILogger> &&pStdoutLogger);
542};
543
544#endif
const SHA256_DIGEST SHA256_ZEROED
Definition hash.cpp:6
Definition client.h:61
bool m_MapdownloadSha256Present
Definition client.h:157
int SendMsgActive(CMsgPacker *pMsg, int Flags) override
Definition client.cpp:203
NETSTATS m_NetstatsCurrent
Definition client.h:270
const char * LoadMapSearch(const char *pMapName, SHA256_DIGEST *pWantedSha256, int WantedCrc)
Definition client.cpp:1148
bool m_AutoStatScreenshotRecycle
Definition client.h:111
int64_t m_OwnExecutableSize
Definition client.h:252
void Restart() override
Definition client.cpp:1006
bool m_DummyDeactivateOnReconnect
Definition client.h:190
char m_aCmdPlayDemo[IO_MAX_PATH_LENGTH]
Definition client.h:143
std::shared_ptr< CHttpRequest > m_pMapdownloadTask
Definition client.h:148
void GenerateTimeoutCodes(const NETADDR *pAddrs, int NumAddrs)
Definition client.cpp:524
IOHANDLE m_OwnExecutable
Definition client.h:253
struct CClient::CVersionInfo m_VersionInfo
static void ConchainWindowScreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4267
std::shared_ptr< ILogger > m_pFileLogger
Definition client.h:265
bool ViewFile(const char *pFilename) override
Definition client.cpp:5207
char m_aRconUsername[64]
Definition client.h:118
void GenerateTimeoutSeed() override
Definition client.cpp:519
int m_MapDetailsCrc
Definition client.h:162
bool InitNetworkClient(char *pError, size_t ErrorSize)
Definition client.cpp:3405
static void Con_EndFavoriteGroup(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3700
char m_aTimeoutCodes[NUM_DUMMIES][32]
Definition client.h:138
void HandleConnectLink(const char *pLink)
Definition client.cpp:4490
static void ConchainWindowResize(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4332
void ServerInfoRequest()
Definition client.cpp:804
void OnWindowResize() override
Definition client.cpp:4312
void UpdateAndSwap() override
Definition client.cpp:4124
int m_SnapCrcErrors
Definition client.h:109
IDiscord * m_pDiscord
Definition client.h:66
IEngine * Engine()
Definition client.h:280
ISteam * Steam()
Definition client.h:285
void AutoStatScreenshot_Cleanup()
Definition client.cpp:3549
int GetPredictionTick() override
Definition client.cpp:5074
IEditor * m_pEditor
Definition client.h:67
IOHANDLE m_MapdownloadFileTemp
Definition client.h:152
int64_t m_Time
Definition client.h:180
const char * LoadMap(const char *pName, const char *pFilename, SHA256_DIGEST *pWantedSha256, unsigned WantedCrc)
Definition client.cpp:1072
void RconAuth(const char *pName, const char *pPassword, bool Dummy=g_Config.m_ClDummy) override
Definition client.cpp:261
static void Con_Quit(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3490
static void ConchainWindowBordered(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4291
static void Con_DemoSpeed(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3989
char m_aMapDetailsName[256]
Definition client.h:161
static void Con_SaveReplay(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3787
void ResetDDNetInfoTask()
Definition client.cpp:2395
void HandleDemoPath(const char *pPath)
Definition client.cpp:4507
static void ConchainPassword(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4350
IDemoRecorder * DemoRecorder(int Recorder) override
Definition client.cpp:4076
void OnDemoPlayerSnapshot(void *pData, int Size) override
Definition client.cpp:2594
CFifo m_Fifo
Definition client.h:246
bool m_FavoritesGroupAllowPing
Definition client.h:257
SHA256_DIGEST m_MapdownloadSha256
Definition client.h:158
int64_t m_CurrentServerCurrentPingTime
Definition client.h:226
static void Con_Ping(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3508
int64_t m_LastRenderTime
Definition client.h:107
void GetServerInfo(CServerInfo *pServerInfo) const override
Definition client.cpp:799
void Notify(const char *pTitle, const char *pMessage) override
Definition client.cpp:4303
IStorage * Storage()
Definition client.h:287
void RenderDebug()
Definition client.cpp:856
IEngineInput * Input()
Definition client.h:283
static void Con_Screenshot(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3583
CFriends m_Friends
Definition client.h:90
void SendInfo(int Conn)
Definition client.cpp:208
IConsole * m_pConsole
Definition client.h:65
void DemoRecorder_HandleAutoStart() override
Definition client.cpp:4035
const char * MapDownloadName() const override
Definition client.h:394
void HandleMapPath(const char *pPath)
Definition client.cpp:4512
void RegisterCommands()
Definition client.cpp:4399
CGraph m_aGametimeMarginGraphs[NUM_DUMMIES]
Definition client.h:194
bool m_Sixup
Definition client.h:96
CGhostLoader m_GhostLoader
Definition client.h:87
void ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
Definition client.cpp:1463
CUuid m_ConnectionId
Definition client.h:95
CSmoothTime m_PredictedTime
Definition client.h:171
const std::vector< std::string > & MaplistEntries() const override
Definition client.h:312
char m_aMapdownloadFilename[256]
Definition client.h:149
static void Con_DemoPlay(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3973
static void ConchainInputFifo(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4368
static void Con_Play(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3967
int m_CurrentServerPingToken
Definition client.h:224
void DemoSlice(const char *pDstPath, CLIENTFUNC_FILTER pfnFilter, void *pUser) override
Definition client.cpp:3866
CGraph m_InputtimeMarginGraph
Definition client.h:193
void RenderGraphs()
Definition client.cpp:983
void ProcessServerInfo(int Type, NETADDR *pFrom, const void *pData, int DataSize)
Definition client.cpp:1228
void Connect(const char *pAddress, const char *pPassword=nullptr) override
Definition client.cpp:544
char m_aaaDemorecSnapshotData[NUM_SNAPSHOT_TYPES][2][CSnapshot::MAX_SIZE]
Definition client.h:206
virtual int HandleChecksum(int Conn, CUuid Uuid, CUnpacker *pUnpacker)
Definition client.cpp:4169
static void Con_BeginFavoriteGroup(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3682
int m_ExpectedRconCommands
Definition client.h:121
IEngineGraphics * Graphics()
Definition client.h:282
int m_aAckGameTick[NUM_DUMMIES]
Definition client.h:115
int m_MapdownloadTotalsize
Definition client.h:156
bool m_CanReceiveServerCapabilities
Definition client.h:213
CSnapshotStorage::CHolder * m_aapSnapshots[NUM_DUMMIES][NUM_SNAPSHOT_TYPES]
Definition client.h:199
unsigned GetCurrentMapCrc() const override
Definition client.cpp:5004
void Rcon(const char *pCmd) override
Definition client.cpp:286
std::shared_ptr< ILogger > m_pStdoutLogger
Definition client.h:266
bool ReceivingMaplist() const override
Definition client.h:310
NETADDR m_GlobalTcpAddr
Definition client.h:99
static void Con_AddDemoMarker(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4103
static void Con_Restart(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3496
CFriends m_Foes
Definition client.h:91
static void ConchainWindowVSync(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4320
void StartVideo(const char *pFilename, bool WithTimestamp)
Definition client.cpp:3605
NETSTATS m_NetstatsPrev
Definition client.h:269
CSnapshotStorage m_aSnapshotStorage[NUM_DUMMIES]
Definition client.h:198
CConfig * Config()
Definition client.h:278
char m_aMapdownloadName[256]
Definition client.h:151
bool m_MapDetailsPresent
Definition client.h:160
float GotMaplistPercentage() const override
Definition client.cpp:303
static void Con_DummyResetInput(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3484
CClient()
Definition client.cpp:86
bool DummyConnecting() const override
Definition client.cpp:720
IGameClient * m_pGameClient
Definition client.h:70
void AddWarning(const SWarning &Warning) override
Definition client.cpp:5113
void Render()
Definition client.cpp:1057
int m_aSnapshotIncomingDataSize[NUM_DUMMIES]
Definition client.h:203
uint64_t m_aSnapshotParts[NUM_DUMMIES]
Definition client.h:101
CSnapshotDelta m_SnapshotDelta
Definition client.h:208
void DemoSliceEnd() override
Definition client.cpp:3769
char m_aMapdownloadFilenameTemp[256]
Definition client.h:150
void DummyDisconnect(const char *pReason) override
Definition client.cpp:778
char m_aAutomaticDummyName[MAX_NAME_LENGTH]
Definition client.h:274
static void Con_Record(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4081
int m_MapdownloadAmount
Definition client.h:155
SHA256_DIGEST GetCurrentMapSha256() const override
Definition client.cpp:4999
void DisconnectWithReason(const char *pReason)
Definition client.cpp:651
std::optional< SWarning > CurrentWarning() override
Definition client.cpp:5119
char m_aaSnapshotIncomingData[NUM_DUMMIES][CSnapshot::MAX_SIZE]
Definition client.h:202
void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder, bool Verbose=false) override
Definition client.cpp:3995
const NETADDR & ServerAddress() const override
Definition client.h:391
void SnapSetStaticsize7(int ItemType, int Size) override
Definition client.cpp:851
static void Con_DummyConnect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3472
void HandleConnectAddress(const NETADDR *pAddr)
Definition client.cpp:4485
bool m_DummyReconnectOnReload
Definition client.h:189
bool m_EditorActive
Definition client.h:113
void LoadDebugFont()
Definition client.cpp:810
void PreprocessConnlessPacket7(CNetChunk *pPacket)
Definition sixup_translate_connless.cpp:4
IEngineTextRender * m_pTextRender
Definition client.h:78
int m_MapdownloadChunk
Definition client.h:153
bool DummyAllowed() const override
Definition client.cpp:794
void PumpNetwork()
Definition client.cpp:2525
int m_GotRconCommands
Definition client.h:122
CConfig * m_pConfig
Definition client.h:64
void ResetMapDownload(bool ResetActive)
Definition client.cpp:2327
void SetState(EClientState State)
Definition client.cpp:399
void RaceRecord_Stop() override
Definition client.cpp:5030
bool m_LastDummy
Definition client.h:184
char m_aCurrentMap[IO_MAX_PATH_LENGTH]
Definition client.h:135
static void Con_DemoSliceEnd(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3781
static void Con_StopRecord(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4097
bool DummyConnected() const override
Definition client.cpp:715
std::deque< std::shared_ptr< CDemoEdit > > m_EditJobs
Definition client.h:210
void RaceRecord_Start(const char *pFilename) override
Definition client.cpp:5009
CNetClient m_aNetClient[NUM_CONNS]
Definition client.h:82
bool EditorHasUnsavedData() const override
Definition client.h:518
void ProcessConnlessPacket(CNetChunk *pPacket)
Definition client.cpp:1198
void SetLoggers(std::shared_ptr< ILogger > &&pFileLogger, std::shared_ptr< ILogger > &&pStdoutLogger)
Definition client.cpp:5320
char m_aMapDownloadUrl[256]
Definition client.h:147
IFavorites * m_pFavorites
Definition client.h:69
IEngineMap * m_pMap
Definition client.h:73
CDemoPlayer m_DemoPlayer
Definition client.h:83
int PredictionMargin() const
Definition client.cpp:5139
bool m_DummyConnected
Definition client.h:187
static void Con_StartVideo(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3591
char m_aCmdEditMap[IO_MAX_PATH_LENGTH]
Definition client.h:144
void UpdateDemoIntraTimers()
Definition client.cpp:2654
bool m_DummyConnecting
Definition client.h:186
bool ReceivingRconCommands() const override
Definition client.h:308
IUpdater * Updater()
Definition client.h:289
IHttp * Http()
Definition client.h:290
char m_aCurrentMapPath[IO_MAX_PATH_LENGTH]
Definition client.h:136
CGhostRecorder m_GhostRecorder
Definition client.h:86
int64_t m_BenchmarkStopTime
Definition client.h:249
void Quit() override
Definition client.cpp:1011
void InitInterfaces()
Definition client.cpp:2986
int MaxLatencyTicks() const
Definition client.cpp:5134
static void Con_AddFavorite(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3717
void Update()
Definition client.cpp:2665
SHA256_DIGEST m_MapDetailsSha256
Definition client.h:163
static void Con_Disconnect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3466
void OnEnterGame(bool Dummy)
Definition client.cpp:444
const char * GetCurrentMapPath() const override
Definition client.cpp:4994
static void Con_RconLogin(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3676
bool m_DummySendConnInfo
Definition client.h:185
CSnapItem SnapGetItem(int SnapId, int Index) const override
Definition client.cpp:817
const char * ConnectAddressString() const override
Definition client.h:393
CChecksumData * ChecksumData() override
Definition client.h:528
bool IsSixup() const override
Definition client.h:389
bool m_SendPassword
Definition client.h:124
IEngineGraphics * m_pGraphics
Definition client.h:71
int m_UseTempRconCommands
Definition client.h:120
int m_ExpectedMaplistEntries
Definition client.h:126
void Run()
Definition client.cpp:3022
int64_t m_PredictionMargin
Definition client.h:179
static void Con_Connect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3460
std::optional< int > ShowMessageBox(const IGraphics::CMessageBox &MessageBox) override
Definition client.cpp:5281
IUpdater * m_pUpdater
Definition client.h:79
int TranslateSysMsg(int *pMsgId, bool System, CUnpacker *pUnpacker, CPacker *pPacker, CNetChunk *pPacket, bool *pIsExMsg)
Definition sixup_translate_system.cpp:3
static void ConchainTimeoutSeed(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4342
bool ViewLink(const char *pLink) override
Definition client.cpp:5188
void LoadDDNetInfo()
Definition client.cpp:2427
CHttp m_Http
Definition client.h:80
char m_aPassword[sizeof(g_Config.m_Password)]
Definition client.h:123
const char * DemoPlayer_Render(const char *pFilename, int StorageType, const char *pVideoName, int SpeedIndex, bool StartPaused=false) override
Definition client.cpp:3951
INotifications * Notifications()
Definition client.h:286
CServerBrowser m_ServerBrowser
Definition client.h:88
void SendMapRequest()
Definition client.cpp:244
static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4379
INotifications * m_pNotifications
Definition client.h:76
int ConnectNetTypes() const override
Definition client.cpp:2512
static void Con_Minimize(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3502
bool m_GenerateTimeoutSeed
Definition client.h:140
int m_aData[MAX_INPUT_SIZE]
Definition client.h:176
virtual void InitChecksum()
Definition client.cpp:4144
int * GetInput(int Tick, int IsDummy) const override
Definition client.cpp:383
int GetPredictionTime() override
Definition client.cpp:5068
bool m_AutoCSVRecycle
Definition client.h:112
struct CClient::@37 m_aInputs[NUM_DUMMIES][200]
IStorage * m_pStorage
Definition client.h:77
std::vector< SWarning > && QuittingWarnings()
Definition client.h:526
const char * DummyName() override
Definition client.cpp:1029
int64_t m_PredictedTime
Definition client.h:178
int m_aCurrentInput[NUM_DUMMIES]
Definition client.h:183
const void * SnapFindItem(int SnapId, int Type, int Id) const override
Definition client.cpp:830
char m_aCmdConnect[256]
Definition client.h:142
IEngine * m_pEngine
Definition client.h:68
int SendMsg(int Conn, CMsgPacker *pMsg, int Flags) override
Definition client.cpp:166
static void Con_RemoveFavorite(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3755
IOHANDLE m_BenchmarkFile
Definition client.h:248
void SendReady(int Conn)
Definition client.cpp:238
bool DummyConnectingDelayed() const override
Definition client.cpp:725
void RequestDDNetInfo() override
Definition client.cpp:5043
int SnapNumItems(int SnapId) const override
Definition client.cpp:838
void OnDemoPlayerMessage(void *pData, int Size) override
Definition client.cpp:2633
int m_aRconAuthed[NUM_DUMMIES]
Definition client.h:117
static void Con_DemoSlice(IConsole::IResult *pResult, void *pUserData)
void AutoScreenshot_Cleanup()
Definition client.cpp:3535
IGraphics::CTextureHandle m_DebugFont
Definition client.h:105
void AutoCSV_Start() override
Definition client.cpp:3563
CSnapshotStorage::CHolder m_aDemorecSnapshotHolders[NUM_SNAPSHOT_TYPES]
Definition client.h:205
EInfoState m_InfoState
Definition client.h:166
char m_aMapDetailsUrl[256]
Definition client.h:164
CChecksum m_Checksum
Definition client.h:251
int64_t m_LocalStartTime
Definition client.h:102
void SendInput()
Definition client.cpp:318
std::chrono::nanoseconds m_NetstatsLastUpdate
Definition client.h:271
CServerInfo m_CurrentServerInfo
Definition client.h:219
int64_t m_GlobalStartTime
Definition client.h:103
int m_Tick
Definition client.h:177
bool RconAuthed() const override
Definition client.h:304
static void Con_DemoSliceBegin(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3775
CDemoEditor m_DemoEditor
Definition client.h:85
void AutoScreenshot_Start() override
Definition client.cpp:3517
CDemoRecorder m_aDemoRecorder[RECORDER_MAX]
Definition client.h:84
bool CtrlShiftKey(int Key, bool &Last)
Definition client.cpp:3447
void DemoRecorder_AddDemoMarker(int Recorder)
Definition client.cpp:4071
IDiscord * Discord()
Definition client.h:279
IEngineTextRender * TextRender()
Definition client.h:288
IGameClient * GameClient()
Definition client.h:281
static void Con_StopVideo(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3650
void EnterGame(int Conn) override
Definition client.cpp:485
CSmoothTime m_aGameTime[NUM_DUMMIES]
Definition client.h:170
static void Con_BenchmarkQuit(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4110
EInfoState InfoState() const override
Definition client.h:384
IFriends * Foes() override
Definition client.h:520
std::shared_ptr< CHttpRequest > m_pDDNetInfoTask
Definition client.h:167
float m_LastDummyConnectTime
Definition client.h:188
CUuid m_CurrentServerPingUuid
Definition client.h:225
bool ServerCapAnyPlayerFlag() const override
Definition client.h:217
int m_MapdownloadCrc
Definition client.h:154
std::mutex m_WarningsMutex
Definition client.h:242
static void ConchainReplays(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4358
std::vector< SWarning > m_vWarnings
Definition client.h:243
int m_CurrentServerPingBasicToken
Definition client.h:223
const char * GetCurrentMap() const override
Definition client.cpp:4989
IEngineSound * Sound()
Definition client.h:284
CUpdater m_Updater
Definition client.h:89
void SendEnterGame(int Conn)
Definition client.cpp:232
void Disconnect() override
Definition client.cpp:707
void FinishMapDownload()
Definition client.cpp:2360
void GetGpuInfoString(char(&aGpuInfo)[512]) override
Definition client.cpp:5291
IEngineInput * m_pInput
Definition client.h:72
static void ConchainFullscreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4279
char m_aRconPassword[sizeof(g_Config.m_SvRconPassword)]
Definition client.h:119
CServerCapabilities m_ServerCapabilities
Definition client.h:215
bool m_AutoScreenshotRecycle
Definition client.h:110
const char * DemoPlayer_Play(const char *pFilename, int StorageType) override
Definition client.cpp:3874
char m_aVersionStr[10]
Definition client.h:130
int m_aCurrentRecvTick[NUM_DUMMIES]
Definition client.h:116
int UnpackAndValidateSnapshot(CSnapshot *pFrom, CSnapshot *pTo)
Definition client.cpp:2288
virtual void SaveReplay(int Length, const char *pFilename="")
Definition client.cpp:3807
void AutoStatScreenshot_Start() override
Definition client.cpp:3526
void DemoSliceBegin() override
Definition client.cpp:3763
int64_t m_CurrentServerNextPingTime
Definition client.h:227
int MapDownloadTotalsize() const override
Definition client.h:396
void BenchmarkQuit(int Seconds, const char *pFilename)
Definition client.cpp:4118
ISteam * m_pSteam
Definition client.h:75
int UdpConnectivity(int NetType) override
Definition client.cpp:5144
NETADDR m_aFavoritesGroupAddresses[MAX_SERVER_ADDRESSES]
Definition client.h:259
void DemoRecorder_UpdateReplayRecorder() override
Definition client.cpp:4056
int MapDownloadAmount() const override
Definition client.h:395
std::vector< SWarning > m_vQuittingWarnings
Definition client.h:244
void AutoCSV_Cleanup()
Definition client.cpp:3569
bool m_HaveGlobalTcpAddr
Definition client.h:98
static void Con_RconAuth(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3670
const char * PlayerName() const override
Definition client.cpp:1016
void ServerBrowserUpdate() override
Definition client.cpp:4132
static void Con_Rcon(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3664
char m_aConnectAddressStr[MAX_SERVER_ADDRESSES *NETADDR_MAXSTRSIZE]
Definition client.h:93
static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4389
void SnapSetStaticsize(int ItemType, int Size) override
Definition client.cpp:846
int m_FavoritesGroupNum
Definition client.h:258
bool m_aCodeRunAfterJoin[NUM_DUMMIES]
Definition client.h:139
IGraphics::CTextureHandle GetDebugFont() const override
Definition client.h:316
const char * ErrorString() const override
Definition client.cpp:1052
static void ConchainServerBrowserUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4137
IEngineSound * m_pSound
Definition client.h:74
int m_aReceivedSnapshots[NUM_DUMMIES]
Definition client.h:201
CGraph m_FpsGraph
Definition client.h:195
static void Con_DummyDisconnect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3478
bool m_FavoritesGroup
Definition client.h:256
float GotRconCommandsPercentage() const override
Definition client.cpp:293
bool UseTempRconCommands() const override
Definition client.h:305
int m_CurrentServerPingInfoType
Definition client.h:222
void GetSmoothTick(int *pSmoothTick, float *pSmoothIntraTick, float MixAmount) override
Definition client.cpp:5103
std::vector< std::string > m_vMaplistEntries
Definition client.h:127
int64_t m_PingStartTime
Definition client.h:133
void RegisterInterfaces()
Definition client.cpp:2971
int64_t m_CurrentServerInfoRequestTime
Definition client.h:220
const char * LatestVersion() const override
Definition client.cpp:377
bool m_ServerSentCapabilities
Definition client.h:214
void DummyConnect() override
Definition client.cpp:730
IConfigManager * m_pConfigManager
Definition client.h:63
IConfigManager * ConfigManager()
Definition client.h:277
bool ConnectionProblems() const override
Definition client.cpp:313
bool RaceRecord_IsRecording() override
Definition client.cpp:5038
Definition config.h:25
Definition demoedit.h:11
Definition demo.h:202
Definition demo.h:67
Definition demo.h:64
Definition demo.h:19
Definition fifo.h:8
Definition friends.h:12
Definition ghost.h:75
Definition ghost.h:47
Definition graph.h:17
Definition http.h:310
Definition message.h:10
Definition network.h:563
const NETADDR * ServerAddress() const
Definition network.h:594
Definition packer.h:38
Definition serverbrowser.h:250
Definition client.h:51
bool m_SyncWeaponInput
Definition client.h:57
bool m_AnyPlayerFlag
Definition client.h:54
bool m_ChatTimeoutCode
Definition client.h:53
bool m_AllowDummy
Definition client.h:56
bool m_PingEx
Definition client.h:55
Definition serverbrowser.h:25
Definition smooth_time.h:12
Definition snapshot.h:78
Definition snapshot.h:122
Definition snapshot.h:119
Definition snapshot.h:31
@ MAX_SIZE
Definition snapshot.h:52
Definition packer.h:54
Definition updater.h:45
Definition client.h:39
EClientState
Definition client.h:52
EInfoState
Definition client.h:298
EClientState State() const
Definition client.h:140
@ NUM_CONNS
Definition client.h:125
@ CONN_MAIN
Definition client.h:122
@ NUM_SNAPSHOT_TYPES
Definition client.h:234
Definition config.h:9
Definition console.h:47
Definition console.h:18
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:91
Definition demo.h:105
Definition discord.h:9
Definition editor.h:8
virtual bool HasUnsavedData() const =0
Definition graphics.h:605
Definition input.h:205
Definition map.h:35
Definition sound.h:115
Definition textrender.h:337
Definition engine.h:15
Definition favorites.h:14
Definition friends.h:19
Definition client.h:350
Definition graphics.h:560
Definition graphics.h:205
Definition http.h:12
Definition logger.h:68
Definition notifications.h:7
Definition steam.h:9
Definition storage.h:21
Definition updater.h:7
Definition vmath.h:15
@ RECORDER_MAX
Definition client.h:32
bool(* CLIENTFUNC_FILTER)(const void *pData, int DataSize, void *pUser)
Definition client.h:35
CConfig g_Config
Definition config.cpp:13
@ NUM_DUMMIES
Definition enums.h:8
@ MAX_SERVER_ADDRESSES
Definition protocol.h:86
@ MAX_INPUT_SIZE
Definition protocol.h:95
@ MAX_NAME_LENGTH
Definition protocol.h:98
Definition checksum.h:7
Definition client.h:231
int m_State
Definition client.h:239
@ STATE_START
Definition client.h:235
@ STATE_READY
Definition client.h:236
@ STATE_INIT
Definition client.h:234
Definition network.h:129
Definition uuid_manager.h:17
Definition types.h:72
Definition types.h:92
Definition hash.h:15
Definition warning.h:5
const NETADDR NETADDR_ZEROED
Definition system.cpp:1022
constexpr auto NETADDR_MAXSTRSIZE
Definition types.h:51
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:49
Definition checksum.h:31
CChecksumData m_Data
Definition checksum.h:33
const CUuid UUID_ZEROED
Definition uuid_manager.cpp:14