DDNet 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 "graph.h"
7#include "smooth_time.h"
8
9#include <base/hash.h>
10#include <base/types.h>
11
12#include <engine/client.h>
15#include <engine/client/ghost.h>
18#include <engine/editor.h>
19#include <engine/graphics.h>
20#include <engine/http.h>
22#include <engine/shared/demo.h>
23#include <engine/shared/fifo.h>
25#include <engine/textrender.h>
26#include <engine/warning.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 IEngineSound;
42class IFriends;
43class ILogger;
44class ISteam;
45class INotifications;
46class IStorage;
47class IUpdater;
48
50{
51public:
52 bool m_ChatTimeoutCode = false;
53 bool m_AnyPlayerFlag = false;
54 bool m_PingEx = false;
55 bool m_AllowDummy = false;
56 bool m_SyncWeaponInput = false;
57};
58
60{
61 // needed interfaces
63 CConfig *m_pConfig = nullptr;
64 IConsole *m_pConsole = nullptr;
65 IDiscord *m_pDiscord = nullptr;
66 IEditor *m_pEditor = nullptr;
67 IEngine *m_pEngine = nullptr;
71 IEngineHttp *m_pHttp = nullptr;
74 ISteam *m_pSteam = nullptr;
76 IStorage *m_pStorage = nullptr;
78 IUpdater *m_pUpdater = nullptr;
79
91
93
95 bool m_Sixup;
96
97 bool m_HaveGlobalTcpAddr = false;
99
100 uint64_t m_aSnapshotParts[NUM_DUMMIES] = {0, 0};
101 int64_t m_LocalStartTime = 0;
102 int64_t m_GlobalStartTime = 0;
103
105
107
111 bool m_AutoCSVRecycle = false;
112 bool m_EditorActive = false;
113
117 char m_aRconUsername[64] = "";
122 char m_aPassword[sizeof(g_Config.m_Password)] = "";
123 bool m_SendPassword = false;
124
126 std::vector<std::string> m_vMaplistEntries;
127
128 // version-checking
129 char m_aVersionStr[10] = "0";
130
131 // pinging
132 int64_t m_PingStartTime = 0;
133
134 char m_aTimeoutCodes[NUM_DUMMIES][32] = {"", ""};
135 bool m_aDidPostConnect[NUM_DUMMIES] = {false, false};
137
138 char m_aCmdConnect[256] = "";
141
142 // map download
143 char m_aMapDownloadUrl[256] = "";
144 std::shared_ptr<IHttpRequest> m_pMapdownloadTask = nullptr;
147 char m_aMapdownloadName[256] = "";
153 std::optional<SHA256_DIGEST> m_MapdownloadSha256;
154
156 {
157 public:
158 char m_aName[256];
160 int m_Crc;
162 char m_aUrl[256];
163 };
164 std::optional<CMapDetails> m_MapDetails;
165
167 std::shared_ptr<IHttpRequest> 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#if defined(CONF_PLATFORM_IOS)
192 bool m_DummyReconnectOnResume = false;
193#endif
194
195 // graphs
199
200 // the game snapshots are modifiable by the game
203
207
210
214
215 std::deque<std::shared_ptr<CDemoEdit>> m_EditJobs;
216
217 //
221
223
225 int64_t m_CurrentServerInfoRequestTime = -1; // >= 0 should request, == -1 got info
226
231 int64_t m_CurrentServerCurrentPingTime = -1; // >= 0 request running
232 int64_t m_CurrentServerNextPingTime = -1; // >= 0 should request
233
234 // version info
246
247 std::mutex m_WarningsMutex;
248 std::vector<SWarning> m_vWarnings;
249 std::vector<SWarning> m_vQuittingWarnings;
250
252
255
259
260 // favorite command handling
261 bool m_FavoritesGroup = false;
265
267 int MaxLatencyTicks() const;
268 int PredictionMargin() const;
269
270 std::shared_ptr<ILogger> m_pFileLogger = nullptr;
271 std::shared_ptr<ILogger> m_pStdoutLogger = nullptr;
272
273 // For RenderDebug function
276 std::chrono::nanoseconds m_NetstatsLastUpdate = std::chrono::nanoseconds(0);
277
278 // For DummyName function
280
281public:
283 CConfig *Config() { return m_pConfig; }
285 IEngine *Engine() { return m_pEngine; }
287 const IGameClient *GameClient() const { return m_pGameClient; }
291 ISteam *Steam() { return m_pSteam; }
296 IHttp *Http() { return m_pHttp; }
297
298 CClient();
299
300 // ----- send functions -----
301 int SendMsg(int Conn, CMsgPacker *pMsg, int Flags) override;
302 // Send via the currently active client (main/dummy)
303 int SendMsgActive(CMsgPacker *pMsg, int Flags) override;
304
305 void SendInfo(int Conn);
306 void SendEnterGame(int Conn);
307 void SendReady(int Conn);
308 void SendMapRequest();
309
310 bool RconAuthed() const override { return m_aRconAuthed[g_Config.m_ClDummy] != 0; }
311 bool UseTempRconCommands() const override { return m_UseTempRconCommands != 0; }
312 void RconAuth(const char *pName, const char *pPassword, bool Dummy = g_Config.m_ClDummy) override;
313 void Rcon(const char *pCmd) override;
314 bool ReceivingRconCommands() const override { return m_ExpectedRconCommands > 0; }
315 float GotRconCommandsPercentage() const override;
316 bool ReceivingMaplist() const override { return m_ExpectedMaplistEntries > 0; }
317 float GotMaplistPercentage() const override;
318 const std::vector<std::string> &MaplistEntries() const override { return m_vMaplistEntries; }
319
320 bool ConnectionProblems() const override;
321
323
324 void SendInput();
325
326 // TODO: OPT: do this a lot smarter!
327 int *GetInput(int Tick, int IsDummy) const override;
328
329 const char *LatestVersion() const override;
330
331 // ------ state handling -----
333
334 // called when the map is loaded and we should init for a new round
335 void OnEnterGame(bool Dummy);
336 void EnterGame(int Conn) override;
337
338 // called once after being ingame for 1 second
339 void OnPostConnect(int Conn);
340
341 void Connect(const char *pAddress, const char *pPassword = nullptr) override;
342 void DisconnectWithReason(const char *pReason);
343 void Disconnect() override;
344
345 void DummyDisconnect(const char *pReason) override;
346 void DummyConnect() override;
347 bool DummyConnected() const override;
348 bool DummyConnecting() const override;
349 bool DummyConnectingDelayed() const override;
350 bool DummyAllowed() const override;
351
352 const CServerInfo &ServerInfo() const override;
353 void ServerInfoRequest();
355
356 void LoadDebugFont();
357
358 // ---
359
360 int GetPredictionTime() override;
361 CSnapItem SnapGetItem(int SnapId, int Index) const override;
362 int GetPredictionTick() override;
363 const void *SnapFindItem(int SnapId, int Type, int Id) const override;
364 int SnapNumItems(int SnapId) const override;
365 void SnapSetStaticsize(int ItemType, int Size) override;
366 void SnapSetStaticsize7(int ItemType, int Size) override;
367
368 void Render();
369 void RenderDebug();
370 void RenderGraphs();
371
372 void Restart() override;
373 void Quit() override;
374 void ResetSocket();
375#if defined(CONF_PLATFORM_IOS)
376 void RecreateBrokenSockets();
377#endif
378
379 const char *PlayerName() const override;
380 const char *DummyName() override;
381 const char *ErrorString() const override;
382
383 const char *LoadMap(const char *pName, const char *pFilename, const std::optional<SHA256_DIGEST> &WantedSha256, unsigned WantedCrc);
384 const char *LoadMapSearch(const char *pMapName, const std::optional<SHA256_DIGEST> &WantedSha256, int WantedCrc);
385
386 int TranslateSysMsg(int *pMsgId, bool System, CUnpacker *pUnpacker, CPacker *pPacker, CNetChunk *pPacket, bool *pIsExMsg);
387
389 void ProcessConnlessPacket(CNetChunk *pPacket);
390 void ProcessServerInfo(int Type, NETADDR *pFrom, const void *pData, int DataSize);
391 void ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy);
392
394
395 void ResetMapDownload(bool ResetActive);
396 void FinishMapDownload();
397
398 EInfoState InfoState() const override { return m_InfoState; }
399 void RequestDDNetInfo() override;
400 void ResetDDNetInfoTask();
401 void LoadDDNetInfo();
402
403 bool IsSixup() const override { return m_Sixup; }
404
405 const NETADDR &ServerAddress() const override { return *m_aNetClient[CONN_MAIN].ServerAddress(); }
406 int ConnectNetTypes() const override;
407 const char *ConnectAddressString() const override { return m_aConnectAddressStr; }
408 const char *MapDownloadName() const override { return m_aMapdownloadName; }
409 int MapDownloadAmount() const override { return !m_pMapdownloadTask ? m_MapdownloadAmount : (int)m_pMapdownloadTask->Current(); }
410 int MapDownloadTotalsize() const override { return !m_pMapdownloadTask ? m_MapdownloadTotalsize : (int)m_pMapdownloadTask->Size(); }
411
412 void PumpNetwork();
413
414 void OnDemoPlayerSnapshot(void *pData, int Size) override;
415 void OnDemoPlayerMessage(void *pData, int Size) override;
416
417 void Update();
418
419 void RegisterInterfaces();
420 void InitInterfaces();
421
422 void Run();
423
424 bool InitNetworkClient(char *pError, size_t ErrorSize);
425 bool InitNetworkClientImpl(NETADDR BindAddr, int Conn, char *pError, size_t ErrorSize);
426 bool CtrlShiftKey(int Key, bool &Last);
427
428 static void Con_Connect(IConsole::IResult *pResult, void *pUserData);
429 static void Con_Disconnect(IConsole::IResult *pResult, void *pUserData);
430
431 static void Con_DummyConnect(IConsole::IResult *pResult, void *pUserData);
432 static void Con_DummyDisconnect(IConsole::IResult *pResult, void *pUserData);
433 static void Con_DummyResetInput(IConsole::IResult *pResult, void *pUserData);
434
435 static void Con_Quit(IConsole::IResult *pResult, void *pUserData);
436 static void Con_Restart(IConsole::IResult *pResult, void *pUserData);
437 static void Con_DemoPlay(IConsole::IResult *pResult, void *pUserData);
438 static void Con_DemoSpeed(IConsole::IResult *pResult, void *pUserData);
439 static void Con_Minimize(IConsole::IResult *pResult, void *pUserData);
440 static void Con_Ping(IConsole::IResult *pResult, void *pUserData);
441 static void ConNetReset(IConsole::IResult *pResult, void *pUserData);
442 static void Con_Screenshot(IConsole::IResult *pResult, void *pUserData);
443
444#if defined(CONF_VIDEORECORDER)
445 void StartVideo(const char *pFilename, bool WithTimestamp);
446 static void Con_StartVideo(IConsole::IResult *pResult, void *pUserData);
447 static void Con_StopVideo(IConsole::IResult *pResult, void *pUserData);
448 const char *DemoPlayer_Render(const char *pFilename, int StorageType, const char *pVideoName, int SpeedIndex, bool StartPaused = false) override;
449#endif
450
451 static void Con_Rcon(IConsole::IResult *pResult, void *pUserData);
452 static void Con_RconAuth(IConsole::IResult *pResult, void *pUserData);
453 static void Con_RconLogin(IConsole::IResult *pResult, void *pUserData);
454 static void Con_BeginFavoriteGroup(IConsole::IResult *pResult, void *pUserData);
455 static void Con_EndFavoriteGroup(IConsole::IResult *pResult, void *pUserData);
456 static void Con_AddFavorite(IConsole::IResult *pResult, void *pUserData);
457 static void Con_RemoveFavorite(IConsole::IResult *pResult, void *pUserData);
458 static void Con_Play(IConsole::IResult *pResult, void *pUserData);
459 static void Con_Record(IConsole::IResult *pResult, void *pUserData);
460 static void Con_StopRecord(IConsole::IResult *pResult, void *pUserData);
461 static void Con_AddDemoMarker(IConsole::IResult *pResult, void *pUserData);
462 static void Con_BenchmarkQuit(IConsole::IResult *pResult, void *pUserData);
463 static void ConchainServerBrowserUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
464 static void ConchainFullscreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
465 static void ConchainWindowBordered(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
466 static void ConchainWindowScreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
467 static void ConchainWindowVSync(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
468 static void ConchainWindowResize(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
469 static void ConchainTimeoutSeed(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
470 static void ConchainPassword(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
471 static void ConchainReplays(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
472 static void ConchainInputFifo(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
473 static void ConchainNetReset(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
474 static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
475 static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);
476
477 static void Con_DemoSlice(IConsole::IResult *pResult, void *pUserData);
478 static void Con_DemoSliceBegin(IConsole::IResult *pResult, void *pUserData);
479 static void Con_DemoSliceEnd(IConsole::IResult *pResult, void *pUserData);
480 static void Con_SaveReplay(IConsole::IResult *pResult, void *pUserData);
481
482 void RegisterCommands();
483
484 const char *DemoPlayer_Play(const char *pFilename, int StorageType) override;
485 void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder) override;
486 void DemoRecorder_HandleAutoStart() override;
487 void DemoRecorder_UpdateReplayRecorder() override;
488 void DemoRecorder_AddDemoMarker(int Recorder);
489 IDemoRecorder *DemoRecorder(int Recorder) override;
491
492 void AutoScreenshot_Start() override;
493 void AutoStatScreenshot_Start() override;
496
497 void AutoCSV_Start() override;
498 void AutoCSV_Cleanup();
499
500 void ServerBrowserUpdate() override;
501
502 void HandleConnectAddress(const NETADDR *pAddr);
503 void HandleConnectLink(const char *pLink);
504 void HandleDemoPath(const char *pPath);
505 void HandleMapPath(const char *pPath);
506
507 virtual void InitChecksum();
508 virtual int HandleChecksum(int Conn, CUuid Uuid, CUnpacker *pUnpacker);
509
510 // gfx
511 void Notify(const char *pTitle, const char *pMessage) override;
512 void OnWindowResize() override;
513 void BenchmarkQuit(int Seconds, const char *pFilename);
514
515 void UpdateAndSwap() override;
516
517 // DDRace
518
519 void GenerateTimeoutSeed() override;
520 void GenerateTimeoutCodes(const NETADDR *pAddrs, int NumAddrs);
521
522 void RaceRecord_Start(const char *pFilename) override;
523 void RaceRecord_Stop() override;
524 bool RaceRecord_IsRecording() override;
525
526 void DemoSliceBegin() override;
527 void DemoSliceEnd() override;
528 void DemoSlice(const char *pDstPath, CLIENTFUNC_FILTER pfnFilter, void *pUser) override;
529 virtual void SaveReplay(int Length, const char *pFilename = "");
530
531 bool EditorHasUnsavedData() const override { return m_pEditor->HasUnsavedData(); }
532
533 IFriends *Foes() override { return &m_Foes; }
534
535 void GetSmoothTick(int *pSmoothTick, float *pSmoothIntraTick, float MixAmount) override;
536
537 void AddWarning(const SWarning &Warning) override;
538 std::optional<SWarning> CurrentWarning() override;
539 std::vector<SWarning> &&QuittingWarnings() { return std::move(m_vQuittingWarnings); }
540
542 int UdpConnectivity(int NetType) override;
543
544 bool ViewLink(const char *pLink) override;
545 bool ViewFile(const char *pFilename) override;
546
547#if defined(CONF_FAMILY_WINDOWS)
548 void ShellRegister() override;
549 void ShellUnregister() override;
550#endif
551
552 std::optional<int> ShowMessageBox(const IGraphics::CMessageBox &MessageBox) override;
553 void GetGpuInfoString(char (&aGpuInfo)[512]) override;
554 void SetLoggers(std::shared_ptr<ILogger> &&pFileLogger, std::shared_ptr<ILogger> &&pStdoutLogger);
555};
556
557#endif
Definition client.h:156
SHA256_DIGEST m_Sha256
Definition client.h:161
int m_Crc
Definition client.h:160
char m_aUrl[256]
Definition client.h:162
char m_aName[256]
Definition client.h:158
int m_Size
Definition client.h:159
int SendMsgActive(CMsgPacker *pMsg, int Flags) override
Definition client.cpp:235
CSnapshotDelta m_SnapshotDeltaSixup
Definition client.h:212
NETSTATS m_NetstatsCurrent
Definition client.h:275
bool m_AutoStatScreenshotRecycle
Definition client.h:110
int64_t m_OwnExecutableSize
Definition client.h:257
void Restart() override
Definition client.cpp:1105
bool m_DummyDeactivateOnReconnect
Definition client.h:190
char m_aCmdPlayDemo[IO_MAX_PATH_LENGTH]
Definition client.h:139
void GenerateTimeoutCodes(const NETADDR *pAddrs, int NumAddrs)
Definition client.cpp:609
IOHANDLE m_OwnExecutable
Definition client.h:258
struct CClient::CVersionInfo m_VersionInfo
static void ConchainWindowScreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4474
std::shared_ptr< ILogger > m_pFileLogger
Definition client.h:270
bool ViewFile(const char *pFilename) override
Definition client.cpp:5506
char m_aRconUsername[64]
Definition client.h:117
void GenerateTimeoutSeed() override
Definition client.cpp:604
std::shared_ptr< IHttpRequest > m_pMapdownloadTask
Definition client.h:144
bool InitNetworkClient(char *pError, size_t ErrorSize)
Definition client.cpp:3563
static void Con_EndFavoriteGroup(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3895
char m_aTimeoutCodes[NUM_DUMMIES][32]
Definition client.h:134
void HandleConnectLink(const char *pLink)
Definition client.cpp:4718
static void ConchainWindowResize(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4547
void ServerInfoRequest()
Definition client.cpp:894
void OnWindowResize() override
Definition client.cpp:4525
void UpdateAndSwap() override
Definition client.cpp:4331
int m_SnapCrcErrors
Definition client.h:108
IDiscord * m_pDiscord
Definition client.h:65
IEngine * Engine()
Definition client.h:285
ISteam * Steam()
Definition client.h:291
void AutoStatScreenshot_Cleanup()
Definition client.cpp:3744
int GetPredictionTick() override
Definition client.cpp:5363
void OnPostConnect(int Conn)
Definition client.cpp:530
IEditor * m_pEditor
Definition client.h:66
IOHANDLE m_MapdownloadFileTemp
Definition client.h:148
void RconAuth(const char *pName, const char *pPassword, bool Dummy=g_Config.m_ClDummy) override
Definition client.cpp:293
static void Con_Quit(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3679
const char * LoadMap(const char *pName, const char *pFilename, const std::optional< SHA256_DIGEST > &WantedSha256, unsigned WantedCrc)
Definition client.cpp:1229
static void ConchainWindowBordered(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4502
const CServerInfo & ServerInfo() const override
Definition client.cpp:889
static void Con_DemoSpeed(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4185
static void Con_SaveReplay(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3982
void ResetDDNetInfoTask()
Definition client.cpp:2542
void HandleDemoPath(const char *pPath)
Definition client.cpp:4735
static void ConchainPassword(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4565
void OnDemoPlayerSnapshot(void *pData, int Size) override
Definition client.cpp:2756
CFifo m_Fifo
Definition client.h:251
bool m_FavoritesGroupAllowPing
Definition client.h:262
int64_t m_CurrentServerCurrentPingTime
Definition client.h:231
static void Con_Ping(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3697
int64_t m_LastRenderTime
Definition client.h:106
bool PreprocessConnlessPacket7(CNetChunk *pPacket)
Definition sixup_translate_connless.cpp:7
void Notify(const char *pTitle, const char *pMessage) override
Definition client.cpp:4516
IStorage * Storage()
Definition client.h:293
void RenderDebug()
Definition client.cpp:955
IEngineInput * Input()
Definition client.h:289
bool InitNetworkClientImpl(NETADDR BindAddr, int Conn, char *pError, size_t ErrorSize)
Definition client.cpp:3586
static void Con_Screenshot(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3778
CFriends m_Friends
Definition client.h:89
void SendInfo(int Conn)
Definition client.cpp:240
IConsole * m_pConsole
Definition client.h:64
void DemoRecorder_HandleAutoStart() override
Definition client.cpp:4223
const char * MapDownloadName() const override
Definition client.h:408
void HandleMapPath(const char *pPath)
Definition client.cpp:4740
void RegisterCommands()
Definition client.cpp:4622
CGraph m_aGametimeMarginGraphs[NUM_DUMMIES]
Definition client.h:197
bool m_Sixup
Definition client.h:95
CGhostLoader m_GhostLoader
Definition client.h:86
void ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
Definition client.cpp:1638
CUuid m_ConnectionId
Definition client.h:94
CSmoothTime m_PredictedTime
Definition client.h:171
static void ConchainNetReset(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4594
int UnpackAndValidateSnapshot(CSnapshot *pFrom, CSnapshotBuffer *pTo)
Definition client.cpp:2433
const std::vector< std::string > & MaplistEntries() const override
Definition client.h:318
char m_aMapdownloadFilename[256]
Definition client.h:145
static void Con_DemoPlay(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4169
static void ConchainInputFifo(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4583
static void Con_Play(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4163
int m_CurrentServerPingToken
Definition client.h:229
void DemoSlice(const char *pDstPath, CLIENTFUNC_FILTER pfnFilter, void *pUser) override
Definition client.cpp:4065
void RenderGraphs()
Definition client.cpp:1082
void ProcessServerInfo(int Type, NETADDR *pFrom, const void *pData, int DataSize)
Definition client.cpp:1397
void Connect(const char *pAddress, const char *pPassword=nullptr) override
Definition client.cpp:622
struct CClient::@372024022133317017254322342152103352265132301224 m_aInputs[NUM_DUMMIES][200]
virtual int HandleChecksum(int Conn, CUuid Uuid, CUnpacker *pUnpacker)
Definition client.cpp:4376
static void Con_BeginFavoriteGroup(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3877
int m_ExpectedRconCommands
Definition client.h:120
IEngineGraphics * Graphics()
Definition client.h:288
int m_aAckGameTick[NUM_DUMMIES]
Definition client.h:114
int m_MapdownloadTotalsize
Definition client.h:152
bool m_CanReceiveServerCapabilities
Definition client.h:218
CSnapshotStorage::CHolder * m_aapSnapshots[NUM_DUMMIES][NUM_SNAPSHOT_TYPES]
Definition client.h:202
CDemoRecorder m_aDemoRecorders[RECORDER_MAX]
Definition client.h:82
void Rcon(const char *pCmd) override
Definition client.cpp:318
CGraph m_aInputtimeMarginGraphs[NUM_DUMMIES]
Definition client.h:196
std::shared_ptr< ILogger > m_pStdoutLogger
Definition client.h:271
bool ReceivingMaplist() const override
Definition client.h:316
NETADDR m_GlobalTcpAddr
Definition client.h:98
static void Con_AddDemoMarker(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4310
static void Con_Restart(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3685
CFriends m_Foes
Definition client.h:90
static void ConchainWindowVSync(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4533
void StartVideo(const char *pFilename, bool WithTimestamp)
Definition client.cpp:3800
NETSTATS m_NetstatsPrev
Definition client.h:274
CSnapshotStorage m_aSnapshotStorage[NUM_DUMMIES]
Definition client.h:201
CConfig * Config()
Definition client.h:283
char m_aMapdownloadName[256]
Definition client.h:147
float GotMaplistPercentage() const override
Definition client.cpp:335
static void Con_DummyResetInput(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3673
CClient()
Definition client.cpp:112
IEngineHttp * m_pHttp
Definition client.h:71
bool DummyConnecting() const override
Definition client.cpp:806
IGameClient * m_pGameClient
Definition client.h:69
CSnapshotDelta * SnapshotDelta()
Definition client.cpp:103
void AddWarning(const SWarning &Warning) override
Definition client.cpp:5402
void Render()
Definition client.cpp:1214
int m_aSnapshotIncomingDataSize[NUM_DUMMIES]
Definition client.h:206
uint64_t m_aSnapshotParts[NUM_DUMMIES]
Definition client.h:100
CSnapshotDelta m_SnapshotDelta
Definition client.h:211
void DemoSliceEnd() override
Definition client.cpp:3964
char m_aMapdownloadFilenameTemp[256]
Definition client.h:146
void DummyDisconnect(const char *pReason) override
Definition client.cpp:865
char m_aAutomaticDummyName[MAX_NAME_LENGTH]
Definition client.h:279
static void Con_Record(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4283
void SetCurrentServerInfo(const CServerInfo &ServerInfo)
Definition client.cpp:900
int m_MapdownloadAmount
Definition client.h:151
void DisconnectWithReason(const char *pReason)
Definition client.cpp:735
std::optional< SWarning > CurrentWarning() override
Definition client.cpp:5408
char m_aaSnapshotIncomingData[NUM_DUMMIES][CSnapshot::MAX_SIZE]
Definition client.h:205
const NETADDR & ServerAddress() const override
Definition client.h:405
void SnapSetStaticsize7(int ItemType, int Size) override
Definition client.cpp:950
static void Con_DummyConnect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3661
void HandleConnectAddress(const NETADDR *pAddr)
Definition client.cpp:4713
bool m_DummyReconnectOnReload
Definition client.h:189
bool m_EditorActive
Definition client.h:112
void LoadDebugFont()
Definition client.cpp:909
IEngineTextRender * m_pTextRender
Definition client.h:77
int m_MapdownloadChunk
Definition client.h:149
void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder) override
Definition client.cpp:4191
bool DummyAllowed() const override
Definition client.cpp:884
void PumpNetwork()
Definition client.cpp:2672
int m_GotRconCommands
Definition client.h:121
CConfig * m_pConfig
Definition client.h:63
void ResetMapDownload(bool ResetActive)
Definition client.cpp:2480
void SetState(EClientState State)
Definition client.cpp:431
void RaceRecord_Stop() override
Definition client.cpp:5319
bool m_LastDummy
Definition client.h:184
std::optional< SHA256_DIGEST > m_MapdownloadSha256
Definition client.h:153
static void Con_DemoSliceEnd(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3976
static void Con_StopRecord(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4304
bool DummyConnected() const override
Definition client.cpp:801
std::deque< std::shared_ptr< CDemoEdit > > m_EditJobs
Definition client.h:215
void RaceRecord_Start(const char *pFilename) override
Definition client.cpp:5299
CNetClient m_aNetClient[NUM_CONNS]
Definition client.h:80
bool EditorHasUnsavedData() const override
Definition client.h:531
void ProcessConnlessPacket(CNetChunk *pPacket)
Definition client.cpp:1367
void SetLoggers(std::shared_ptr< ILogger > &&pFileLogger, std::shared_ptr< ILogger > &&pStdoutLogger)
Definition client.cpp:5638
char m_aMapDownloadUrl[256]
Definition client.h:143
IFavorites * m_pFavorites
Definition client.h:68
CDemoPlayer m_DemoPlayer
Definition client.h:81
int PredictionMargin() const
Definition client.cpp:5428
bool m_DummyConnected
Definition client.h:187
static void Con_StartVideo(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3786
char m_aCmdEditMap[IO_MAX_PATH_LENGTH]
Definition client.h:140
void UpdateDemoIntraTimers()
Definition client.cpp:2815
bool m_DummyConnecting
Definition client.h:186
bool ReceivingRconCommands() const override
Definition client.h:314
IUpdater * Updater()
Definition client.h:295
IHttp * Http()
Definition client.h:296
CDemoRecorder m_aDemoRecordersSixup[RECORDER_MAX]
Definition client.h:83
CGhostRecorder m_GhostRecorder
Definition client.h:85
int64_t m_BenchmarkStopTime
Definition client.h:254
void Quit() override
Definition client.cpp:1110
IDemoRecorder * DemoRecorder(int Recorder) override
Definition client.cpp:4278
void InitInterfaces()
Definition client.cpp:3145
int MaxLatencyTicks() const
Definition client.cpp:5423
static void Con_AddFavorite(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3912
void Update()
Definition client.cpp:2826
static void Con_Disconnect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3655
void OnEnterGame(bool Dummy)
Definition client.cpp:473
static void Con_RconLogin(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3871
bool m_DummySendConnInfo
Definition client.h:185
CSnapItem SnapGetItem(int SnapId, int Index) const override
Definition client.cpp:916
const char * ConnectAddressString() const override
Definition client.h:407
CDemoRecorder(& DemoRecorders())[RECORDER_MAX]
Definition client.cpp:4269
CChecksumData * ChecksumData() override
Definition client.h:541
bool IsSixup() const override
Definition client.h:403
void ResetSocket()
Definition client.cpp:1115
bool m_SendPassword
Definition client.h:123
IEngineGraphics * m_pGraphics
Definition client.h:70
int m_UseTempRconCommands
Definition client.h:119
int m_ExpectedMaplistEntries
Definition client.h:125
void Run()
Definition client.cpp:3181
static void Con_Connect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3649
std::optional< int > ShowMessageBox(const IGraphics::CMessageBox &MessageBox) override
Definition client.cpp:5586
IUpdater * m_pUpdater
Definition client.h:78
int TranslateSysMsg(int *pMsgId, bool System, CUnpacker *pUnpacker, CPacker *pPacker, CNetChunk *pPacket, bool *pIsExMsg)
Definition sixup_translate_system.cpp:5
static void ConchainTimeoutSeed(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4557
bool ViewLink(const char *pLink) override
Definition client.cpp:5496
void LoadDDNetInfo()
Definition client.cpp:2574
char m_aPassword[sizeof(g_Config.m_Password)]
Definition client.h:122
const char * DemoPlayer_Render(const char *pFilename, int StorageType, const char *pVideoName, int SpeedIndex, bool StartPaused=false) override
Definition client.cpp:4147
INotifications * Notifications()
Definition client.h:292
CServerBrowser m_ServerBrowser
Definition client.h:87
void SendMapRequest()
Definition client.cpp:276
static void ConchainLoglevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4602
INotifications * m_pNotifications
Definition client.h:75
int ConnectNetTypes() const override
Definition client.cpp:2659
static void Con_Minimize(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3691
bool m_GenerateTimeoutSeed
Definition client.h:136
virtual void InitChecksum()
Definition client.cpp:4351
int * GetInput(int Tick, int IsDummy) const override
Definition client.cpp:415
int GetPredictionTime() override
Definition client.cpp:5357
bool m_AutoCSVRecycle
Definition client.h:111
IStorage * m_pStorage
Definition client.h:76
std::vector< SWarning > && QuittingWarnings()
Definition client.h:539
const char * DummyName() override
Definition client.cpp:1186
int m_aCurrentInput[NUM_DUMMIES]
Definition client.h:183
const void * SnapFindItem(int SnapId, int Type, int Id) const override
Definition client.cpp:929
char m_aCmdConnect[256]
Definition client.h:138
IEngine * m_pEngine
Definition client.h:67
int SendMsg(int Conn, CMsgPacker *pMsg, int Flags) override
Definition client.cpp:194
static void Con_RemoveFavorite(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3950
IOHANDLE m_BenchmarkFile
Definition client.h:253
void SendReady(int Conn)
Definition client.cpp:270
bool DummyConnectingDelayed() const override
Definition client.cpp:811
void RequestDDNetInfo() override
Definition client.cpp:5332
int SnapNumItems(int SnapId) const override
Definition client.cpp:937
void OnDemoPlayerMessage(void *pData, int Size) override
Definition client.cpp:2794
int m_aRconAuthed[NUM_DUMMIES]
Definition client.h:116
static void Con_DemoSlice(IConsole::IResult *pResult, void *pUserData)
void AutoScreenshot_Cleanup()
Definition client.cpp:3730
IGraphics::CTextureHandle m_DebugFont
Definition client.h:104
void AutoCSV_Start() override
Definition client.cpp:3758
CSnapshotStorage::CHolder m_aDemorecSnapshotHolders[NUM_SNAPSHOT_TYPES]
Definition client.h:208
EInfoState m_InfoState
Definition client.h:166
CChecksum m_Checksum
Definition client.h:256
int64_t m_LocalStartTime
Definition client.h:101
void SendInput()
Definition client.cpp:350
std::chrono::nanoseconds m_NetstatsLastUpdate
Definition client.h:276
CServerInfo m_CurrentServerInfo
Definition client.h:224
int64_t m_GlobalStartTime
Definition client.h:102
bool m_aDidPostConnect[NUM_DUMMIES]
Definition client.h:135
bool RconAuthed() const override
Definition client.h:310
static void Con_DemoSliceBegin(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3970
CDemoEditor m_DemoEditor
Definition client.h:84
void AutoScreenshot_Start() override
Definition client.cpp:3712
bool CtrlShiftKey(int Key, bool &Last)
Definition client.cpp:3634
void DemoRecorder_AddDemoMarker(int Recorder)
Definition client.cpp:4264
IDiscord * Discord()
Definition client.h:284
IEngineTextRender * TextRender()
Definition client.h:294
IGameClient * GameClient()
Definition client.h:286
static void Con_StopVideo(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3845
void EnterGame(int Conn) override
Definition client.cpp:514
CSmoothTime m_aGameTime[NUM_DUMMIES]
Definition client.h:170
static void Con_BenchmarkQuit(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:4317
EInfoState InfoState() const override
Definition client.h:398
IFriends * Foes() override
Definition client.h:533
float m_LastDummyConnectTime
Definition client.h:188
CUuid m_CurrentServerPingUuid
Definition client.h:230
bool ServerCapAnyPlayerFlag() const override
Definition client.h:222
int m_MapdownloadCrc
Definition client.h:150
std::mutex m_WarningsMutex
Definition client.h:247
static void ConchainReplays(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4573
std::vector< SWarning > m_vWarnings
Definition client.h:248
const IGameClient * GameClient() const
Definition client.h:287
int m_CurrentServerPingBasicToken
Definition client.h:228
IEngineSound * Sound()
Definition client.h:290
CUpdater m_Updater
Definition client.h:88
void SendEnterGame(int Conn)
Definition client.cpp:264
void Disconnect() override
Definition client.cpp:793
void FinishMapDownload()
Definition client.cpp:2512
void GetGpuInfoString(char(&aGpuInfo)[512]) override
Definition client.cpp:5596
IEngineInput * m_pInput
Definition client.h:72
std::shared_ptr< IHttpRequest > m_pDDNetInfoTask
Definition client.h:167
static void ConchainFullscreen(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4488
char m_aRconPassword[sizeof(g_Config.m_SvRconPassword)]
Definition client.h:118
CServerCapabilities m_ServerCapabilities
Definition client.h:220
bool m_AutoScreenshotRecycle
Definition client.h:109
const char * DemoPlayer_Play(const char *pFilename, int StorageType) override
Definition client.cpp:4073
CSnapshotBuffer m_aaDemorecSnapshotData[NUM_SNAPSHOT_TYPES][2]
Definition client.h:209
char m_aVersionStr[10]
Definition client.h:129
int m_aCurrentRecvTick[NUM_DUMMIES]
Definition client.h:115
const char * LoadMapSearch(const char *pMapName, const std::optional< SHA256_DIGEST > &WantedSha256, int WantedCrc)
Definition client.cpp:1317
virtual void SaveReplay(int Length, const char *pFilename="")
Definition client.cpp:4006
void AutoStatScreenshot_Start() override
Definition client.cpp:3721
void DemoSliceBegin() override
Definition client.cpp:3958
int64_t m_CurrentServerNextPingTime
Definition client.h:232
int MapDownloadTotalsize() const override
Definition client.h:410
void BenchmarkQuit(int Seconds, const char *pFilename)
Definition client.cpp:4325
ISteam * m_pSteam
Definition client.h:74
int UdpConnectivity(int NetType) override
Definition client.cpp:5433
NETADDR m_aFavoritesGroupAddresses[MAX_SERVER_ADDRESSES]
Definition client.h:264
void DemoRecorder_UpdateReplayRecorder() override
Definition client.cpp:4249
int MapDownloadAmount() const override
Definition client.h:409
std::vector< SWarning > m_vQuittingWarnings
Definition client.h:249
void AutoCSV_Cleanup()
Definition client.cpp:3764
bool m_HaveGlobalTcpAddr
Definition client.h:97
static void Con_RconAuth(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3865
const char * PlayerName() const override
Definition client.cpp:1173
void ServerBrowserUpdate() override
Definition client.cpp:4339
static void Con_Rcon(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3859
char m_aConnectAddressStr[MAX_SERVER_ADDRESSES *NETADDR_MAXSTRSIZE]
Definition client.h:92
static void ConchainStdoutOutputLevel(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4612
void SnapSetStaticsize(int ItemType, int Size) override
Definition client.cpp:945
int m_FavoritesGroupNum
Definition client.h:263
IGraphics::CTextureHandle GetDebugFont() const override
Definition client.h:322
const char * ErrorString() const override
Definition client.cpp:1209
static void ConNetReset(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3706
static void ConchainServerBrowserUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition client.cpp:4344
IEngineSound * m_pSound
Definition client.h:73
int m_aReceivedSnapshots[NUM_DUMMIES]
Definition client.h:204
CGraph m_FpsGraph
Definition client.h:198
static void Con_DummyDisconnect(IConsole::IResult *pResult, void *pUserData)
Definition client.cpp:3667
bool m_FavoritesGroup
Definition client.h:261
float GotRconCommandsPercentage() const override
Definition client.cpp:325
bool UseTempRconCommands() const override
Definition client.h:311
int m_CurrentServerPingInfoType
Definition client.h:227
void GetSmoothTick(int *pSmoothTick, float *pSmoothIntraTick, float MixAmount) override
Definition client.cpp:5392
std::vector< std::string > m_vMaplistEntries
Definition client.h:126
std::optional< CMapDetails > m_MapDetails
Definition client.h:164
int64_t m_PingStartTime
Definition client.h:132
void RegisterInterfaces()
Definition client.cpp:3132
int64_t m_CurrentServerInfoRequestTime
Definition client.h:225
const char * LatestVersion() const override
Definition client.cpp:409
bool m_ServerSentCapabilities
Definition client.h:219
void DummyConnect() override
Definition client.cpp:816
IConfigManager * m_pConfigManager
Definition client.h:62
IConfigManager * ConfigManager()
Definition client.h:282
bool ConnectionProblems() const override
Definition client.cpp:345
bool RaceRecord_IsRecording() override
Definition client.cpp:5327
Definition config.h:30
int m_ClDummy
Definition config.h:257
char m_SvRconPassword[128]
Definition config.h:481
char m_Password[256]
Definition config.h:330
Definition demoedit.h:11
Definition demo.h:208
Definition demo.h:71
Definition demo.h:68
Definition demo.h:23
CDemoRecorder()=default
Definition fifo.h:9
Definition friends.h:12
Definition ghost.h:71
Definition ghost.h:43
Definition graph.h:17
Definition message.h:10
Definition network.h:613
const NETADDR * ServerAddress() const
Definition network.h:646
Definition packer.h:38
Definition serverbrowser.h:251
Definition client.h:50
bool m_SyncWeaponInput
Definition client.h:56
bool m_AnyPlayerFlag
Definition client.h:53
bool m_ChatTimeoutCode
Definition client.h:52
bool m_AllowDummy
Definition client.h:55
bool m_PingEx
Definition client.h:54
Definition serverbrowser.h:27
Definition smooth_time.h:12
Definition snapshot.h:74
Definition snapshot.h:85
Definition snapshot.h:127
Definition snapshot.h:124
Definition snapshot.h:29
@ MAX_SIZE
Definition snapshot.h:50
Definition packer.h:54
Definition updater.h:45
Definition client.h:42
EClientState
Definition client.h:55
EInfoState
Definition client.h:345
@ ERROR
Definition client.h:348
EClientState State() const
Definition client.h:143
@ NUM_CONNS
Definition client.h:128
@ CONN_MAIN
Definition client.h:125
@ NUM_SNAPSHOT_TYPES
Definition client.h:286
Definition config.h:9
Definition console.h:66
Definition console.h:22
void(*) FCommandCallback(IResult *pResult, void *pUserData)
Definition console.h:107
Definition demo.h:107
Definition discord.h:11
Definition editor.h:8
virtual bool HasUnsavedData() const =0
Definition graphics.h:678
Definition http.h:266
Definition input.h:211
Definition sound.h:115
Definition textrender.h:251
Definition engine.h:15
Definition favorites.h:15
Definition friends.h:19
Definition client.h:399
Definition graphics.h:633
Definition graphics.h:261
Definition http.h:256
Definition logger.h:68
Definition notifications.h:7
Definition steam.h:9
Definition storage.h:21
Definition updater.h:7
@ RECORDER_MAX
Definition client.h:35
bool(*) CLIENTFUNC_FILTER(const void *pData, int DataSize, void *pUser)
Definition client.h:38
CConfig g_Config
Definition config.cpp:16
@ NUM_DUMMIES
Definition enums.h:8
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:26
constexpr auto NETADDR_MAXSTRSIZE
Definition types.h:162
const NETADDR NETADDR_ZEROED
Definition net.cpp:124
void * IOHANDLE
Definition logger.h:12
@ MAX_SERVER_ADDRESSES
Definition protocol.h:87
@ MAX_INPUT_SIZE
Definition protocol.h:106
@ MAX_NAME_LENGTH
Definition protocol.h:109
Definition checksum.h:7
Definition client.h:236
int m_State
Definition client.h:244
@ STATE_START
Definition client.h:240
@ STATE_READY
Definition client.h:241
@ STATE_INIT
Definition client.h:239
Definition network.h:142
Definition uuid_manager.h:17
Definition types.h:168
Definition types.h:191
Definition hash.h:12
Definition warning.h:5
Definition checksum.h:31
CChecksumData m_Data
Definition checksum.h:33
const CUuid UUID_ZEROED
Definition uuid_manager.cpp:18