Skip to content

Commit 00c0653

Browse files
committed
begin stats impl
1 parent 491ece7 commit 00c0653

12 files changed

Lines changed: 230 additions & 48 deletions

File tree

GeneralsMD/Code/GameEngine/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,6 +1144,7 @@ set(GAMEENGINE_SRC
11441144
Include/GameNetwork/GeneralsOnline/OnlineServices_Init.h
11451145
Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h
11461146
Include/GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.h
1147+
Include/GameNetwork/GeneralsOnline/OnlineServices_StatsInterface.h
11471148
Include/GameNetwork/GeneralsOnline/PortMapper.h
11481149
Include/GameNetwork/GeneralsOnline/HTTP/HTTPManager.h
11491150
Include/GameNetwork/GeneralsOnline/HTTP/HTTPRequest.h
@@ -1309,6 +1310,7 @@ set(GAMEENGINE_SRC
13091310
Source/GameNetwork/GeneralsOnline/OnlineServices_Auth.cpp
13101311
Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp
13111312
Source/GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.cpp
1313+
Source/GameNetwork/GeneralsOnline/OnlineServices_StatsInterface.cpp
13121314
Source/GameNetwork/GeneralsOnline/NextGenTransport.cpp
13131315
Source/GameNetwork/GeneralsOnline/NetworkBitstream.cpp
13141316
Source/GameNetwork/GeneralsOnline/Packets/NetworkPacket_NetRoom_Hello.cpp

GeneralsMD/Code/GameEngine/Include/GameNetwork/GameSpy/PersistentStorageDefs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ enum LocaleType CPP_11(: Int)
4141
void HandlePersistentStorageResponses(void);
4242
void UpdateLocalPlayerStats(void);
4343

44-
void SetLookAtPlayer( Int id, AsciiString nick );
44+
void SetLookAtPlayer( int64_t id, AsciiString nick );
4545
void PopulatePlayerInfoWindows( AsciiString parentWindowName );
4646

4747
#endif // __PERSISTENTSTORAGEDEFS_H__

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
#include "GameNetwork/GeneralsOnline/OnlineServices_Auth.h"
77
#include "GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h"
88
#include "GameNetwork/GeneralsOnline/OnlineServices_RoomsInterface.h"
9+
#include "GameNetwork/GeneralsOnline/OnlineServices_StatsInterface.h"
910
#include "GameNetwork/GeneralsOnline/PortMapper.h"

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class HTTPManager;
88
class NGMP_OnlineServices_AuthInterface;
99
class NGMP_OnlineServices_LobbyInterface;
1010
class NGMP_OnlineServices_RoomsInterface;
11+
class NGMP_OnlineServices_StatsInterface;
1112

1213
#pragma comment(lib, "libcurl/libcurl.lib")
1314

@@ -108,7 +109,11 @@ class NGMP_OnlineServicesManager
108109
PROD
109110
};
110111

112+
#if defined(_DEBUG)
111113
const static EEnvironment g_Environment = EEnvironment::DEV;
114+
#else
115+
const static EEnvironment g_Environment = EEnvironment::PROD;
116+
#endif
112117
static std::string GetAPIEndpoint(const char* szEndpoint, bool bAttachToken);
113118

114119
static NGMP_OnlineServicesManager* GetInstance()
@@ -126,6 +131,12 @@ class NGMP_OnlineServicesManager
126131
m_pAuthInterface = nullptr;
127132
}
128133

