Skip to content

Commit da42f85

Browse files
committed
cleanup
1 parent 14f0650 commit da42f85

5 files changed

Lines changed: 41 additions & 59 deletions

File tree

GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_Init.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ class WebSocket
3434
void Connect(const char* url);
3535
void Disconnect();
3636

37+
bool IsConnected()
38+
{
39+
return m_bConnected;
40+
}
41+
3742
void Shutdown();
3843

3944
void SendData_RoomChatMessage(const char* szMessage);
@@ -50,6 +55,9 @@ class WebSocket
5055
private:
5156
CURL* m_pCurl = nullptr;
5257
bool m_bConnected = false;
58+
59+
int64_t m_lastPing = -1;
60+
int64_t m_timeBetweenUserPings = 5000;
5361
};
5462

5563
class NetworkRoom

GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,7 +830,7 @@ void WOLLobbyMenuInit( WindowLayout *layout, void *userData )
830830
comboLobbyGroupRoomsID = TheNameKeyGenerator->nameToKey(AsciiString("WOLCustomLobby.wnd:ComboBoxGroupRooms"));
831831
comboLobbyGroupRooms = TheWindowManager->winGetWindowFromId(parent, comboLobbyGroupRoomsID);
832832

833-
GadgetListBoxAddEntryText(listboxLobbyChat, UnicodeString(L"Welcome to C&C Generals NextGen Multiplayer!"), GameMakeColor(255, 194, 15, 255), -1, -1);
833+
GadgetListBoxAddEntryText(listboxLobbyChat, UnicodeString(L"Welcome to Generals Online for Zero Hour!"), GameMakeColor(255, 194, 15, 255), -1, -1);
834834

835835
GadgetTextEntrySetText(textEntryChat, UnicodeString::TheEmptyString);
836836

GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ static Waypoint * findNamedWaypoint(AsciiString name)
201201
// ------------------------------------------------------------------------------------------------
202202
void setFPMode( void )
203203
{
204+
#if !defined(GENERALS_ONLINE)
204205
// Set floating point round mode to CHOP, which only comes
205206
// into play when precision is exceeded. This is necessary
206207
// for the fast float to int routines used elsewhere in the
@@ -219,6 +220,7 @@ void setFPMode( void )
219220
newVal = (newVal & ~_MCW_PC) | (_PC_24 & _MCW_PC);
220221

221222
_controlfp(newVal, _MCW_PC | _MCW_RC);
223+
#endif
222224
}
223225

224226
// ------------------------------------------------------------------------------------------------

GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_Auth.cpp

Lines changed: 14 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ void NGMP_OnlineServices_AuthInterface::BeginLogin()
5757
{
5858
std::string strLoginURI = NGMP_OnlineServicesManager::GetAPIEndpoint("LoginWithToken", false);
5959

60+
#if defined(DEBUG)
6061
static HANDLE MPMutex = NULL;
6162
MPMutex = CreateMutex(NULL, FALSE, "685EAFF2-3216-4265-FFFF-251C5F4B82F3");
62-
if (true)
63+
64+
if (NGMP_OnlineServicesManager::g_Environment == NGMP_OnlineServicesManager::EEnvironment::DEV)
6365
{
6466
// use dev account
6567
NetworkLog("[NGMP] Secondary instance detected... using dev account for testing purposes");
@@ -106,58 +108,8 @@ void NGMP_OnlineServices_AuthInterface::BeginLogin()
106108
}, nullptr);
107109
}
108110
else
111+
#endif
109112
{
110-
if (NGMP_OnlineServicesManager::g_Environment == NGMP_OnlineServicesManager::EEnvironment::DEV)
111-
{
112-
// use dev account
113-
NetworkLog("[NGMP] Secondary instance detected... using dev account for testing purposes");
114-
// login
115-
std::string strToken = "ILOVECODE2";
116-
117-
118-
std::map<std::string, std::string> mapHeaders;
119-
120-
nlohmann::json j;
121-
j["token"] = strToken.c_str();
122-
std::string strPostData = j.dump();
123-
124-
NGMP_OnlineServicesManager::GetInstance()->GetHTTPManager()->SendPOSTRequest(strLoginURI.c_str(), EIPProtocolVersion::DONT_CARE, mapHeaders, strPostData.c_str(), [=](bool bSuccess, int statusCode, std::string strBody)
125-
{
126-
try
127-
{
128-
nlohmann::json jsonObject = nlohmann::json::parse(strBody);
129-
AuthResponse authResp = jsonObject.get<AuthResponse>();
130-
131-
if (authResp.result == EAuthResponseResult::SUCCEEDED)
132-
{
133-
NetworkLog("LOGIN: Logged in");
134-
m_bWaitingLogin = false;
135-
136-
SaveCredentials(authResp.al_token.c_str());
137-
138-
// store data locally
139-
m_strToken = authResp.ss_token;
140-
m_userID = authResp.user_id;
141-
m_strDisplayName = authResp.display_name;
142-
143-
// trigger callback
144-
OnLoginComplete(true, authResp.ws_uri.c_str(), authResp.ws_token.c_str());
145-
}
146-
else if (authResp.result == EAuthResponseResult::FAILED)
147-
{
148-
NetworkLog("LOGIN: Login failed, dev account cannot reauth");
149-
}
150-
}
151-
catch (...)
152-
{
153-
154-
}
155-
156-
157-
}, nullptr);
158-
}
159-
else
160-
{
161113
if (DoCredentialsExist())
162114
{
163115
std::string strToken = GetCredentials();
@@ -222,7 +174,6 @@ void NGMP_OnlineServices_AuthInterface::BeginLogin()
222174

223175
ShellExecuteA(NULL, "open", strURI.c_str(), NULL, NULL, SW_SHOWNORMAL);
224176
}
225-
}
226177
}
227178
}
228179

