diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp index 16ba31d776b..4df6ed0f319 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp @@ -245,16 +245,33 @@ void GetAdditionalDisconnectsFromUserFile(PSPlayerStats *stats) // default values RankPoints::RankPoints(void) { - m_ranks[RANK_PRIVATE] = 0; - m_ranks[RANK_CORPORAL] = TheGameSpyConfig->getPointsForRank(RANK_CORPORAL); // 5 - m_ranks[RANK_SERGEANT] = TheGameSpyConfig->getPointsForRank(RANK_SERGEANT); // 10 - m_ranks[RANK_LIEUTENANT] = TheGameSpyConfig->getPointsForRank(RANK_LIEUTENANT); // 20 - m_ranks[RANK_CAPTAIN] = TheGameSpyConfig->getPointsForRank(RANK_CAPTAIN); // 50 - m_ranks[RANK_MAJOR] = TheGameSpyConfig->getPointsForRank(RANK_MAJOR); // 100 - m_ranks[RANK_COLONEL] = TheGameSpyConfig->getPointsForRank(RANK_COLONEL); // 200 - m_ranks[RANK_BRIGADIER_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_BRIGADIER_GENERAL); // 500 - m_ranks[RANK_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_GENERAL); // 1000 - m_ranks[RANK_COMMANDER_IN_CHIEF] = TheGameSpyConfig->getPointsForRank(RANK_COMMANDER_IN_CHIEF); // 2000 + m_ranks[RANK_PRIVATE] = 0; + // Use default values if TheGameSpyConfig is NULL (can happen if called during teardown) + if (TheGameSpyConfig != NULL) + { + m_ranks[RANK_CORPORAL] = TheGameSpyConfig->getPointsForRank(RANK_CORPORAL); // 5 + m_ranks[RANK_SERGEANT] = TheGameSpyConfig->getPointsForRank(RANK_SERGEANT); // 10 + m_ranks[RANK_LIEUTENANT] = TheGameSpyConfig->getPointsForRank(RANK_LIEUTENANT); // 20 + m_ranks[RANK_CAPTAIN] = TheGameSpyConfig->getPointsForRank(RANK_CAPTAIN); // 50 + m_ranks[RANK_MAJOR] = TheGameSpyConfig->getPointsForRank(RANK_MAJOR); // 100 + m_ranks[RANK_COLONEL] = TheGameSpyConfig->getPointsForRank(RANK_COLONEL); // 200 + m_ranks[RANK_BRIGADIER_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_BRIGADIER_GENERAL); // 500 + m_ranks[RANK_GENERAL] = TheGameSpyConfig->getPointsForRank(RANK_GENERAL); // 1000 + m_ranks[RANK_COMMANDER_IN_CHIEF] = TheGameSpyConfig->getPointsForRank(RANK_COMMANDER_IN_CHIEF); // 2000 + } + else + { + // Use default hardcoded values when TheGameSpyConfig is not available + m_ranks[RANK_CORPORAL] = 5; + m_ranks[RANK_SERGEANT] = 10; + m_ranks[RANK_LIEUTENANT] = 20; + m_ranks[RANK_CAPTAIN] = 50; + m_ranks[RANK_MAJOR] = 100; + m_ranks[RANK_COLONEL] = 200; + m_ranks[RANK_BRIGADIER_GENERAL] = 500; + m_ranks[RANK_GENERAL] = 1000; + m_ranks[RANK_COMMANDER_IN_CHIEF] = 2000; + } m_winMultiplier = 3.0f; m_lostMultiplier = 0.0f; diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp index a0a0a990ef7..06f6b38a115 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupPlayerInfo.cpp @@ -247,6 +247,20 @@ void GetAdditionalDisconnectsFromUserFile(PSPlayerStats *stats) // default values RankPoints::RankPoints(void) { + // In GeneralsMD, rank values are set in NGMP_OnlineServices_StatsInterface constructor + // Initialize with default values (these will be overwritten if properly initialized) + m_ranks[RANK_PRIVATE] = 0; + m_ranks[RANK_CORPORAL] = 5; + m_ranks[RANK_SERGEANT] = 10; + m_ranks[RANK_LIEUTENANT] = 20; + m_ranks[RANK_CAPTAIN] = 50; + m_ranks[RANK_MAJOR] = 100; + m_ranks[RANK_COLONEL] = 200; + m_ranks[RANK_BRIGADIER_GENERAL] = 500; + m_ranks[RANK_GENERAL] = 1000; + m_ranks[RANK_COMMANDER_IN_CHIEF] = 2000; + + m_winMultiplier = 3.0f; m_lostMultiplier = 0.0f; m_hourSpentOnlineMultiplier = 1.0f; @@ -1587,4 +1601,4 @@ static void messageBoxYes( void ) RefreshGameListBoxes(); GameSpyCloseOverlay(GSOVERLAY_PLAYERINFO); -} +}