DDraceNetwork Docs
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 <deque>
7#include <memory>
8#include <mutex>
9
10#include <base/hash.h>
11
12#include <engine/client.h>
15#include <engine/client/ghost.h>
18#include <engine/editor.h>
19#include <engine/graphics.h>
21#include <engine/shared/demo.h>
22#include <engine/shared/fifo.h>
23#include <engine/shared/http.h>
25#include <engine/textrender.h>
26#include <engine/warning.h>
27
28#include "graph.h"
29#include "smooth_time.h"
30
31class CDemoEdit;
32class IDemoRecorder;
33class CMsgPacker;
34class CUnpacker;
35class IConfigManager;
36class IDiscord;
37class IEngine;
38class IEngineInput;
39class IEngineMap;
40class IEngineSound;
41class IFriends;
42class ILogger;
43class ISteam;
44class INotifications;
45class IStorage;
46class IUpdater;
47
48#define CONNECTLINK_DOUBLE_SLASH "ddnet://"
49#define CONNECTLINK_NO_SLASH "ddnet:"
50
52{
53public:
54 bool m_ChatTimeoutCode = false;
55 bool m_AnyPlayerFlag = false;
56 bool m_PingEx = false;
57 bool m_AllowDummy = false;
58 bool m_SyncWeaponInput = false;
59};
60
62{
63 // needed interfaces
65 CConfig *m_pConfig = nullptr;
66 IConsole *m_pConsole = nullptr;
67 IDiscord *m_pDiscord = nullptr;
68 IEditor *m_pEditor = nullptr;
69 IEngine *m_pEngine = nullptr;
74 IEngineMap *m_pMap = nullptr;
76 ISteam *m_pSteam = nullptr;
78 IStorage *m_pStorage = nullptr;
80 IUpdater *m_pUpdater = nullptr;
82
93
95
97 bool m_Sixup;
98
99 bool m_HaveGlobalTcpAddr = false;
101
102 uint64_t m_aSnapshotParts[NUM_DUMMIES] = {0, 0};
103 int64_t m_LocalStartTime = 0;
104 int64_t m_GlobalStartTime = 0;
105
107
109
113 bool m_AutoCSVRecycle = false;
114 bool m_EditorActive = false;
115
119 char m_aRconUsername[32] = "";
120 char m_aRconPassword[sizeof(g_Config.m_SvRconPassword)] = "";
124 char m_aPassword[sizeof(g_Config.m_Password)] = "";
125 bool m_SendPassword = false;
126
128 std::vector<std::string> m_vMaplistEntries;
129
130 // version-checking
131 char m_aVersionStr[10] = "0";
132
133 // pinging
134 int64_t m_PingStartTime = 0;
135
138
139 char m_aTimeoutCodes[NUM_DUMMIES][32] = {"", ""};
140 bool m_aCodeRunAfterJoin[NUM_DUMMIES] = {false, false};
142
143 char m_aCmdConnect[256] = "";
146
147 // map download
148 char m_aMapDownloadUrl[256] = "";
149 std::shared_ptr<CHttpRequest> m_pMapdownloadTask = nullptr;
152 char m_aMapdownloadName[256] = "";
160
162 char m_aMapDetailsName[256] = "";
165 char m_aMapDetailsUrl[256] = "";
166
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
180 int64_t m_Time;
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
231 {
232 enum
233 {
237 };
238
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 DummyName function
270
271public:
273 CConfig *Config() { return m_pConfig; }
275 IEngine *Engine() { return m_pEngine; }
280 ISteam *Steam() { return m_pSteam; }
285 IHttp *Http() { return &m_Http; }
286
287 CClient();
288
289 // ----- send functions -----
290 int SendMsg(int Conn, CMsgPacker *pMsg, int Flags) override;
291 // Send via the currently active client (main/dummy)
292 int SendMsgActive(CMsgPacker *pMsg, int Flags) override;
293
294 void SendInfo(int Conn);
295 void SendEnterGame(int Conn);
296 void SendReady(int Conn);
297 void SendMapRequest();
298
299 bool RconAuthed() const override { return m_aRconAuthed[g_Config.m_ClDummy] != 0; }
300 bool UseTempRconCommands() const override { return m_UseTempRconCommands != 0; }
301 void RconAuth(const char *pName, const char *pPassword, bool Dummy = g_Config.m_ClDummy) override;
302 void Rcon(const char *pCmd) override;
303 bool ReceivingRconCommands() const override { return m_ExpectedRconCommands > 0; }
304 float GotRconCommandsPercentage() const override;
305 bool ReceivingMaplist() const override { return m_ExpectedMaplistEntries > 0; }
306 float GotMaplistPercentage() const override;
307 const std::vector<std::string> &MaplistEntries() const override { return m_vMaplistEntries; }
308
309 bool ConnectionProblems() const override;
310
312
313 void SendInput();
314
315 // TODO: OPT: do this a lot smarter!
316 int *GetInput(int Tick, int IsDummy) const override;
317
318 const char *LatestVersion() const override;
319
320 // ------ state handling -----
322
323 // called when the map is loaded and we should init for a new round
324 void OnEnterGame(bool Dummy);
325 void EnterGame(int Conn) override;
326
327 void Connect(const char *pAddress, const char *pPassword = nullptr) override;
328 void DisconnectWithReason(const char *pReason);
329 void Disconnect() override;
330
331 void DummyDisconnect(const char *pReason) override;
332 void DummyConnect() override;
333 bool DummyConnected() const override;
334 bool DummyConnecting() const override;
335 bool DummyConnectingDelayed() const override;
336 bool DummyAllowed() const override;
337
338 void GetServerInfo(CServerInfo *pServerInfo) const override;
339 void ServerInfoRequest();
340
341 void LoadDebugFont();
342
343 // ---
344
345 int GetPredictionTime() override;
346 CSnapItem SnapGetItem(int SnapId, int Index) const override;
347 int GetPredictionTick() override;
348 const void *SnapFindItem(int SnapId, int Type, int Id) const override;
349 int SnapNumItems(int SnapId) const override;
350 void SnapSetStaticsize(int ItemType, int Size) override;
351 void SnapSetStaticsize7(int ItemType, int Size) override;
352
353 void Render();
354 void DebugRender();
355
356 void Restart() override;
357 void Quit() override;
358
359 const char *PlayerName() const override;
360 const char *DummyName() override;
361 const char *ErrorString() const override;
362
363 const char *LoadMap(const char *pName, const char *pFilename, SHA256_DIGEST *pWantedSha256, unsigned WantedCrc);
364 const char *LoadMapSearch(const char *pMapName, SHA256_DIGEST *pWantedSha256, int WantedCrc);
365
366 int TranslateSysMsg(int *pMsgId, bool System, CUnpacker *pUnpacker, CPacker *pPacker, CNetChunk *pPacket, bool *pIsExMsg);
367
369 void ProcessConnlessPacket(CNetChunk *pPacket);
370 void ProcessServerInfo(int Type, NETADDR *pFrom, const void *pData, int DataSize);
371 void ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy);
372
374
375 void ResetMapDownload(bool ResetActive);
376 void FinishMapDownload();
377
378 void RequestDDNetInfo() override;
379 void ResetDDNetInfoTask();
380 void LoadDDNetInfo();
381
382 bool IsSixup() const override { return m_Sixup; }
383
384 const NETADDR &ServerAddress() const override { return *m_aNetClient[CONN_MAIN].ServerAddress(); }
385 int ConnectNetTypes() const override;
386 const char *ConnectAddressString() const override { return m_aConnectAddressStr; }
387 const char *MapDownloadName() const override { return m_aMapdownloadName; }
388 int MapDownloadAmount() const override { return !m_pMapdownloadTask ? m_MapdownloadAmount : (int)m_pMapdownloadTask->Current(); }
389 int MapDownloadTotalsize() const override { return !m_pMapdownloadTask ? m_MapdownloadTotalsize : (int)m_pMapdownloadTask->Size(); }
390
391 void PumpNetwork();
392
393 void OnDemoPlayerSnapshot(void *pData, int Size) override;
394 void OnDemoPlayerMessage(void *pData, int Size) override;
395
396 void Update();
397
398 void RegisterInterfaces();
399 void InitInterfaces();
400
401 void Run();
402
403 bool InitNetworkClient(char *pError, size_t ErrorSize);
404 bool CtrlShiftKey(int Key, bool &Last);
405
406 static void Con_Connect(IConsole::IResult *pResult, void *pUserData);
407 static void Con_Disconnect(IConsole::IResult *pResult, void *pUserData);
408
409 static void Con_DummyConnect(IConsole::IResult *pResult, void *pUserData);
410 static void Con_DummyDisconnect(IConsole::IResult *pResult, void *pUserData);
411 static void Con_DummyResetInput(IConsole::IResult *pResult, void *pUserData);
412
413 static void Con_Quit(IConsole::IResult *pResult, void *pUserData);
414 static void Con_Restart(IConsole::IResult *pResult, void *pUserData);
415 static void Con_DemoPlay(IConsole::IResult *pResult, void *pUserData);
416 static void Con_DemoSpeed(IConsole::IResult *pResult, void *pUserData);
417 static void Con_Minimize(IConsole::IResult *pResult, void *pUserData);
418 static void Con_Ping(IConsole::IResult *pResult, void *pUserData);
419 static void Con_Screenshot(IConsole::IResult *pResult, void *pUserData);
420
421#if defined(CONF_VIDEORECORDER)
422 void StartVideo(const char *pFilename, bool WithTimestamp);
423 static void Con_StartVideo(IConsole::IResult *pResult, void *pUserData);
424 static void Con_StopVideo(IConsole::IResult *pResult, void *pUserData);
425 const char *DemoPlayer_Render(const char *pFilename, int StorageType, const char *pVideoName, int SpeedIndex, bool StartPaused = false) override;
426#endif
427
428 static void Con_Rcon(IConsole::IResult *pResult, void *pUserData);
429 static void Con_RconAuth(IConsole::IResult *pResult, void *pUserData);
430 static void Con_RconLogin(IConsole::IResult *pResult, void *pUserData);
431 static void Con_BeginFavoriteGroup(IConsole::IResult *pResult, void *pUserData);
432 static void Con_EndFavoriteGroup(IConsole::IResult *pResult, void *pUserData);
433 static void Con_AddFavorite(IConsole::IResult *pResult, void *pUserData);
434 static void Con_RemoveFavorite(IConsole::IResult *pResult, void *pUserData);
435 static void Con_Play(IConsole::IResult *pResult, void *pUserData);
436 static void Con_Record(IConsole::IResult *pResult, void *pUserData);
437 static void Con_StopRecord(IConsole::IResult *pResult, void *pUserData);
438 static void Con_AddDemoMarker(IConsole::IResult *pResult, void *pUserData);
439 static void Con_BenchmarkQuit(IConsole::IResult *pResult, void *pUserData);
440 static void ConchainServerBrowserUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
441 static void ConchainFullscreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
442 static void ConchainWindowBordered(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
443 static void ConchainWindowScreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
444 static void ConchainWindowVSync(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
445 static void ConchainWindowResize(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
446 static void ConchainTimeoutSeed(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
447 static void ConchainPassword(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
448 static void ConchainReplays(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
449 static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
450 static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
451
452 static void Con_DemoSlice(IConsole::IResult *pResult, void *pUserData);
453 static void Con_DemoSliceBegin(IConsole::IResult *pResult, void *pUserData);
454 static void Con_DemoSliceEnd(IConsole::IResult *pResult, void *pUserData);
455 static void Con_SaveReplay(IConsole::IResult *pResult, void *pUserData);
456
457 void RegisterCommands();
458
459 const char *DemoPlayer_Play(const char *pFilename, int StorageType) override;
460 void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder, bool Verbose = false) override;
461 void DemoRecorder_HandleAutoStart() override;
462 void DemoRecorder_UpdateReplayRecorder() override;
463 void DemoRecorder_AddDemoMarker(int Recorder);
464 IDemoRecorder *DemoRecorder(int Recorder) override;
465
466 void AutoScreenshot_Start() override;
467 void AutoStatScreenshot_Start() override;
470
471 void AutoCSV_Start() override;
472 void AutoCSV_Cleanup();
473
474 void ServerBrowserUpdate() override;
475
476 void HandleConnectAddress(const NETADDR *pAddr);
477 void HandleConnectLink(const char *pLink);
478 void HandleDemoPath(const char *pPath);
479 void HandleMapPath(const char *pPath);
480
481 virtual void InitChecksum();
482 virtual int HandleChecksum(int Conn, CUuid Uuid, CUnpacker *pUnpacker);
483
484 // gfx
485 void SwitchWindowScreen(int Index) override;
486 void SetWindowParams(int FullscreenMode, bool IsBorderless) override;
487 void ToggleWindowVSync() override;
488 void Notify(const char *pTitle, const char *pMessage) override;
489 void OnWindowResize() override;
490 void BenchmarkQuit(int Seconds, const char *pFilename);
491
492 void UpdateAndSwap() override;
493
494 // DDRace
495
496 void GenerateTimeoutSeed() override;
497 void GenerateTimeoutCodes(const NETADDR *pAddrs, int NumAddrs);
498
499 const char *GetCurrentMap() const override;
500 const char *GetCurrentMapPath() const override;
501 SHA256_DIGEST GetCurrentMapSha256() const override;
502 unsigned GetCurrentMapCrc() const override;
503
504 void RaceRecord_Start(const char *pFilename) override;
505 void RaceRecord_Stop() override;
506 bool RaceRecord_IsRecording() override;
507
508 void DemoSliceBegin() override;
509 void DemoSliceEnd() override;
510 void DemoSlice(const char *pDstPath, CLIENTFUNC_FILTER pfnFilter, void *pUser) override;
511 virtual void SaveReplay(int Length, const char *pFilename = "");
512
513 bool EditorHasUnsavedData() const override { return m_pEditor->HasUnsavedData(); }
514
515 IFriends *Foes() override { return &m_Foes; }
516
517 void GetSmoothTick(int *pSmoothTick, float *pSmoothIntraTick, float MixAmount) override;
518
519 void AddWarning(const SWarning &Warning) override;
520 std::optional<SWarning> CurrentWarning() override;
521 std::vector<SWarning> &&QuittingWarnings() { return std::move(m_vQuittingWarnings); }
522
524 int UdpConnectivity(int NetType) override;
525
526 bool ViewLink(const char *pLink) override;
527 bool ViewFile(const char *pFilename) override;
528
529#if defined(CONF_FAMILY_WINDOWS)
530 void ShellRegister() override;
531 void ShellUnregister() override;
532#endif
533
534 void ShowMessageBox(const char *pTitle, const char *pMessage, EMessageBoxType Type = MESSAGE_BOX_TYPE_ERROR) override;
535 void GetGpuInfoString(char (&aGpuInfo)[256]) override;
536 void SetLoggers(std::shared_ptr<ILogger> &&pFileLogger, std::shared_ptr<ILogger> &&pStdoutLogger);
537};
538
539#endif
const SHA256_DIGEST SHA256_ZEROED
Definition: hash.cpp:6
Definition: client.h:62
bool m_MapdownloadSha256Present
Definition: client.h:158
int SendMsgActive(CMsgPacker *pMsg, int Flags) override
Definition: client.cpp:207
const char * LoadMapSearch(const char *pMapName, SHA256_DIGEST *pWantedSha256, int WantedCrc)
Definition: client.cpp:1136
bool m_AutoStatScreenshotRecycle
Definition: client.h:112
int64_t m_OwnExecutableSize
Definition: client.h:252
void Restart() override
Definition: client.cpp:992
bool m_DummyDeactivateOnReconnect
Definition: client.h:190
char m_aCmdPlayDemo[IO_MAX_PATH_LENGTH]
Definition: client.h:144
std::shared_ptr< CHttpRequest > m_pMapdownloadTask
Definition: client.h:149
void GenerateTimeoutCodes(const NETADDR *pAddrs, int NumAddrs)
Definition: client.cpp:525
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:4278
std::shared_ptr< ILogger > m_pFileLogger
Definition: client.h:265
bool ViewFile(const char *pFilename) override
Definition: client.cpp:5198
void GenerateTimeoutSeed() override
Definition: client.cpp:520
int m_MapDetailsCrc
Definition: client.h:163
void SwitchWindowScreen(int Index) override
Definition: client.cpp:4251
bool InitNetworkClient(char *pError, size_t ErrorSize)
Definition: client.cpp:3389
static void Con_EndFavoriteGroup(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3684
char m_aTimeoutCodes[NUM_DUMMIES][32]
Definition: client.h:139
void HandleConnectLink(const char *pLink)
Definition: client.cpp:4502
static void ConchainWindowResize(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4356
void ServerInfoRequest()
Definition: client.cpp:805
void OnWindowResize() override
Definition: client.cpp:4336
void UpdateAndSwap() override
Definition: client.cpp:4108
int m_SnapCrcErrors
Definition: client.h:110
IDiscord * m_pDiscord
Definition: client.h:67
IEngine * Engine()
Definition: client.h:275
ISteam * Steam()
Definition: client.h:280
void AutoStatScreenshot_Cleanup()
Definition: client.cpp:3533
int GetPredictionTick() override
Definition: client.cpp:5065
IEditor * m_pEditor
Definition: client.h:68
IOHANDLE m_MapdownloadFileTemp
Definition: client.h:153
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:1060
void RconAuth(const char *pName, const char *pPassword, bool Dummy=g_Config.m_ClDummy) override
Definition: client.cpp:265
void DebugRender()
Definition: client.cpp:857
static void Con_Quit(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3474
static void ConchainWindowBordered(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4309
static void Con_DemoSpeed(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3973
char m_aMapDetailsName[256]
Definition: client.h:162
static void Con_SaveReplay(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3771
void ResetDDNetInfoTask()
Definition: client.cpp:2387
void HandleDemoPath(const char *pPath)
Definition: client.cpp:4518
static void ConchainPassword(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4374
IDemoRecorder * DemoRecorder(int Recorder) override
Definition: client.cpp:4060
void OnDemoPlayerSnapshot(void *pData, int Size) override
Definition: client.cpp:2582
CFifo m_Fifo
Definition: client.h:246
struct CClient::@41 m_aInputs[NUM_DUMMIES][200]
bool m_FavoritesGroupAllowPing
Definition: client.h:257
SHA256_DIGEST m_MapdownloadSha256
Definition: client.h:159
int64_t m_CurrentServerCurrentPingTime
Definition: client.h:226
static void Con_Ping(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3492
int64_t m_LastRenderTime
Definition: client.h:108
void GetServerInfo(CServerInfo *pServerInfo) const override
Definition: client.cpp:800
void Notify(const char *pTitle, const char *pMessage) override
Definition: client.cpp:4327
IStorage * Storage()
Definition: client.h:282
IEngineInput * Input()
Definition: client.h:278
static void Con_Screenshot(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3567
CFriends m_Friends
Definition: client.h:91
void SendInfo(int Conn)
Definition: client.cpp:212
IConsole * m_pConsole
Definition: client.h:66
void DemoRecorder_HandleAutoStart() override
Definition: client.cpp:4019
const char * MapDownloadName() const override
Definition: client.h:387
void HandleMapPath(const char *pPath)
Definition: client.cpp:4523
void RegisterCommands()
Definition: client.cpp:4412
CGraph m_aGametimeMarginGraphs[NUM_DUMMIES]
Definition: client.h:194
bool m_Sixup
Definition: client.h:97
CGhostLoader m_GhostLoader
Definition: client.h:88
void ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
Definition: client.cpp:1450
CUuid m_ConnectionId
Definition: client.h:96
CSmoothTime m_PredictedTime
Definition: client.h:171
const std::vector< std::string > & MaplistEntries() const override
Definition: client.h:307
char m_aMapdownloadFilename[256]
Definition: client.h:150
static void Con_DemoPlay(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3957
static void Con_Play(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3951
int m_CurrentServerPingToken
Definition: client.h:224
void DemoSlice(const char *pDstPath, CLIENTFUNC_FILTER pfnFilter, void *pUser) override
Definition: client.cpp:3850
CGraph m_InputtimeMarginGraph
Definition: client.h:193
void ProcessServerInfo(int Type, NETADDR *pFrom, const void *pData, int DataSize)
Definition: client.cpp:1216
void Connect(const char *pAddress, const char *pPassword=nullptr) override
Definition: client.cpp:545
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:4153
static void Con_BeginFavoriteGroup(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3666
int m_ExpectedRconCommands
Definition: client.h:122
IEngineGraphics * Graphics()
Definition: client.h:277
int m_aAckGameTick[NUM_DUMMIES]
Definition: client.h:116
int m_MapdownloadTotalsize
Definition: client.h:157
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:4996
void Rcon(const char *pCmd) override
Definition: client.cpp:290
std::shared_ptr< ILogger > m_pStdoutLogger
Definition: client.h:266
bool ReceivingMaplist() const override
Definition: client.h:305
NETADDR m_GlobalTcpAddr
Definition: client.h:100
static void Con_AddDemoMarker(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:4087
static void Con_Restart(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3480
CFriends m_Foes
Definition: client.h:92
static void ConchainWindowVSync(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4344
void StartVideo(const char *pFilename, bool WithTimestamp)
Definition: client.cpp:3589
CSnapshotStorage m_aSnapshotStorage[NUM_DUMMIES]
Definition: client.h:198
CConfig * Config()
Definition: client.h:273
char m_aMapdownloadName[256]
Definition: client.h:152
bool m_MapDetailsPresent
Definition: client.h:161
float GotMaplistPercentage() const override
Definition: client.cpp:307
static void Con_DummyResetInput(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3468
CClient()
Definition: client.cpp:86
bool DummyConnecting() const override
Definition: client.cpp:721
IGameClient * m_pGameClient
Definition: client.h:71
void AddWarning(const SWarning &Warning) override
Definition: client.cpp:5104
void Render()
Definition: client.cpp:1043
int m_aSnapshotIncomingDataSize[NUM_DUMMIES]
Definition: client.h:203
uint64_t m_aSnapshotParts[NUM_DUMMIES]
Definition: client.h:102
CSnapshotDelta m_SnapshotDelta
Definition: client.h:208
void DemoSliceEnd() override
Definition: client.cpp:3753
char m_aMapdownloadFilenameTemp[256]
Definition: client.h:151
void DummyDisconnect(const char *pReason) override
Definition: client.cpp:779
char m_aRconUsername[32]
Definition: client.h:119
char m_aAutomaticDummyName[MAX_NAME_LENGTH]
Definition: client.h:269
static void Con_Record(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:4065
int m_MapdownloadAmount
Definition: client.h:156
SHA256_DIGEST GetCurrentMapSha256() const override
Definition: client.cpp:4991
void DisconnectWithReason(const char *pReason)
Definition: client.cpp:652
std::optional< SWarning > CurrentWarning() override
Definition: client.cpp:5110
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:3979
const NETADDR & ServerAddress() const override
Definition: client.h:384
void SnapSetStaticsize7(int ItemType, int Size) override
Definition: client.cpp:852
static void Con_DummyConnect(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3456
void HandleConnectAddress(const NETADDR *pAddr)
Definition: client.cpp:4497
bool m_DummyReconnectOnReload
Definition: client.h:189
bool m_EditorActive
Definition: client.h:114
void LoadDebugFont()
Definition: client.cpp:811
void PreprocessConnlessPacket7(CNetChunk *pPacket)
Definition: sixup_translate_connless.cpp:4
IEngineTextRender * m_pTextRender
Definition: client.h:79
int m_MapdownloadChunk
Definition: client.h:154
bool DummyAllowed() const override
Definition: client.cpp:795
void PumpNetwork()
Definition: client.cpp:2513
int m_GotRconCommands
Definition: client.h:123
CConfig * m_pConfig
Definition: client.h:65
void ResetMapDownload(bool ResetActive)
Definition: client.cpp:2318
void SetState(EClientState State)
Definition: client.cpp:403
void RaceRecord_Stop() override
Definition: client.cpp:5022
bool m_LastDummy
Definition: client.h:184
char m_aCurrentMap[IO_MAX_PATH_LENGTH]
Definition: client.h:136
static void Con_DemoSliceEnd(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3765
static void Con_StopRecord(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:4081
bool DummyConnected() const override
Definition: client.cpp:716
std::deque< std::shared_ptr< CDemoEdit > > m_EditJobs
Definition: client.h:210
void RaceRecord_Start(const char *pFilename) override
Definition: client.cpp:5001
CNetClient m_aNetClient[NUM_CONNS]
Definition: client.h:83
bool EditorHasUnsavedData() const override
Definition: client.h:513
void ProcessConnlessPacket(CNetChunk *pPacket)
Definition: client.cpp:1186
void SetLoggers(std::shared_ptr< ILogger > &&pFileLogger, std::shared_ptr< ILogger > &&pStdoutLogger)
Definition: client.cpp:5290
char m_aMapDownloadUrl[256]
Definition: client.h:148
IFavorites * m_pFavorites
Definition: client.h:70
IEngineMap * m_pMap
Definition: client.h:74
CDemoPlayer m_DemoPlayer
Definition: client.h:84
int PredictionMargin() const
Definition: client.cpp:5130
bool m_DummyConnected
Definition: client.h:187
static void Con_StartVideo(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3575
char m_aCmdEditMap[IO_MAX_PATH_LENGTH]
Definition: client.h:145
void UpdateDemoIntraTimers()
Definition: client.cpp:2642
bool m_DummyConnecting
Definition: client.h:186
bool ReceivingRconCommands() const override
Definition: client.h:303
IUpdater * Updater()
Definition: client.h:284
IHttp * Http()
Definition: client.h:285
char m_aCurrentMapPath[IO_MAX_PATH_LENGTH]
Definition: client.h:137
CGhostRecorder m_GhostRecorder
Definition: client.h:87
int64_t m_BenchmarkStopTime
Definition: client.h:249
void Quit() override
Definition: client.cpp:997
void InitInterfaces()
Definition: client.cpp:2972
int MaxLatencyTicks() const
Definition: client.cpp:5125
static void Con_AddFavorite(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3701
void Update()
Definition: client.cpp:2653
SHA256_DIGEST m_MapDetailsSha256
Definition: client.h:164
void ShowMessageBox(const char *pTitle, const char *pMessage, EMessageBoxType Type=MESSAGE_BOX_TYPE_ERROR) override
Definition: client.cpp:5272
static void Con_Disconnect(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3450
void OnEnterGame(bool Dummy)
Definition: client.cpp:445
const char * GetCurrentMapPath() const override
Definition: client.cpp:4986
static void Con_RconLogin(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3660
bool m_DummySendConnInfo
Definition: client.h:185
CSnapItem SnapGetItem(int SnapId, int Index) const override
Definition: client.cpp:818
const char * ConnectAddressString() const override
Definition: client.h:386
CChecksumData * ChecksumData() override
Definition: client.h:523
bool IsSixup() const override
Definition: client.h:382
bool m_SendPassword
Definition: client.h:125
IEngineGraphics * m_pGraphics
Definition: client.h:72
int m_UseTempRconCommands
Definition: client.h:121
int m_ExpectedMaplistEntries
Definition: client.h:127
void Run()
Definition: client.cpp:3008
int64_t m_PredictionMargin
Definition: client.h:179
static void Con_Connect(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3444
IUpdater * m_pUpdater
Definition: client.h:80
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:4366
bool ViewLink(const char *pLink) override
Definition: client.cpp:5179
void LoadDDNetInfo()
Definition: client.cpp:2419
CHttp m_Http
Definition: client.h:81
char m_aPassword[sizeof(g_Config.m_Password)]
Definition: client.h:124
const char * DemoPlayer_Render(const char *pFilename, int StorageType, const char *pVideoName, int SpeedIndex, bool StartPaused=false) override
Definition: client.cpp:3935
INotifications * Notifications()
Definition: client.h:281
CServerBrowser m_ServerBrowser
Definition: client.h:89
void SendMapRequest()
Definition: client.cpp:248
static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4392
INotifications * m_pNotifications
Definition: client.h:77
int ConnectNetTypes() const override
Definition: client.cpp:2500
static void Con_Minimize(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3486
bool m_GenerateTimeoutSeed
Definition: client.h:141
int m_aData[MAX_INPUT_SIZE]
Definition: client.h:176
virtual void InitChecksum()
Definition: client.cpp:4128
int * GetInput(int Tick, int IsDummy) const override
Definition: client.cpp:387
int GetPredictionTime() override
Definition: client.cpp:5059
bool m_AutoCSVRecycle
Definition: client.h:113
IStorage * m_pStorage
Definition: client.h:78
void ToggleWindowVSync() override
Definition: client.cpp:4321
std::vector< SWarning > && QuittingWarnings()
Definition: client.h:521
const char * DummyName() override
Definition: client.cpp:1015
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:831
char m_aCmdConnect[256]
Definition: client.h:143
IEngine * m_pEngine
Definition: client.h:69
int SendMsg(int Conn, CMsgPacker *pMsg, int Flags) override
Definition: client.cpp:170
static void Con_RemoveFavorite(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3739
IOHANDLE m_BenchmarkFile
Definition: client.h:248
void SendReady(int Conn)
Definition: client.cpp:242
bool DummyConnectingDelayed() const override
Definition: client.cpp:726
void RequestDDNetInfo() override
Definition: client.cpp:5035
int SnapNumItems(int SnapId) const override
Definition: client.cpp:839
void OnDemoPlayerMessage(void *pData, int Size) override
Definition: client.cpp:2621
int m_aRconAuthed[NUM_DUMMIES]
Definition: client.h:118
static void Con_DemoSlice(IConsole::IResult *pResult, void *pUserData)
void AutoScreenshot_Cleanup()
Definition: client.cpp:3519
IGraphics::CTextureHandle m_DebugFont
Definition: client.h:106
void AutoCSV_Start() override
Definition: client.cpp:3547
CSnapshotStorage::CHolder m_aDemorecSnapshotHolders[NUM_SNAPSHOT_TYPES]
Definition: client.h:205
char m_aMapDetailsUrl[256]
Definition: client.h:165
CChecksum m_Checksum
Definition: client.h:251
int64_t m_LocalStartTime
Definition: client.h:103
void SendInput()
Definition: client.cpp:322
CServerInfo m_CurrentServerInfo
Definition: client.h:219
int64_t m_GlobalStartTime
Definition: client.h:104
int m_Tick
Definition: client.h:177
bool RconAuthed() const override
Definition: client.h:299
static void Con_DemoSliceBegin(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3759
CDemoEditor m_DemoEditor
Definition: client.h:86
void AutoScreenshot_Start() override
Definition: client.cpp:3501
CDemoRecorder m_aDemoRecorder[RECORDER_MAX]
Definition: client.h:85
bool CtrlShiftKey(int Key, bool &Last)
Definition: client.cpp:3431
void DemoRecorder_AddDemoMarker(int Recorder)
Definition: client.cpp:4055
IDiscord * Discord()
Definition: client.h:274
IEngineTextRender * TextRender()
Definition: client.h:283
IGameClient * GameClient()
Definition: client.h:276
static void Con_StopVideo(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3634
void EnterGame(int Conn) override
Definition: client.cpp:486
CSmoothTime m_aGameTime[NUM_DUMMIES]
Definition: client.h:170
static void Con_BenchmarkQuit(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:4094
IFriends * Foes() override
Definition: client.h:515
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:155
std::mutex m_WarningsMutex
Definition: client.h:242
static void ConchainReplays(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4382
std::vector< SWarning > m_vWarnings
Definition: client.h:243
int m_CurrentServerPingBasicToken
Definition: client.h:223
const char * GetCurrentMap() const override
Definition: client.cpp:4981
IEngineSound * Sound()
Definition: client.h:279
CUpdater m_Updater
Definition: client.h:90
void SendEnterGame(int Conn)
Definition: client.cpp:236
void Disconnect() override
Definition: client.cpp:708
void FinishMapDownload()
Definition: client.cpp:2351
IEngineInput * m_pInput
Definition: client.h:73
static void ConchainFullscreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4297
char m_aRconPassword[sizeof(g_Config.m_SvRconPassword)]
Definition: client.h:120
void GetGpuInfoString(char(&aGpuInfo)[256]) override
Definition: client.cpp:5278
CServerCapabilities m_ServerCapabilities
Definition: client.h:215
bool m_AutoScreenshotRecycle
Definition: client.h:111
const char * DemoPlayer_Play(const char *pFilename, int StorageType) override
Definition: client.cpp:3858
char m_aVersionStr[10]
Definition: client.h:131
int m_aCurrentRecvTick[NUM_DUMMIES]
Definition: client.h:117
int UnpackAndValidateSnapshot(CSnapshot *pFrom, CSnapshot *pTo)
Definition: client.cpp:2279
virtual void SaveReplay(int Length, const char *pFilename="")
Definition: client.cpp:3791
void AutoStatScreenshot_Start() override
Definition: client.cpp:3510
void DemoSliceBegin() override
Definition: client.cpp:3747
int64_t m_CurrentServerNextPingTime
Definition: client.h:227
int MapDownloadTotalsize() const override
Definition: client.h:389
void BenchmarkQuit(int Seconds, const char *pFilename)
Definition: client.cpp:4102
ISteam * m_pSteam
Definition: client.h:76
int UdpConnectivity(int NetType) override
Definition: client.cpp:5135
NETADDR m_aFavoritesGroupAddresses[MAX_SERVER_ADDRESSES]
Definition: client.h:259
void DemoRecorder_UpdateReplayRecorder() override
Definition: client.cpp:4040
int MapDownloadAmount() const override
Definition: client.h:388
std::vector< SWarning > m_vQuittingWarnings
Definition: client.h:244
void AutoCSV_Cleanup()
Definition: client.cpp:3553
bool m_HaveGlobalTcpAddr
Definition: client.h:99
static void Con_RconAuth(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3654
const char * PlayerName() const override
Definition: client.cpp:1002
void ServerBrowserUpdate() override
Definition: client.cpp:4116
static void Con_Rcon(IConsole::IResult *pResult, void *pUserData)
Definition: client.cpp:3648
char m_aConnectAddressStr[MAX_SERVER_ADDRESSES *NETADDR_MAXSTRSIZE]
Definition: client.h:94
static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4402
void SnapSetStaticsize(int ItemType, int Size) override
Definition: client.cpp:847
int m_FavoritesGroupNum
Definition: client.h:258
bool m_aCodeRunAfterJoin[NUM_DUMMIES]
Definition: client.h:140
IGraphics::CTextureHandle GetDebugFont() const override
Definition: client.h:311
const char * ErrorString() const override
Definition: client.cpp:1038
static void ConchainServerBrowserUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition: client.cpp:4121
IEngineSound * m_pSound
Definition: client.h:75
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:3462
bool m_FavoritesGroup
Definition: client.h:256
float GotRconCommandsPercentage() const override
Definition: client.cpp:297
bool UseTempRconCommands() const override
Definition: client.h:300
int m_CurrentServerPingInfoType
Definition: client.h:222
void GetSmoothTick(int *pSmoothTick, float *pSmoothIntraTick, float MixAmount) override
Definition: client.cpp:5094
std::vector< std::string > m_vMaplistEntries
Definition: client.h:128
int64_t m_PingStartTime
Definition: client.h:134
void RegisterInterfaces()
Definition: client.cpp:2957
int64_t m_CurrentServerInfoRequestTime
Definition: client.h:220
const char * LatestVersion() const override
Definition: client.cpp:381
bool m_ServerSentCapabilities
Definition: client.h:214
void DummyConnect() override
Definition: client.cpp:731
IConfigManager * m_pConfigManager
Definition: client.h:64
void SetWindowParams(int FullscreenMode, bool IsBorderless) override
Definition: client.cpp:4290
IConfigManager * ConfigManager()
Definition: client.h:272
bool ConnectionProblems() const override
Definition: client.cpp:317
bool RaceRecord_IsRecording() override
Definition: client.cpp:5030
Definition: config.h:23
Definition: demoedit.h:11
Definition: demo.h:188
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:308
Definition: message.h:10
Definition: network.h:566
const NETADDR * ServerAddress() const
Definition: network.h:597
Definition: packer.h:38
Definition: serverbrowser.h:235
Definition: client.h:52
bool m_SyncWeaponInput
Definition: client.h:58
bool m_AnyPlayerFlag
Definition: client.h:55
bool m_ChatTimeoutCode
Definition: client.h:54
bool m_AllowDummy
Definition: client.h:57
bool m_PingEx
Definition: client.h:56
Definition: serverbrowser.h:23
Definition: smooth_time.h:12
Definition: snapshot.h:74
Definition: snapshot.h:118
Definition: snapshot.h:115
Definition: snapshot.h:31
@ MAX_SIZE
Definition: snapshot.h:52
Definition: packer.h:54
Definition: updater.h:45
Definition: client.h:36
EMessageBoxType
Definition: client.h:339
@ MESSAGE_BOX_TYPE_ERROR
Definition: client.h:340
EClientState
Definition: client.h:49
EClientState State() const
Definition: client.h:137
@ NUM_SNAPSHOT_TYPES
Definition: client.h:234
@ NUM_CONNS
Definition: client.h:122
@ CONN_MAIN
Definition: client.h:119
Definition: config.h:9
Definition: console.h:47
Definition: console.h:18
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition: console.h:94
Definition: demo.h:102
Definition: discord.h:8
Definition: editor.h:8
virtual bool HasUnsavedData() const =0
Definition: graphics.h:487
Definition: input.h:204
Definition: map.h:35
Definition: sound.h:115
Definition: textrender.h:375
Definition: engine.h:15
Definition: favorites.h:14
Definition: friends.h:19
Definition: client.h:349
Definition: graphics.h:201
Definition: http.h:12
Definition: logger.h:68
Definition: notifications.h:7
Definition: steam.h:9
Definition: storage.h:20
Definition: updater.h:7
@ RECORDER_MAX
Definition: client.h:29
bool(* CLIENTFUNC_FILTER)(const void *pData, int DataSize, void *pUser)
Definition: client.h:32
CConfig g_Config
Definition: config.cpp:12
@ NUM_DUMMIES
Definition: enums.h:8
@ MAX_SERVER_ADDRESSES
Definition: protocol.h:86
@ MAX_INPUT_SIZE
Definition: protocol.h:94
@ MAX_NAME_LENGTH
Definition: protocol.h:97
void * IOHANDLE
Definition: logger.h:12
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:144
Definition: uuid_manager.h:17
Definition: types.h:67
Definition: hash.h:15
Definition: warning.h:5
const NETADDR NETADDR_ZEROED
Definition: system.cpp:1002
@ NETADDR_MAXSTRSIZE
Definition: types.h:45
@ IO_MAX_PATH_LENGTH
Definition: types.h:43
Definition: checksum.h:31
CChecksumData m_Data
Definition: checksum.h:33
const CUuid UUID_ZEROED
Definition: uuid_manager.cpp:14