@@ -329,13 +280,22 @@ void NGMP_OnlineServices_AuthInterface::OnLoginComplete(bool bSuccess, const cha
329280

330281
NGMP_OnlineServicesManager::GetInstance()->ProcessMOTD(motdResp.MOTD.c_str());
331282

283+
bool bResult = true;
284+
285+
// WS should be connected by this point
286+
bool bWSConnected = NGMP_OnlineServicesManager::GetInstance()->GetWebSocket()->IsConnected();
287+
if (!bWSConnected)
288+
{
289+
bResult = bWSConnected;
290+
}
291+
332292
// go to next screen
333293
ClearGSMessageBoxes();
334294

335295
for (auto cb : m_vecLogin_PendingCallbacks)
336296
{
337297
// TODO_NGMP: Support failure
338-
cb(true);
298+
cb(bResult);
339299
}
340300
m_vecLogin_PendingCallbacks.clear();
341301

GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,14 @@ void WebSocket::Tick()
164164
return;
165165
}
166166

167+
// ping?
168+
int64_t currTime = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::utc_clock::now().time_since_epoch()).count();
169+
if ((currTime - m_lastPing) > m_timeBetweenUserPings)
170+
{
171+
m_lastPing = currTime;
172+
Ping();
173+
};
174+
167175
// do recv
168176
size_t rlen = 0;
169177
const struct curl_ws_frame* meta = nullptr;
@@ -172,7 +180,7 @@ void WebSocket::Tick()
172180
CURLcode ret = CURL_LAST;
173181
ret = curl_ws_recv(m_pCurl, buffer, sizeof(buffer), &rlen, &meta);
174182

175-
if (ret != CURL_LAST && ret != CURLE_AGAIN && ret != CURLE_GOT_NOTHING)
183+
if (ret != CURLE_RECV_ERROR && ret != CURL_LAST && ret != CURLE_AGAIN && ret != CURLE_GOT_NOTHING)
176184
{
177185
NetworkLog("Got websocket msg: %s", buffer);
178186

@@ -183,7 +191,7 @@ void WebSocket::Tick()
183191
{
184192
NetworkLog("Got websocket pong");
185193
}
186-
else if (meta->flags & CURLWS_TEXT) // PONG
194+
else if (meta->flags & CURLWS_TEXT)
187195
{
188196
try
189197
{
@@ -240,17 +248,20 @@ void WebSocket::Tick()
240248

241249
}
242250
}
243-
else if (meta->flags & CURLWS_BINARY) // PONG
251+
else if (meta->flags & CURLWS_BINARY)
244252
{
245253
NetworkLog("Got websocket binary");
246254
// noop
247255
}
248-
else if (meta->flags & CURLWS_CONT) // PONG
256+
else if (meta->flags & CURLWS_CONT)
249257
{
258+
NetworkLog("Got websocket cont");
250259
// noop
251260
}
252261
else if (meta->flags & CURLWS_CLOSE)
253262
{
263+
NetworkLog("Got websocket close");
264+
m_bConnected = false;
254265
// TODO_NGMP: Handle this
255266
}
256267
else if (meta->flags & CURLWS_PING)
@@ -260,6 +271,7 @@ void WebSocket::Tick()
260271
}
261272
else if (meta->flags & CURLWS_OFFSET)
262273
{
274+
NetworkLog("Got websocket offset");
263275
// noop
264276
}
265277
}

0 commit comments

Comments
 (0)