1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
/* Starshatter: The Open Source Project
Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
Copyright (c) 1997-2006, Destroyer Studios LLC.
AUTHOR: John DiCamillo
OVERVIEW
========
UDP-oriented network lobby client class
*/
#ifndef NetLobbyClient_h
#define NetLobbyClient_h
#include "NetLobby.h"
#include "NetClientConfig.h"
// +-------------------------------------------------------------------+
class NetLobbyClient : public NetLobby
{
public:
NetLobbyClient();
NetLobbyClient(const NetAddr& server_addr);
virtual ~NetLobbyClient();
int operator == (const NetLobbyClient& c) const { return this == &c; }
virtual void ExecFrame();
virtual bool Login(bool host=false);
virtual bool Logout();
virtual int GetLastError() const { return exit_code; }
// actions:
virtual bool Ping();
virtual void GameStart();
virtual void GameStop();
virtual void BanUser(NetUser* user);
virtual void AddChat(NetUser* user, const char* msg, bool route=true);
virtual List<NetChatEntry>&
GetChat();
NetAddr GetServerAddr() const { return addr; }
virtual bool IsHost() const { return host; }
virtual bool IsClient() const { return true; }
virtual List<NetUser>& GetUsers();
virtual List<NetCampaignInfo>& GetCampaigns();
virtual List<NetUnitEntry>& GetUnitMap();
virtual void MapUnit(int n, const char* user, bool lock=false);
virtual void SelectMission(DWORD id);
virtual Mission* GetSelectedMission();
virtual List<ModInfo>& GetServerMods();
// overrides for ping support:
virtual const Text& GetMachineInfo();
virtual int GetStatus() const;
virtual int NumUsers();
virtual bool HasHost();
virtual WORD GetGamePort();
protected:
virtual void SendData(int type, Text msg);
virtual void DoServerInfo(NetPeer* peer, Text msg);
virtual void DoServerMods(NetPeer* peer, Text msg);
virtual void DoAuthUser(NetPeer* peer, Text msg);
virtual void DoChat(NetPeer* peer, Text msg);
virtual void DoUserList(NetPeer* peer, Text msg);
virtual void DoMissionList(NetPeer* peer, Text msg);
virtual void DoMissionSelect(NetPeer* peer, Text msg);
virtual void DoMissionData(NetPeer* peer, Text msg);
virtual void DoUnitList(NetPeer* peer, Text msg);
virtual void DoMapUnit(NetPeer* peer, Text msg);
virtual void DoGameStart(NetPeer* peer, Text msg);
virtual void DoExit(NetPeer* peer, Text msg);
DWORD server_id;
NetAddr addr;
bool host;
Text gamepass;
int exit_code;
NetServerInfo server_info;
List<MissionInfo> missions;
bool temporary;
DWORD ping_req_time;
DWORD chat_req_time;
DWORD user_req_time;
DWORD camp_req_time;
DWORD unit_req_time;
DWORD mods_req_time;
};
// +-------------------------------------------------------------------+
#endif // NetLobbyClient_h
|