134+
if (m_pStatsInterface != nullptr)
135+
{
136+
delete m_pStatsInterface;
137+
m_pStatsInterface = nullptr;
138+
}
139+
129140
if (m_pLobbyInterface != nullptr)
130141
{
131142
delete m_pLobbyInterface;
@@ -159,6 +170,7 @@ class NGMP_OnlineServicesManager
159170
NGMP_OnlineServices_AuthInterface* GetAuthInterface() const { return m_pAuthInterface; }
160171
NGMP_OnlineServices_LobbyInterface* GetLobbyInterface() const { return m_pLobbyInterface; }
161172
NGMP_OnlineServices_RoomsInterface* GetRoomsInterface() const { return m_pRoomInterface; }
173+
NGMP_OnlineServices_StatsInterface* GetStatsInterface() const { return m_pStatsInterface; }
162174

163175
void OnLogin(bool bSuccess, const char* szWSAddr, const char* szWSToken);
164176

@@ -233,6 +245,7 @@ class NGMP_OnlineServicesManager
233245
NGMP_OnlineServices_AuthInterface* m_pAuthInterface = nullptr;
234246
NGMP_OnlineServices_LobbyInterface* m_pLobbyInterface = nullptr;
235247
NGMP_OnlineServices_RoomsInterface* m_pRoomInterface = nullptr;
248+
NGMP_OnlineServices_StatsInterface* m_pStatsInterface = nullptr;
236249
PortMapper m_PortMapper;
237250

238251
HTTPManager* m_pHTTPManager = nullptr;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#pragma once
2+
3+
#include "NGMP_include.h"
4+
#include "NetworkMesh.h"
5+
#include "../RankPointValue.h"
6+
7+
class PSPlayerStats;
8+
9+
class NGMP_OnlineServices_StatsInterface
10+
{
11+
public:
12+
NGMP_OnlineServices_StatsInterface();
13+
14+
void GetLocalPlayerStats(std::function<void(void)> cb);
15+
void GetPlayerStats(int64_t userID, std::function<void(void)> cb);
16+
17+
Int getPointsForRank(Int rank)
18+
{
19+
std::map<int, int> mapRankToXP =
20+
{
21+
{RANK_PRIVATE, 0},
22+
{RANK_CORPORAL, 5},
23+
{RANK_SERGEANT, 10},
24+
{RANK_LIEUTENANT, 20},
25+
{RANK_CAPTAIN, 50},
26+
{RANK_MAJOR, 100},
27+
{RANK_COLONEL, 2000},
28+
{RANK_BRIGADIER_GENERAL, 500},
29+
{RANK_GENERAL, 1000},
30+
{RANK_COMMANDER_IN_CHIEF, 2000}
31+
};
32+
33+
if (rank < mapRankToXP.size())
34+
{
35+
return mapRankToXP[rank];
36+
}
37+
38+
return 999999;
39+
}
40+
41+
PSPlayerStats findPlayerStatsByID(int64_t userID);
42+
PSPlayerStats getCachedLocalPlayerStats();
43+
};

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

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@
6060

6161
#include "WWDownload/Registry.h"
6262

63+
#include "../ngmp_interfaces.h"
64+
#include "../ngmp_include.h"
65+
6366
#ifdef _INTERNAL
6467
// for occasional debugging...
6568
//#pragma optimize("", off)
@@ -91,7 +94,7 @@ static GameWindow *checkBoxNonAsianFont = NULL;
9194

9295
static Bool isOverlayActive = false;
9396
static Bool raiseMessageBox = false;
94-
static Int lookAtPlayerID = 0;
97+
static int64_t lookAtPlayerID = 0;
9598
static std::string lookAtPlayerName;
9699

97100

@@ -182,6 +185,8 @@ Int GetAdditionalDisconnectsFromUserFile(Int playerID)
182185
return 0;
183186
}
184187

188+
// TODO_NGMP_STATS:
189+
/*
185190
if (TheGameSpyInfo->getAdditionalDisconnects() > 0 && !retval)
186191
{
187192
DEBUG_LOG(("Clearing additional disconnects\n"));
@@ -192,6 +197,7 @@ Int GetAdditionalDisconnectsFromUserFile(Int playerID)
192197
{
193198
return TheGameSpyInfo->getAdditionalDisconnects();
194199
}
200+
*/
195201

196202
return retval;
197203
}
@@ -243,16 +249,18 @@ void GetAdditionalDisconnectsFromUserFile(PSPlayerStats *stats)
243249
// default values
244250
RankPoints::RankPoints(void)
245251
{
252+
auto statsInterface = NGMP_OnlineServicesManager::GetInstance()->GetStatsInterface();
253+
246254
m_ranks[RANK_PRIVATE] = 0;
247-
m_ranks[RANK_CORPORAL] = TheGameSpyConfig->getPointsForRank(RANK_CORPORAL); // 5
248-
m_ranks[RANK_SERGEANT] = TheGameSpyConfig->getPointsForRank(RANK_SERGEANT); // 10
249-
m_ranks[RANK_LIEUTENANT] = TheGameSpyConfig->getPointsForRank(RANK_LIEUTENANT); // 20
250-
m_ranks[RANK_CAPTAIN] = TheGameSpyConfig->getPointsForRank(RANK_CAPTAIN); // 50
251-
m_ranks[RANK_MAJOR] = TheGameSpyConfig->getPointsForRank(RANK_MAJOR); // 100
252-
m_ranks[RANK_COLONEL] = TheGameSpyConfig->getPointsForRank(RANK_COLONEL); // 200
253-
m_ranks[RANK_BRIGADIER_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_BRIGADIER_GENERAL); // 500
254-
m_ranks[RANK_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_GENERAL); // 1000
255-
m_ranks[RANK_COMMANDER_IN_CHIEF] = TheGameSpyConfig->getPointsForRank(RANK_COMMANDER_IN_CHIEF); // 2000
255+
m_ranks[RANK_CORPORAL] = statsInterface->getPointsForRank(RANK_CORPORAL); // 5
256+
m_ranks[RANK_SERGEANT] = statsInterface->getPointsForRank(RANK_SERGEANT); // 10
257+
m_ranks[RANK_LIEUTENANT] = statsInterface->getPointsForRank(RANK_LIEUTENANT); // 20
258+
m_ranks[RANK_CAPTAIN] = statsInterface->getPointsForRank(RANK_CAPTAIN); // 50
259+
m_ranks[RANK_MAJOR] = statsInterface->getPointsForRank(RANK_MAJOR); // 100
260+
m_ranks[RANK_COLONEL] = statsInterface->getPointsForRank(RANK_COLONEL); // 200
261+
m_ranks[RANK_BRIGADIER_GENERAL] = statsInterface->getPointsForRank(RANK_BRIGADIER_GENERAL); // 500
262+
m_ranks[RANK_GENERAL] = statsInterface->getPointsForRank(RANK_GENERAL); // 1000
263+
m_ranks[RANK_COMMANDER_IN_CHIEF] = statsInterface->getPointsForRank(RANK_COMMANDER_IN_CHIEF); // 2000
256264

257265
m_winMultiplier = 3.0f;
258266
m_lostMultiplier = 0.0f;
@@ -263,7 +271,7 @@ RankPoints::RankPoints(void)
263271

264272
RankPoints *TheRankPointValues = NULL;
265273

266-
void SetLookAtPlayer( Int id, AsciiString nick)
274+
void SetLookAtPlayer(int64_t id, AsciiString nick)
267275
{
268276
lookAtPlayerID = id;
269277
lookAtPlayerName = nick.str();
@@ -721,7 +729,10 @@ static void populateBattleHonors(const PSPlayerStats& stats, Int battleHonors, I
721729
}
722730
*/
723731

724-
if (TheGameSpyInfo->didPlayerPreorder(stats.id))
732+
// TODO_NGMP_STATS
733+
bool bPreordered = true;
734+
//if (TheGameSpyInfo->didPlayerPreorder(stats.id))
735+
if (bPreordered)
725736
{
726737
InsertBattleHonor(list, TheMappedImageCollection->findImageByName("OfficersClub"), TRUE,
727738
BATTLE_HONOR_OFFICERSCLUB, row, column);
@@ -749,6 +760,7 @@ Int GetFavoriteSide( const PSPlayerStats& stats )
749760
return favorite;
750761
}
751762

763+
// TODO_NGMP: We should calculate this and store it on server side too so we can display on website
752764
Int CalculateRank( const PSPlayerStats& stats )
753765
{
754766
if(stats.id == 0 || !TheRankPointValues)
@@ -811,22 +823,23 @@ static GameWindow* findWindow(GameWindow *parent, AsciiString baseWindow, AsciiS
811823

812824
void PopulatePlayerInfoWindows( AsciiString parentWindowName )
813825
{
814-
Int lookupID = TheGameSpyInfo->getLocalProfileID();
826+
int64_t localID = NGMP_OnlineServicesManager::GetInstance()->GetAuthInterface()->GetUserID();
827+
int64_t lookupID = localID;
815828
if(parentWindowName == "PopupPlayerInfo.wnd")
816829
{
817830
lookupID = lookAtPlayerID;
818-
if (lookAtPlayerID <= 0 || !parent)
831+
if (lookAtPlayerID == -1 || !parent)
819832
return;
820833
}
821834

822-
PSPlayerStats stats = TheGameSpyPSMessageQueue->findPlayerStatsByID(lookupID);
835+
PSPlayerStats stats = NGMP_OnlineServicesManager::GetInstance()->GetStatsInterface()->findPlayerStatsByID(lookupID);
823836

824837
Bool weHaveStats = (stats.id != 0);
825838

826839
// if we don't have the stats from the server, see if we have cached stats
827-
if( !weHaveStats && lookupID == TheGameSpyInfo->getLocalProfileID() )
840+
if( !weHaveStats && lookupID == localID)
828841
{
829-
stats = TheGameSpyInfo->getCachedLocalPlayerStats();
842+
stats = NGMP_OnlineServicesManager::GetInstance()->GetStatsInterface()->getCachedLocalPlayerStats();
830843

831844
weHaveStats = TRUE;
832845
}
@@ -1303,7 +1316,7 @@ void GameSpyPlayerInfoOverlayInit( WindowLayout *layout, void *userData )
13031316
PopulatePlayerInfoWindows("PopupPlayerInfo.wnd");
13041317

13051318
// we're on the myinfo screen
1306-
if(lookAtPlayerID == TheGameSpyInfo->getLocalProfileID())
1319+
if(lookAtPlayerID == NGMP_OnlineServicesManager::GetInstance()->GetAuthInterface()->GetUserID())
13071320
{
13081321
//buttonbuttonOptions->winHide(FALSE);
13091322
buttonSetLocale->winHide(FALSE);

0 commit comments

Comments
 (0)