From a71b1036c7c59ee96b650360afbc2250f5b24d49 Mon Sep 17 00:00:00 2001 From: Tropical <42101043+tropicaaal@users.noreply.github.com> Date: Thu, 9 Apr 2026 11:11:52 -0500 Subject: [PATCH] remove LeaderboardInterface, LeaderboardManager, LinuxLeaderboardManager, for StubLeaderboard --- .../Leaderboards/LeaderboardInterface.cpp | 100 ---- .../Leaderboards/LeaderboardInterface.h | 42 -- .../Leaderboards/LeaderboardManager.cpp | 106 ---- .../common/Leaderboards/LeaderboardManager.h | 56 -- .../Network/PlatformNetworkManagerStub.cpp | 565 ------------------ .../Network/PlatformNetworkManagerStub.h | 198 ------ .../UIScene_LeaderboardsMenu.cpp | 41 +- .../UIScene_LeaderboardsMenu.h | 6 +- targets/app/common_sources.txt | 2 - .../Leaderboards/LinuxLeaderboardManager.cpp | 7 - .../Leaderboards/LinuxLeaderboardManager.h | 52 -- targets/app/linux/Linux_Minecraft.cpp | 9 +- targets/app/linux_sources.txt | 1 - .../WindowsLeaderboardManager.cpp | 5 - .../Leaderboards/WindowsLeaderboardManager.h | 51 -- .../app/windows/src/Windows64_Minecraft.cpp | 2 +- targets/minecraft/client/Minecraft.h | 2 +- 17 files changed, 26 insertions(+), 1219 deletions(-) delete mode 100644 targets/app/common/Leaderboards/LeaderboardInterface.cpp delete mode 100644 targets/app/common/Leaderboards/LeaderboardInterface.h delete mode 100644 targets/app/common/Leaderboards/LeaderboardManager.cpp delete mode 100644 targets/app/common/Leaderboards/LeaderboardManager.h delete mode 100644 targets/app/common/Network/PlatformNetworkManagerStub.cpp delete mode 100644 targets/app/common/Network/PlatformNetworkManagerStub.h delete mode 100644 targets/app/linux/Leaderboards/LinuxLeaderboardManager.cpp delete mode 100644 targets/app/linux/Leaderboards/LinuxLeaderboardManager.h delete mode 100644 targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.cpp delete mode 100644 targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.h diff --git a/targets/app/common/Leaderboards/LeaderboardInterface.cpp b/targets/app/common/Leaderboards/LeaderboardInterface.cpp deleted file mode 100644 index 41cef18ae..000000000 --- a/targets/app/common/Leaderboards/LeaderboardInterface.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "LeaderboardInterface.h" - -#include - -#include "app/common/Leaderboards/LeaderboardManager.h" - -LeaderboardInterface::LeaderboardInterface(IPlatformLeaderboard* man) { - m_manager = man; - m_pending = false; - - m_filter = (IPlatformLeaderboard::EFilterMode)-1; - m_callback = nullptr; - m_difficulty = 0; - m_type = IPlatformLeaderboard::eStatsType_UNDEFINED; - m_startIndex = 0; - m_readCount = 0; - - (void)m_manager->OpenSession(); -} - -LeaderboardInterface::~LeaderboardInterface() { - m_manager->CancelOperation(); - m_manager->CloseSession(); -} - -void LeaderboardInterface::ReadStats_Friends( - LeaderboardReadListener* callback, int difficulty, - IPlatformLeaderboard::EStatsType type, PlayerUID myUID, - unsigned int startIndex, unsigned int readCount) { - m_filter = IPlatformLeaderboard::eFM_Friends; - m_pending = true; - - m_callback = callback; - m_difficulty = difficulty; - m_type = type; - m_myUID = myUID; - m_startIndex = startIndex; - m_readCount = readCount; - - tick(); -} - -void LeaderboardInterface::ReadStats_MyScore( - LeaderboardReadListener* callback, int difficulty, - IPlatformLeaderboard::EStatsType type, PlayerUID myUID, - unsigned int readCount) { - m_filter = IPlatformLeaderboard::eFM_MyScore; - m_pending = true; - - m_callback = callback; - m_difficulty = difficulty; - m_type = type; - m_myUID = myUID; - m_readCount = readCount; - - tick(); -} - -void LeaderboardInterface::ReadStats_TopRank( - LeaderboardReadListener* callback, int difficulty, - IPlatformLeaderboard::EStatsType type, unsigned int startIndex, - unsigned int readCount) { - m_filter = IPlatformLeaderboard::eFM_TopRank; - m_pending = true; - - m_callback = callback; - m_difficulty = difficulty; - m_type = type; - m_startIndex = startIndex; - m_readCount = readCount; - - tick(); -} - -void LeaderboardInterface::CancelOperation() { - m_manager->CancelOperation(); - m_pending = false; -} - -void LeaderboardInterface::tick() { - if (m_pending) m_pending = !callManager(); -} - -bool LeaderboardInterface::callManager() { - switch (m_filter) { - case IPlatformLeaderboard::eFM_Friends: - return m_manager->ReadStats_Friends(m_callback, m_difficulty, - m_type, m_myUID, m_startIndex, - m_readCount); - case IPlatformLeaderboard::eFM_MyScore: - return m_manager->ReadStats_MyScore(m_callback, m_difficulty, - m_type, m_myUID, m_readCount); - case IPlatformLeaderboard::eFM_TopRank: - return m_manager->ReadStats_TopRank( - m_callback, m_difficulty, m_type, m_startIndex, m_readCount); - default: - assert(false); - return true; - } -} \ No newline at end of file diff --git a/targets/app/common/Leaderboards/LeaderboardInterface.h b/targets/app/common/Leaderboards/LeaderboardInterface.h deleted file mode 100644 index 4931ed643..000000000 --- a/targets/app/common/Leaderboards/LeaderboardInterface.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include "LeaderboardManager.h" -#include "platform/PlatformTypes.h" - -// 4J-JEV: Simple interface for handling ReadStat failures. -class LeaderboardInterface { -private: - IPlatformLeaderboard* m_manager; - bool m_pending; - - // Arguments. - IPlatformLeaderboard::EFilterMode m_filter; - LeaderboardReadListener* m_callback; - int m_difficulty; - IPlatformLeaderboard::EStatsType m_type; - PlayerUID m_myUID; - unsigned int m_startIndex; - unsigned int m_readCount; - -public: - LeaderboardInterface(IPlatformLeaderboard* man); - ~LeaderboardInterface(); - - void ReadStats_Friends(LeaderboardReadListener* callback, int difficulty, - IPlatformLeaderboard::EStatsType type, - PlayerUID myUID, unsigned int startIndex, - unsigned int readCount); - void ReadStats_MyScore(LeaderboardReadListener* callback, int difficulty, - IPlatformLeaderboard::EStatsType type, - PlayerUID myUID, unsigned int readCount); - void ReadStats_TopRank(LeaderboardReadListener* callback, int difficulty, - IPlatformLeaderboard::EStatsType type, - unsigned int startIndex, unsigned int readCount); - - void CancelOperation(); - - void tick(); - -private: - bool callManager(); -}; \ No newline at end of file diff --git a/targets/app/common/Leaderboards/LeaderboardManager.cpp b/targets/app/common/Leaderboards/LeaderboardManager.cpp deleted file mode 100644 index 49aa9825c..000000000 --- a/targets/app/common/Leaderboards/LeaderboardManager.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include "LeaderboardManager.h" - -#include "app/linux/LinuxGame.h" -#include "util/StringHelpers.h" - -const std::string LeaderboardManager::filterNames[eNumFilterModes] = { - "Friends", "MyScore", "TopRank"}; - -void LeaderboardManager::DeleteInstance() { - delete m_instance; - m_instance = nullptr; -} - -LeaderboardManager::LeaderboardManager() { - zeroReadParameters(); - - m_myXUID = INVALID_XUID; -} - -void LeaderboardManager::zeroReadParameters() { - m_difficulty = -1; - m_statsType = eStatsType_UNDEFINED; - m_readListener = nullptr; - m_startIndex = 0; - m_readCount = 0; - m_eFilterMode = eFM_UNDEFINED; -} - -bool LeaderboardManager::ReadStats_Friends(LeaderboardReadListener* listener, - int difficulty, EStatsType type, - PlayerUID myUID, - unsigned int startIndex, - unsigned int readCount) { - zeroReadParameters(); - - m_readListener = listener; - m_difficulty = difficulty; - m_statsType = type; - - m_eFilterMode = eFM_Friends; - return true; -} - -bool LeaderboardManager::ReadStats_MyScore(LeaderboardReadListener* listener, - int difficulty, EStatsType type, - PlayerUID myUID, - unsigned int readCount) { - zeroReadParameters(); - - m_readListener = listener; - m_difficulty = difficulty; - m_statsType = type; - - m_readCount = readCount; - - m_eFilterMode = eFM_MyScore; - return true; -} - -bool LeaderboardManager::ReadStats_TopRank(LeaderboardReadListener* listener, - int difficulty, EStatsType type, - unsigned int startIndex, - unsigned int readCount) { - zeroReadParameters(); - - m_readListener = listener; - m_difficulty = difficulty; - m_statsType = type; - - m_startIndex = startIndex; - m_readCount = readCount; - - m_eFilterMode = eFM_TopRank; - return true; -} - -void LeaderboardManager::printStats(ReadView& view) { - app.DebugPrintf( - "[LeaderboardManager] Printing stats:\n" - "\tnumQueries=%i\n", - view.m_numQueries); - - for (unsigned int i = 0; i < view.m_numQueries; i++) { - ReadScore score = view.m_queries[i]; - - app.DebugPrintf("\tname='%s'\n", score.m_name.c_str()); - app.DebugPrintf("\trank='%i'\n", score.m_rank); - - app.DebugPrintf("\tstatsData=["); - for (int j = 0; j < score.m_statsSize; j++) - app.DebugPrintf(" %i", score.m_statsData[j]); - app.DebugPrintf("]\n"); - } -} - -bool DebugReadListener::OnStatsReadComplete( - IPlatformLeaderboard::eStatsReturn success, int numResults, - IPlatformLeaderboard::ViewOut results) { - app.DebugPrintf("[DebugReadListener] OnStatsReadComplete, %s:\n", - (success ? "success" : "FAILED")); - LeaderboardManager::printStats(results); - - return true; -} - -DebugReadListener* DebugReadListener::m_instance = new DebugReadListener(); diff --git a/targets/app/common/Leaderboards/LeaderboardManager.h b/targets/app/common/Leaderboards/LeaderboardManager.h deleted file mode 100644 index 9980392c4..000000000 --- a/targets/app/common/Leaderboards/LeaderboardManager.h +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once - -#include - -#include "platform/leaderboard/IPlatformLeaderboard.h" - -class LeaderboardManager : public IPlatformLeaderboard { -public: - static const std::string filterNames[eNumFilterModes]; - - LeaderboardManager(); - virtual ~LeaderboardManager() {} - - // Singleton - static IPlatformLeaderboard* Instance() { return m_instance; } - static void DeleteInstance(); - - // IPlatformLeaderboard pure virtuals - subclasses must implement: - // Tick, OpenSession, CloseSession, DeleteSession, WriteStats, - // FlushStats, CancelOperation, isIdle - - // Base implementations for read operations - bool ReadStats_Friends(LeaderboardReadListener* callback, int difficulty, - EStatsType type, PlayerUID myUID, - unsigned int startIndex, - unsigned int readCount) override; - bool ReadStats_MyScore(LeaderboardReadListener* callback, int difficulty, - EStatsType type, PlayerUID myUID, - unsigned int readCount) override; - bool ReadStats_TopRank(LeaderboardReadListener* callback, int difficulty, - EStatsType type, unsigned int startIndex, - unsigned int readCount) override; - - static void printStats(ReadView& view); - -protected: - virtual void zeroReadParameters(); - - EFilterMode m_eFilterMode; - int m_difficulty; - EStatsType m_statsType; - LeaderboardReadListener* m_readListener; - PlayerUID m_myXUID; - unsigned int m_startIndex, m_readCount; - -private: - static LeaderboardManager* m_instance; -}; - -class DebugReadListener : public LeaderboardReadListener { -public: - bool OnStatsReadComplete(IPlatformLeaderboard::eStatsReturn ret, - int numResults, - IPlatformLeaderboard::ViewOut results) override; - static DebugReadListener* m_instance; -}; diff --git a/targets/app/common/Network/PlatformNetworkManagerStub.cpp b/targets/app/common/Network/PlatformNetworkManagerStub.cpp deleted file mode 100644 index c27df2a8f..000000000 --- a/targets/app/common/Network/PlatformNetworkManagerStub.cpp +++ /dev/null @@ -1,565 +0,0 @@ -#include "PlatformNetworkManagerStub.h" - -#include -#include - -#include - -#include "NetworkPlayerQNet.h" -#include "app/common/Network/GameNetworkManager.h" -#include "minecraft/network/Socket.h" -#include "app/linux/LinuxGame.h" -#include "minecraft/network/platform/NetworkPlayerInterface.h" -#include "platform/C4JThread.h" -#include "platform/NetTypes.h" - -IPlatformNetworkStub* g_pPlatformNetworkManager; - -void IPlatformNetworkStub::NotifyPlayerJoined(IQNetPlayer* pQNetPlayer) { - const char* pszDescription; - - // 4J Stu - We create a fake socket for every where that we need an INBOUND - // queue of game data. Outbound is all handled by QNet so we don't need - // that. Therefore each client player has one, and the host has one for each - // client player. - bool createFakeSocket = false; - bool localPlayer = false; - - NetworkPlayerQNet* networkPlayer = - (NetworkPlayerQNet*)addNetworkPlayer(pQNetPlayer); - - if (pQNetPlayer->IsLocal()) { - localPlayer = true; - if (pQNetPlayer->IsHost()) { - pszDescription = "local host"; - // 4J Stu - No socket for the localhost as it uses a special - // loopback queue - - m_machineQNetPrimaryPlayers.push_back(pQNetPlayer); - } else { - pszDescription = "local"; - - // We need an inbound queue on all local players to receive data - // from the host - createFakeSocket = true; - } - } else { - if (pQNetPlayer->IsHost()) { - pszDescription = "remote host"; - } else { - pszDescription = "remote"; - - // If we are the host, then create a fake socket for every remote - // player - if (m_pIQNet->IsHost()) { - createFakeSocket = true; - } - } - - if (m_pIQNet->IsHost() && !m_bHostChanged) { - // Do we already have a primary player for this system? - bool systemHasPrimaryPlayer = false; - for (auto it = m_machineQNetPrimaryPlayers.begin(); - it < m_machineQNetPrimaryPlayers.end(); ++it) { - IQNetPlayer* pQNetPrimaryPlayer = *it; - if (pQNetPlayer->IsSameSystem(pQNetPrimaryPlayer)) { - systemHasPrimaryPlayer = true; - break; - } - } - if (!systemHasPrimaryPlayer) - m_machineQNetPrimaryPlayers.push_back(pQNetPlayer); - } - } - g_NetworkManager.PlayerJoining(networkPlayer); - - if (createFakeSocket == true && !m_bHostChanged) { - g_NetworkManager.CreateSocket(networkPlayer, localPlayer); - } - - app.DebugPrintf("Player 0x%p \"%s\" joined; %s; voice %i; camera %i.\n", - pQNetPlayer, pQNetPlayer->GetGamertag(), pszDescription, - (int)pQNetPlayer->HasVoice(), - (int)pQNetPlayer->HasCamera()); - - if (m_pIQNet->IsHost()) { - // 4J-PB - only the host should do this - // g_NetworkManager.UpdateAndSetGameSessionData(); - SystemFlagAddPlayer(networkPlayer); - } - - for (int idx = 0; idx < XUSER_MAX_COUNT; ++idx) { - if (playerChangedCallback[idx]) - playerChangedCallback[idx](networkPlayer, false); - } - - if (m_pIQNet->GetState() == QNET_STATE_GAME_PLAY) { - int localPlayerCount = 0; - for (unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx) { - if (m_pIQNet->GetLocalPlayerByUserIndex(idx) != nullptr) - ++localPlayerCount; - } - - float appTime = app.getAppTime(); - - // Only record stats for the primary player here - m_lastPlayerEventTimeStart = appTime; - } -} - -bool IPlatformNetworkStub::Initialise(CGameNetworkManager* pGameNetworkManager, - int flagIndexSize) { - m_pGameNetworkManager = pGameNetworkManager; - m_flagIndexSize = flagIndexSize; - g_pPlatformNetworkManager = this; - // 4jcraft added this, as it was never called - m_pIQNet = new IQNet(); - for (int i = 0; i < XUSER_MAX_COUNT; i++) { - playerChangedCallback[i] = nullptr; - } - - m_bLeavingGame = false; - m_bLeaveGameOnTick = false; - m_bHostChanged = false; - - m_bSearchResultsReady = false; - m_bSearchPending = false; - - m_bIsOfflineGame = false; - m_SessionsUpdatedCallback = nullptr; - - for (unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) { - m_searchResultsCount[i] = 0; - m_lastSearchStartTime[i] = 0; - - // The results that will be filled in with the current search - m_pSearchResults[i] = nullptr; - m_pQoSResult[i] = nullptr; - m_pCurrentSearchResults[i] = nullptr; - m_pCurrentQoSResult[i] = nullptr; - m_currentSearchResultsCount[i] = 0; - } - - // Success! - return true; -} - -void IPlatformNetworkStub::Terminate() { - // TODO: 4jcraft, no release of ressources -} - -int IPlatformNetworkStub::GetJoiningReadyPercentage() { return 100; } - -int IPlatformNetworkStub::CorrectErrorIDS(int IDS) { return IDS; } - -bool IPlatformNetworkStub::isSystemPrimaryPlayer(IQNetPlayer* pQNetPlayer) { - return true; -} - -// We call this twice a frame, either side of the render call so is a good place -// to "tick" things -void IPlatformNetworkStub::DoWork() {} - -int IPlatformNetworkStub::GetPlayerCount() { - return m_pIQNet->GetPlayerCount(); -} - -bool IPlatformNetworkStub::ShouldMessageForFullSession() { return false; } - -int IPlatformNetworkStub::GetOnlinePlayerCount() { return 1; } - -int IPlatformNetworkStub::GetLocalPlayerMask(int playerIndex) { - return 1 << playerIndex; -} - -bool IPlatformNetworkStub::AddLocalPlayerByUserIndex(int userIndex) { - NotifyPlayerJoined(m_pIQNet->GetLocalPlayerByUserIndex(userIndex)); - return (m_pIQNet->AddLocalPlayerByUserIndex(userIndex) == 0); -} - -bool IPlatformNetworkStub::RemoveLocalPlayerByUserIndex(int userIndex) { - return true; -} - -bool IPlatformNetworkStub::IsInStatsEnabledSession() { return true; } - -bool IPlatformNetworkStub::SessionHasSpace(unsigned int spaceRequired /*= 1*/) { - return true; -} - -void IPlatformNetworkStub::SendInviteGUI(int quadrant) {} - -bool IPlatformNetworkStub::IsAddingPlayer() { return false; } - -bool IPlatformNetworkStub::LeaveGame(bool bMigrateHost) { - if (m_bLeavingGame) return true; - - m_bLeavingGame = true; - - // If we are the host wait for the game server to end - if (m_pIQNet->IsHost() && g_NetworkManager.ServerStoppedValid()) { - m_pIQNet->EndGame(); - g_NetworkManager.ServerStoppedWait(); - g_NetworkManager.ServerStoppedDestroy(); - } - return true; -} - -bool IPlatformNetworkStub::_LeaveGame(bool bMigrateHost, bool bLeaveRoom) { - return true; -} - -void IPlatformNetworkStub::HostGame( - int localUsersMask, bool bOnlineGame, bool bIsPrivate, - unsigned char publicSlots /*= MINECRAFT_NET_MAX_PLAYERS*/, - unsigned char privateSlots /*= 0*/) { - // #ifdef 0 - // 4J Stu - We probably did this earlier as well, but just to be sure! - SetLocalGame(!bOnlineGame); - SetPrivateGame(bIsPrivate); - SystemFlagReset(); - - // Make sure that the Primary Pad is in by default - localUsersMask |= GetLocalPlayerMask(g_NetworkManager.GetPrimaryPad()); - - m_bLeavingGame = false; - - m_pIQNet->HostGame(); - - _HostGame(localUsersMask, publicSlots, privateSlots); - // #endif -} - -void IPlatformNetworkStub::_HostGame( - int usersMask, unsigned char publicSlots /*= MINECRAFT_NET_MAX_PLAYERS*/, - unsigned char privateSlots /*= 0*/) {} - -bool IPlatformNetworkStub::_StartGame() { return true; } - -int IPlatformNetworkStub::JoinGame(FriendSessionInfo* searchResult, - int localUsersMask, int primaryUserIndex) { - return CGameNetworkManager::JOINGAME_SUCCESS; -} - -bool IPlatformNetworkStub::SetLocalGame(bool isLocal) { - m_bIsOfflineGame = isLocal; - - return true; -} - -void IPlatformNetworkStub::SetPrivateGame(bool isPrivate) { - app.DebugPrintf("Setting as private game: %s\n", isPrivate ? "yes" : "no"); - m_bIsPrivateGame = isPrivate; -} - -void IPlatformNetworkStub::RegisterPlayerChangedCallback( - int iPad, - std::function callback) { - playerChangedCallback[iPad] = std::move(callback); -} - -void IPlatformNetworkStub::UnRegisterPlayerChangedCallback(int iPad) { - playerChangedCallback[iPad] = nullptr; -} - -void IPlatformNetworkStub::HandleSignInChange() { return; } - -bool IPlatformNetworkStub::_RunNetworkGame() { return true; } - -void IPlatformNetworkStub::UpdateAndSetGameSessionData( - INetworkPlayer* pNetworkPlayerLeaving /*= nullptr*/) { - // uint32_t playerCount = m_pIQNet->GetPlayerCount(); - // - // if( this->m_bLeavingGame ) - // return; - // - // if( GetHostPlayer() == nullptr ) - // return; - // - // for(unsigned int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i) - // { - // if( i < playerCount ) - // { - // INetworkPlayer *pNetworkPlayer = GetPlayerByIndex(i); - // - // // We can call this from NotifyPlayerLeaving but at that - // point the player is still considered in the session - // if( pNetworkPlayer != pNetworkPlayerLeaving ) - // { - // m_hostGameSessionData.players[i] = - // ((NetworkPlayerXbox *)pNetworkPlayer)->GetUID(); - // - // char *temp; - // temp = (char *)wstring_to_string( - // pNetworkPlayer->GetOnlineName() ); - // memcpy(m_hostGameSessionData.szPlayers[i],temp,XUSER_NAME_SIZE); - // } - // else - // { - // m_hostGameSessionData.players[i] = nullptr; - // memset(m_hostGameSessionData.szPlayers[i],0,XUSER_NAME_SIZE); - // } - // } - // else - // { - // m_hostGameSessionData.players[i] = nullptr; - // memset(m_hostGameSessionData.szPlayers[i],0,XUSER_NAME_SIZE); - // } - // } - // - // m_hostGameSessionData.hostPlayerUID = ((NetworkPlayerXbox - // *)GetHostPlayer())->GetQNetPlayer()->GetXuid(); - // m_hostGameSessionData.m_uiGameHostSettings = - // app.GetGameHostOption(eGameHostOption_All); -} - -int IPlatformNetworkStub::RemovePlayerOnSocketClosedThreadProc(void* lpParam) { - INetworkPlayer* pNetworkPlayer = (INetworkPlayer*)lpParam; - - Socket* socket = pNetworkPlayer->GetSocket(); - - if (socket != nullptr) { - // printf("Waiting for socket closed event\n"); - socket->m_socketClosedEvent->waitForSignal(C4JThread::kInfiniteTimeout); - - // printf("Socket closed event has fired\n"); - // 4J Stu - Clear our reference to this socket - pNetworkPlayer->SetSocket(nullptr); - delete socket; - } - - return g_pPlatformNetworkManager->RemoveLocalPlayer(pNetworkPlayer); -} - -bool IPlatformNetworkStub::RemoveLocalPlayer(INetworkPlayer* pNetworkPlayer) { - return true; -} - -IPlatformNetworkStub::PlayerFlags::PlayerFlags(INetworkPlayer* pNetworkPlayer, - unsigned int count) { - // 4J Stu - Don't assert, just make it a multiple of 8! This count is - // calculated from a load of separate values, and makes tweaking - // world/render sizes a pain if we hit an assert here - count = (count + 8 - 1) & ~(8 - 1); - // assert( ( count % 8 ) == 0 ); - this->m_pNetworkPlayer = pNetworkPlayer; - this->flags = new unsigned char[count / 8]; - memset(this->flags, 0, count / 8); - this->count = count; -} -IPlatformNetworkStub::PlayerFlags::~PlayerFlags() { delete[] flags; } - -// Add a player to the per system flag storage - if we've already got a player -// from that system, copy its flags over -void IPlatformNetworkStub::SystemFlagAddPlayer(INetworkPlayer* pNetworkPlayer) { - PlayerFlags* newPlayerFlags = - new PlayerFlags(pNetworkPlayer, m_flagIndexSize); - // If any of our existing players are on the same system, then copy over - // flags from that one - for (unsigned int i = 0; i < m_playerFlags.size(); i++) { - if (pNetworkPlayer->IsSameSystem(m_playerFlags[i]->m_pNetworkPlayer)) { - memcpy(newPlayerFlags->flags, m_playerFlags[i]->flags, - m_playerFlags[i]->count / 8); - break; - } - } - m_playerFlags.push_back(newPlayerFlags); -} - -// Remove a player from the per system flag storage - just maintains the -// m_playerFlags vector without any gaps in it -void IPlatformNetworkStub::SystemFlagRemovePlayer( - INetworkPlayer* pNetworkPlayer) { - for (unsigned int i = 0; i < m_playerFlags.size(); i++) { - if (m_playerFlags[i]->m_pNetworkPlayer == pNetworkPlayer) { - delete m_playerFlags[i]; - m_playerFlags[i] = m_playerFlags.back(); - m_playerFlags.pop_back(); - return; - } - } -} - -void IPlatformNetworkStub::SystemFlagReset() { - for (unsigned int i = 0; i < m_playerFlags.size(); i++) { - delete m_playerFlags[i]; - } - m_playerFlags.clear(); -} - -// Set a per system flag - this is done by setting the flag on every player that -// shares that system -void IPlatformNetworkStub::SystemFlagSet(INetworkPlayer* pNetworkPlayer, - int index) { - if ((index < 0) || (index >= m_flagIndexSize)) return; - if (pNetworkPlayer == nullptr) return; - - for (unsigned int i = 0; i < m_playerFlags.size(); i++) { - if (pNetworkPlayer->IsSameSystem(m_playerFlags[i]->m_pNetworkPlayer)) { - m_playerFlags[i]->flags[index / 8] |= (128 >> (index % 8)); - } - } -} - -// Get value of a per system flag - can be read from the flags of the passed in -// player as anything else sent to that system should also have been duplicated -// here -bool IPlatformNetworkStub::SystemFlagGet(INetworkPlayer* pNetworkPlayer, - int index) { - if ((index < 0) || (index >= m_flagIndexSize)) return false; - if (pNetworkPlayer == nullptr) { - return false; - } - - for (unsigned int i = 0; i < m_playerFlags.size(); i++) { - if (m_playerFlags[i]->m_pNetworkPlayer == pNetworkPlayer) { - return ((m_playerFlags[i]->flags[index / 8] & - (128 >> (index % 8))) != 0); - } - } - return false; -} - -std::string IPlatformNetworkStub::GatherStats() { return ""; } - -std::string IPlatformNetworkStub::GatherRTTStats() { - std::string stats("Rtt: "); - - char stat[32]; - - for (unsigned int i = 0; i < GetPlayerCount(); ++i) { - IQNetPlayer* pQNetPlayer = - ((NetworkPlayerQNet*)GetPlayerByIndex(i))->GetQNetPlayer(); - - if (!pQNetPlayer->IsLocal()) { - memset(stat, 0, 32 * sizeof(char)); - snprintf(stat, 32, "%d: %d/", i, pQNetPlayer->GetCurrentRtt()); - stats.append(stat); - } - } - return stats; -} - -void IPlatformNetworkStub::TickSearch() {} - -void IPlatformNetworkStub::SearchForGames() {} - -int IPlatformNetworkStub::SearchForGamesThreadProc(void* lpParameter) { - return 0; -} - -void IPlatformNetworkStub::SetSearchResultsReady(int resultCount) { - m_bSearchResultsReady = true; - m_searchResultsCount[m_lastSearchPad] = resultCount; -} - -std::vector* IPlatformNetworkStub::GetSessionList( - int iPad, int localPlayers, bool partyOnly) { - std::vector* filteredList = - new std::vector(); - ; - return filteredList; -} - -bool IPlatformNetworkStub::GetGameSessionInfo( - int iPad, SessionID sessionId, FriendSessionInfo* foundSessionInfo) { - return false; -} - -void IPlatformNetworkStub::SetSessionsUpdatedCallback( - std::function callback) { - m_SessionsUpdatedCallback = std::move(callback); -} - -void IPlatformNetworkStub::GetFullFriendSessionInfo( - FriendSessionInfo* foundSession, - std::function callback) { - callback(true); -} - -void IPlatformNetworkStub::ForceFriendsSessionRefresh() { - app.DebugPrintf("Resetting friends session search data\n"); - - for (unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) { - m_searchResultsCount[i] = 0; - m_lastSearchStartTime[i] = 0; - delete m_pSearchResults[i]; - m_pSearchResults[i] = nullptr; - } -} - -INetworkPlayer* IPlatformNetworkStub::addNetworkPlayer( - IQNetPlayer* pQNetPlayer) { - NetworkPlayerQNet* pNetworkPlayer = new NetworkPlayerQNet(pQNetPlayer); - pQNetPlayer->SetCustomDataValue((uintptr_t)pNetworkPlayer); - currentNetworkPlayers.push_back(pNetworkPlayer); - return pNetworkPlayer; -} - -void IPlatformNetworkStub::removeNetworkPlayer(IQNetPlayer* pQNetPlayer) { - INetworkPlayer* pNetworkPlayer = getNetworkPlayer(pQNetPlayer); - for (auto it = currentNetworkPlayers.begin(); - it != currentNetworkPlayers.end(); it++) { - if (*it == pNetworkPlayer) { - currentNetworkPlayers.erase(it); - return; - } - } -} - -INetworkPlayer* IPlatformNetworkStub::getNetworkPlayer( - IQNetPlayer* pQNetPlayer) { - return pQNetPlayer ? (INetworkPlayer*)(pQNetPlayer->GetCustomDataValue()) - : nullptr; -} - -INetworkPlayer* IPlatformNetworkStub::GetLocalPlayerByUserIndex(int userIndex) { - return getNetworkPlayer(m_pIQNet->GetLocalPlayerByUserIndex(userIndex)); -} - -INetworkPlayer* IPlatformNetworkStub::GetPlayerByIndex(int playerIndex) { - return getNetworkPlayer(m_pIQNet->GetPlayerByIndex(playerIndex)); -} - -INetworkPlayer* IPlatformNetworkStub::GetPlayerByXuid(PlayerUID xuid) { - return getNetworkPlayer(m_pIQNet->GetPlayerByXuid(xuid)); -} - -INetworkPlayer* IPlatformNetworkStub::GetPlayerBySmallId( - unsigned char smallId) { - return getNetworkPlayer(m_pIQNet->GetPlayerBySmallId(smallId)); -} - -INetworkPlayer* IPlatformNetworkStub::GetHostPlayer() { - return getNetworkPlayer(m_pIQNet->GetHostPlayer()); -} - -bool IPlatformNetworkStub::IsHost() { - return m_pIQNet->IsHost() && !m_bHostChanged; -} - -bool IPlatformNetworkStub::JoinGameFromInviteInfo( - int userIndex, int userMask, const INVITE_INFO* pInviteInfo) { - return (m_pIQNet->JoinGameFromInviteInfo(userIndex, userMask, - pInviteInfo) == 0); -} - -void IPlatformNetworkStub::SetSessionTexturePackParentId(int id) { - m_hostGameSessionData.texturePackParentId = id; -} - -void IPlatformNetworkStub::SetSessionSubTexturePackId(int id) { - m_hostGameSessionData.subTexturePackId = id; -} - -void IPlatformNetworkStub::Notify(int ID, uintptr_t Param) {} - -bool IPlatformNetworkStub::IsInSession() { - return m_pIQNet->GetState() != QNET_STATE_IDLE; -} - -bool IPlatformNetworkStub::IsInGameplay() { - return m_pIQNet->GetState() == QNET_STATE_GAME_PLAY; -} - -bool IPlatformNetworkStub::IsReadyToPlayOrIdle() { return true; } diff --git a/targets/app/common/Network/PlatformNetworkManagerStub.h b/targets/app/common/Network/PlatformNetworkManagerStub.h deleted file mode 100644 index f1ee2bd3c..000000000 --- a/targets/app/common/Network/PlatformNetworkManagerStub.h +++ /dev/null @@ -1,198 +0,0 @@ -#pragma once -#include -// using namespace std; -#include -#include - -#include "platform/network/IPlatformNetwork.h" -#include "minecraft/client/model/SkinBox.h" -#include "minecraft/network/platform/NetworkPlayerInterface.h" -#include "minecraft/network/platform/SessionInfo.h" -#include "platform/C4JThread.h" -#include "platform/NetTypes.h" -#include "platform/PlatformTypes.h" -#include "platform/XboxStubs.h" - -class C4JThread; -class CGameNetworkManager; -class INetworkPlayer; - -class IPlatformNetworkStub : public IPlatformNetwork { - friend class CGameNetworkManager; - -public: - virtual bool Initialise(CGameNetworkManager* pGameNetworkManager, - int flagIndexSize); - virtual void Terminate(); - virtual int GetJoiningReadyPercentage(); - virtual int CorrectErrorIDS(int IDS); - - virtual void DoWork(); - virtual int GetPlayerCount(); - virtual int GetOnlinePlayerCount(); - virtual int GetLocalPlayerMask(int playerIndex); - virtual bool AddLocalPlayerByUserIndex(int userIndex); - virtual bool RemoveLocalPlayerByUserIndex(int userIndex); - virtual INetworkPlayer* GetLocalPlayerByUserIndex(int userIndex); - virtual INetworkPlayer* GetPlayerByIndex(int playerIndex); - virtual INetworkPlayer* GetPlayerByXuid(PlayerUID xuid); - virtual INetworkPlayer* GetPlayerBySmallId(unsigned char smallId); - virtual bool ShouldMessageForFullSession(); - - virtual INetworkPlayer* GetHostPlayer(); - virtual bool IsHost(); - virtual bool JoinGameFromInviteInfo(int userIndex, int userMask, - const INVITE_INFO* pInviteInfo); - virtual bool LeaveGame(bool bMigrateHost); - - virtual bool IsInSession(); - virtual bool IsInGameplay(); - virtual bool IsReadyToPlayOrIdle(); - virtual bool IsInStatsEnabledSession(); - virtual bool SessionHasSpace(unsigned int spaceRequired = 1); - virtual void SendInviteGUI(int quadrant); - virtual bool IsAddingPlayer(); - - virtual void HostGame(int localUsersMask, bool bOnlineGame, bool bIsPrivate, - unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, - unsigned char privateSlots = 0); - virtual int JoinGame(FriendSessionInfo* searchResult, int localUsersMask, - int primaryUserIndex); - virtual bool SetLocalGame(bool isLocal); - virtual bool IsLocalGame() { return m_bIsOfflineGame; } - virtual void SetPrivateGame(bool isPrivate); - virtual bool IsPrivateGame() { return m_bIsPrivateGame; } - virtual bool IsLeavingGame() { return m_bLeavingGame; } - virtual void ResetLeavingGame() { m_bLeavingGame = false; } - - virtual void RegisterPlayerChangedCallback( - int iPad, - std::function callback); - virtual void UnRegisterPlayerChangedCallback(int iPad); - - virtual void HandleSignInChange(); - - virtual bool _RunNetworkGame(); - -private: - bool isSystemPrimaryPlayer(IQNetPlayer* pQNetPlayer); - virtual bool _LeaveGame(bool bMigrateHost, bool bLeaveRoom); - virtual void _HostGame( - int dwUsersMask, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, - unsigned char privateSlots = 0); - virtual bool _StartGame(); - - IQNet* m_pIQNet; // pointer to QNet interface - - void* m_notificationListener; - - std::vector - m_machineQNetPrimaryPlayers; // collection of players that we deem to - // be the main one for that system - - bool m_bLeavingGame; - bool m_bLeaveGameOnTick; - bool m_migrateHostOnLeave; - bool m_bHostChanged; - - bool m_bIsOfflineGame; - bool m_bIsPrivateGame; - int m_flagIndexSize; - - // This is only maintained by the host, and is not valid on client machines - GameSessionData m_hostGameSessionData; - CGameNetworkManager* m_pGameNetworkManager; - -public: - virtual void UpdateAndSetGameSessionData( - INetworkPlayer* pNetworkPlayerLeaving = nullptr); - -private: - std::function - playerChangedCallback[XUSER_MAX_COUNT]; - - static int RemovePlayerOnSocketClosedThreadProc(void* lpParam); - virtual bool RemoveLocalPlayer(INetworkPlayer* pNetworkPlayer); - - // Things for handling per-system flags - class PlayerFlags { - public: - INetworkPlayer* m_pNetworkPlayer; - unsigned char* flags; - unsigned int count; - PlayerFlags(INetworkPlayer* pNetworkPlayer, unsigned int count); - ~PlayerFlags(); - }; - std::vector m_playerFlags; - void SystemFlagAddPlayer(INetworkPlayer* pNetworkPlayer); - void SystemFlagRemovePlayer(INetworkPlayer* pNetworkPlayer); - void SystemFlagReset(); - -public: - virtual void SystemFlagSet(INetworkPlayer* pNetworkPlayer, int index); - virtual bool SystemFlagGet(INetworkPlayer* pNetworkPlayer, int index); - - // For telemetry -private: - float m_lastPlayerEventTimeStart; - -public: - std::string GatherStats(); - std::string GatherRTTStats(); - -private: - std::vector friendsSessions[XUSER_MAX_COUNT]; - int m_searchResultsCount[XUSER_MAX_COUNT]; - int m_lastSearchStartTime[XUSER_MAX_COUNT]; - - // The results that will be filled in with the current search - XSESSION_SEARCHRESULT_HEADER* m_pSearchResults[XUSER_MAX_COUNT]; - XNQOS* m_pQoSResult[XUSER_MAX_COUNT]; - - // The results from the previous search, which are currently displayed in - // the game - XSESSION_SEARCHRESULT_HEADER* m_pCurrentSearchResults[XUSER_MAX_COUNT]; - XNQOS* m_pCurrentQoSResult[XUSER_MAX_COUNT]; - int m_currentSearchResultsCount[XUSER_MAX_COUNT]; - - int m_lastSearchPad; - bool m_bSearchResultsReady; - bool m_bSearchPending; - std::function m_SessionsUpdatedCallback; - - C4JThread* m_SearchingThread; - - void TickSearch(); - void SearchForGames(); - static int SearchForGamesThreadProc(void* lpParameter); - - void SetSearchResultsReady(int resultCount = 0); - - std::vector currentNetworkPlayers; - INetworkPlayer* addNetworkPlayer(IQNetPlayer* pQNetPlayer); - void removeNetworkPlayer(IQNetPlayer* pQNetPlayer); - static INetworkPlayer* getNetworkPlayer(IQNetPlayer* pQNetPlayer); - - virtual void SetSessionTexturePackParentId(int id); - virtual void SetSessionSubTexturePackId(int id); - virtual void Notify(int ID, uintptr_t Param); - -public: - virtual std::vector* GetSessionList(int iPad, - int localPlayers, - bool partyOnly); - virtual bool GetGameSessionInfo(int iPad, SessionID sessionId, - FriendSessionInfo* foundSession); - virtual void SetSessionsUpdatedCallback(std::function callback); - virtual void GetFullFriendSessionInfo( - FriendSessionInfo* foundSession, - std::function callback); - virtual void ForceFriendsSessionRefresh(); - -private: - void NotifyPlayerJoined(IQNetPlayer* pQNetPlayer); - - void FakeLocalPlayerJoined() { - NotifyPlayerJoined(m_pIQNet->GetLocalPlayerByUserIndex(0)); - } -}; diff --git a/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.cpp b/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.cpp index 6708700e1..d12888702 100644 --- a/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.cpp +++ b/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.cpp @@ -8,8 +8,7 @@ #include -#include "app/common/Leaderboards/LeaderboardInterface.h" -#include "app/common/Leaderboards/LeaderboardManager.h" +#include "platform/leaderboard/leaderboard.h" #include "app/common/UI/Controls/UIControl_Label.h" #include "app/common/UI/Controls/UIControl_LeaderboardList.h" #include "app/common/UI/UILayer.h" @@ -96,7 +95,7 @@ const UIScene_LeaderboardsMenu::LeaderboardDescriptor UIScene_LeaderboardsMenu:: UIScene_LeaderboardsMenu::UIScene_LeaderboardsMenu(int iPad, void* initData, UILayer* parentLayer) - : UIScene(iPad, parentLayer), m_interface(LeaderboardManager::Instance()) { + : UIScene(iPad, parentLayer) { // Setup all the Iggy references we need for this scene initialiseMovie(); @@ -159,7 +158,7 @@ std::string UIScene_LeaderboardsMenu::getMoviePath() { void UIScene_LeaderboardsMenu::tick() { UIScene::tick(); - m_interface.tick(); + PlatformLeaderboard.Tick(); } void UIScene_LeaderboardsMenu::handleReload() { @@ -208,7 +207,7 @@ void UIScene_LeaderboardsMenu::handleInput(int iPad, int key, bool repeat, // Do nothing if a stats read is currently in progress, otherwise // the system complains about to many read requests if (pressed && m_bPopulatedOnce && - LeaderboardManager::Instance()->isIdle()) { + PlatformLeaderboard.isIdle()) { // CD - Added for audio ui.PlayUISFX(eSFX_Scroll); @@ -241,7 +240,7 @@ void UIScene_LeaderboardsMenu::handleInput(int iPad, int key, bool repeat, // Do nothing if a stats read is currently in progress, otherwise // the system complains about to many read requests if (pressed && m_bPopulatedOnce && - LeaderboardManager::Instance()->isIdle()) { + PlatformLeaderboard.isIdle()) { // CD - Added for audio ui.PlayUISFX(eSFX_Scroll); @@ -272,7 +271,7 @@ void UIScene_LeaderboardsMenu::handleInput(int iPad, int key, bool repeat, // Do nothing if a stats read is currently in progress, otherwise // the system complains about to many read requests if (pressed && m_bPopulatedOnce && - LeaderboardManager::Instance()->isIdle()) { + PlatformLeaderboard.isIdle()) { // CD - Added for audio ui.PlayUISFX(eSFX_Scroll); @@ -286,7 +285,7 @@ void UIScene_LeaderboardsMenu::handleInput(int iPad, int key, bool repeat, // Do nothing if a stats read is currently in progress, otherwise // the system complains about to many read requests if (pressed && m_bPopulatedOnce && - LeaderboardManager::Instance()->isIdle()) { + PlatformLeaderboard.isIdle()) { // CD - Added for audio ui.PlayUISFX(eSFX_Scroll); @@ -348,7 +347,7 @@ void UIScene_LeaderboardsMenu::ReadStats(int startIndex) { m_newEntryIndex = (unsigned int)startIndex; // m_newReadSize = std::min((int)READ_SIZE, // (int)m_leaderboard.m_totalEntryCount-(startIndex-1)); - } + } // app.DebugPrintf("Requesting stats read %d - %d - %d\n", // m_currentLeaderboard, startIndex == -1 ? m_currentFilter : @@ -366,7 +365,7 @@ void UIScene_LeaderboardsMenu::ReadStats(int startIndex) { switch (filtermode) { case IPlatformLeaderboard::eFM_TopRank: { - m_interface.ReadStats_TopRank( + PlatformLeaderboard.ReadStats_TopRank( this, m_currentDifficulty, (IPlatformLeaderboard::EStatsType)m_currentLeaderboard, m_newEntryIndex, m_newReadSize); @@ -375,7 +374,7 @@ void UIScene_LeaderboardsMenu::ReadStats(int startIndex) { PlayerUID uid; PlatformProfile.GetXUID(PlatformProfile.GetPrimaryPad(), &uid, true); - m_interface.ReadStats_MyScore( + PlatformLeaderboard.ReadStats_MyScore( this, m_currentDifficulty, (IPlatformLeaderboard::EStatsType)m_currentLeaderboard, uid /*ignored on PS3*/, m_newReadSize); @@ -384,7 +383,7 @@ void UIScene_LeaderboardsMenu::ReadStats(int startIndex) { PlayerUID uid; PlatformProfile.GetXUID(PlatformProfile.GetPrimaryPad(), &uid, true); - m_interface.ReadStats_Friends( + PlatformLeaderboard.ReadStats_Friends( this, m_currentDifficulty, (IPlatformLeaderboard::EStatsType)m_currentLeaderboard, uid /*ignored on PS3*/, m_newEntryIndex, m_newReadSize); @@ -406,7 +405,7 @@ bool UIScene_LeaderboardsMenu::OnStatsReadComplete( m_isProcessingStatsRead = true; - // bool noResults = LeaderboardManager::Instance()->GetStatsState() != + // bool noResults = PlatformLeaderboard.GetStatsState() != // XboxIPlatformLeaderboard::eStatsState_Ready; bool ret; @@ -416,7 +415,7 @@ bool UIScene_LeaderboardsMenu::OnStatsReadComplete( m_stats = results; ret = RetrieveStats(); - // else LeaderboardManager::Instance()->SetStatsRetrieved(false); + // else PlatformLeaderboard.SetStatsRetrieved(false); PopulateLeaderboard(retIn); @@ -484,7 +483,7 @@ bool UIScene_LeaderboardsMenu::RetrieveStats() { m_leaderboard.m_entries[entryIndex].m_bRequestedFriend = false; } - // LeaderboardManager::Instance()->SetStatsRetrieved(true); + // PlatformLeaderboard.SetStatsRetrieved(true); m_newEntryIndex = 0; m_newEntriesCount = NUM_ENTRIES; @@ -492,11 +491,11 @@ bool UIScene_LeaderboardsMenu::RetrieveStats() { return true; } - // assert( LeaderboardManager::Instance()->GetStats() != nullptr ); + // assert( PlatformLeaderboard.GetStats() != nullptr ); // PXUSER_STATS_READ_RESULTS stats = - // LeaderboardManager::Instance()->GetStats(); if( m_currentFilter == + // PlatformLeaderboard.GetStats(); if( m_currentFilter == // IPlatformLeaderboard::eFM_Friends ) - // LeaderboardManager::Instance()->SortFriendStats(); + // PlatformLeaderboard.SortFriendStats(); bool isDistanceLeaderboard = LEADERBOARD_DESCRIPTORS[m_currentLeaderboard][m_currentDifficulty] @@ -514,7 +513,7 @@ bool UIScene_LeaderboardsMenu::RetrieveStats() { : m_numStats; if (m_leaderboard.m_totalEntryCount == 0 || m_newEntriesCount == 0) { - // LeaderboardManager::Instance()->SetStatsRetrieved(false); + // PlatformLeaderboard.SetStatsRetrieved(false); return false; } @@ -826,7 +825,7 @@ void UIScene_LeaderboardsMenu::handleRequestMoreData(F64 startIndex, bool up) { if (m_leaderboard.m_totalEntryCount > 0 && (item + 1) < GetEntryStartIndex()) { - if (LeaderboardManager::Instance()->isIdle()) { + if (PlatformLeaderboard.isIdle()) { int readIndex = (GetEntryStartIndex() + 1) - READ_SIZE; if (readIndex <= 0) readIndex = 1; assert(readIndex >= 1 && @@ -836,7 +835,7 @@ void UIScene_LeaderboardsMenu::handleRequestMoreData(F64 startIndex, bool up) { } else if (m_leaderboard.m_totalEntryCount > 0 && (item + 1) >= (GetEntryStartIndex() + m_leaderboard.m_entries.size())) { - if (LeaderboardManager::Instance()->isIdle()) { + if (PlatformLeaderboard.isIdle()) { int readIndex = (GetEntryStartIndex() + 1) + m_leaderboard.m_entries.size(); assert(readIndex >= 1 && diff --git a/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.h b/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.h index 597c3efa4..5660dc573 100644 --- a/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.h +++ b/targets/app/common/UI/Scenes/Frontend Menu screens/UIScene_LeaderboardsMenu.h @@ -3,8 +3,6 @@ #include #include -#include "app/common/Leaderboards/LeaderboardInterface.h" -#include "app/common/Leaderboards/LeaderboardManager.h" #include "app/common/UI/All Platforms/UIEnums.h" #include "app/common/UI/Controls/UIControl_Label.h" #include "app/common/UI/Controls/UIControl_LeaderboardList.h" @@ -12,6 +10,8 @@ #include "app/linux/Iggy/include/iggy.h" #include "platform/PlatformTypes.h" #include "platform/storage/storage.h" +#include "platform/leaderboard/leaderboard.h" + #ifndef _ENABLEIGGY #include "app/linux/Stubs/iggy_stubs.h" #endif @@ -98,8 +98,6 @@ private: bool m_bPopulatedOnce; bool m_bReady; - LeaderboardInterface m_interface; - UIControl_LeaderboardList m_listEntries; UIControl_Label m_labelFilter, m_labelLeaderboard, m_labelEntries, m_labelInfo; diff --git a/targets/app/common_sources.txt b/targets/app/common_sources.txt index cda897f04..404baea0f 100644 --- a/targets/app/common_sources.txt +++ b/targets/app/common_sources.txt @@ -45,8 +45,6 @@ common/GameRules/LevelRules/RuleDefinitions/UseTileRuleDefinition.cpp common/GameRules/LevelRules/Rules/GameRule.cpp common/GameSettingsManager.cpp common/Game_XuiActions.cpp -common/Leaderboards/LeaderboardInterface.cpp -common/Leaderboards/LeaderboardManager.cpp common/LocalizationManager.cpp common/MenuController.cpp common/Network/GameNetworkManager.cpp diff --git a/targets/app/linux/Leaderboards/LinuxLeaderboardManager.cpp b/targets/app/linux/Leaderboards/LinuxLeaderboardManager.cpp deleted file mode 100644 index dda0e9728..000000000 --- a/targets/app/linux/Leaderboards/LinuxLeaderboardManager.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "LinuxLeaderboardManager.h" - -#include "app/common/Leaderboards/LeaderboardManager.h" - -LeaderboardManager* LeaderboardManager::m_instance = - new LinuxLeaderboardManager(); // Singleton instance of the - // LeaderboardManager \ No newline at end of file diff --git a/targets/app/linux/Leaderboards/LinuxLeaderboardManager.h b/targets/app/linux/Leaderboards/LinuxLeaderboardManager.h deleted file mode 100644 index cdca7a091..000000000 --- a/targets/app/linux/Leaderboards/LinuxLeaderboardManager.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include "app/common/Leaderboards/LeaderboardManager.h" -#include "platform/PlatformTypes.h" - -class LinuxLeaderboardManager : public LeaderboardManager { -public: - virtual void Tick() {} - - // Open a session - virtual bool OpenSession() { return true; } - - // Close a session - virtual void CloseSession() {} - - // Delete a session - virtual void DeleteSession() {} - - // Write the given stats - // This is called synchronously and will not free any memory allocated for - // views when it is done - - virtual bool WriteStats(unsigned int viewCount, ViewIn views) { - return false; - } - - virtual bool ReadStats_Friends(LeaderboardReadListener* callback, - int difficulty, EStatsType type, - PlayerUID myUID) { - return false; - } - virtual bool ReadStats_MyScore(LeaderboardReadListener* callback, - int difficulty, EStatsType type, - PlayerUID myUID, unsigned int readCount) { - return false; - } - virtual bool ReadStats_TopRank(LeaderboardReadListener* callback, - int difficulty, EStatsType type, - unsigned int startIndex, - unsigned int readCount) { - return false; - } - - // Perform a flush of the stats - virtual void FlushStats() {} - - // Cancel the current operation - virtual void CancelOperation() {} - - // Is the leaderboard manager idle. - virtual bool isIdle() { return true; } -}; diff --git a/targets/app/linux/Linux_Minecraft.cpp b/targets/app/linux/Linux_Minecraft.cpp index 500d4312e..44029ade7 100644 --- a/targets/app/linux/Linux_Minecraft.cpp +++ b/targets/app/linux/Linux_Minecraft.cpp @@ -48,7 +48,7 @@ static void sigsegv_handler(int sig) { #include #include -#include "app/common/Leaderboards/LeaderboardManager.h" +#include "platform/leaderboard/leaderboard.h" #include "minecraft/stats/StatsCounter.h" #include "minecraft/world/level/Level.h" // #include "../Common/XUI/XUI_Scene_Container.h" @@ -71,11 +71,6 @@ static void sigsegv_handler(int sig) { #include "minecraft/world/level/tile/Tile.h" #include "strings.h" -// #include "../Orbis/Leaderboards/OrbisLeaderboardManager.h" - -// #include "../Orbis/Network/Orbis_NPToolkit.h" -// #include "../Orbis/Network/SonyVoiceChat_Orbis.h" - #define THEME_NAME "584111F70AAAAAAA" #define THEME_FILESIZE 2797568 @@ -518,7 +513,7 @@ int main(int argc, const char* argv[]) { // scenes) and pass it down via constructor injection. Once the UI // side is also injected, the singleton can be deleted entirely and // the backend constructed via std::make_unique here. - Minecraft::main(*LeaderboardManager::Instance()); + Minecraft::main(PlatformLeaderboard); Minecraft* pMinecraft = Minecraft::GetInstance(); app.InitGameSettings(); diff --git a/targets/app/linux_sources.txt b/targets/app/linux_sources.txt index 209dba15b..13d7459dc 100644 --- a/targets/app/linux_sources.txt +++ b/targets/app/linux_sources.txt @@ -1,5 +1,4 @@ linux/Iggy/gdraw/gdraw.c -linux/Leaderboards/LinuxLeaderboardManager.cpp linux/LinuxGame.cpp linux/Linux_Minecraft.cpp linux/Linux_UIController.cpp diff --git a/targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.cpp b/targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.cpp deleted file mode 100644 index fed315b0e..000000000 --- a/targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "WindowsLeaderboardManager.h" - -LeaderboardManager* LeaderboardManager::m_instance = - new WindowsLeaderboardManager(); // Singleton instance of the - // LeaderboardManager \ No newline at end of file diff --git a/targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.h b/targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.h deleted file mode 100644 index df81e27d6..000000000 --- a/targets/app/windows/src/Leaderboards/WindowsLeaderboardManager.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include "app/common/Leaderboards/LeaderboardManager.h" - -class WindowsLeaderboardManager : public LeaderboardManager { -public: - virtual void Tick() {} - - // Open a session - virtual bool OpenSession() { return true; } - - // Close a session - virtual void CloseSession() {} - - // Delete a session - virtual void DeleteSession() {} - - // Write the given stats - // This is called synchronously and will not free any memory allocated for - // views when it is done - - virtual bool WriteStats(unsigned int viewCount, ViewIn views) { - return false; - } - - virtual bool ReadStats_Friends(LeaderboardReadListener* callback, - int difficulty, EStatsType type, - PlayerUID myUID) { - return false; - } - virtual bool ReadStats_MyScore(LeaderboardReadListener* callback, - int difficulty, EStatsType type, - PlayerUID myUID, unsigned int readCount) { - return false; - } - virtual bool ReadStats_TopRank(LeaderboardReadListener* callback, - int difficulty, EStatsType type, - unsigned int startIndex, - unsigned int readCount) { - return false; - } - - // Perform a flush of the stats - virtual void FlushStats() {} - - // Cancel the current operation - virtual void CancelOperation() {} - - // Is the leaderboard manager idle. - virtual bool isIdle() { return true; } -}; diff --git a/targets/app/windows/src/Windows64_Minecraft.cpp b/targets/app/windows/src/Windows64_Minecraft.cpp index 4fdb59ee2..5abe340b9 100644 --- a/targets/app/windows/src/Windows64_Minecraft.cpp +++ b/targets/app/windows/src/Windows64_Minecraft.cpp @@ -804,7 +804,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, // g_NetworkManager.DoWork(); - // LeaderboardManager::Instance()->Tick(); + // PlatformLeaderboard.Tick(); // Render game graphics. if (app.GetGameStarted()) { pMinecraft->run_middle(); diff --git a/targets/minecraft/client/Minecraft.h b/targets/minecraft/client/Minecraft.h index 0d4b83764..5c2c3d45b 100644 --- a/targets/minecraft/client/Minecraft.h +++ b/targets/minecraft/client/Minecraft.h @@ -12,6 +12,7 @@ #include "platform/C4JThread.h" #include "platform/PlatformTypes.h" #include "platform/stubs.h" +#include "platform/leaderboard/leaderboard.h" class Timer; class MultiPlayerLevel; @@ -32,7 +33,6 @@ class HumanoidModel; class HitResult; class Options; class ConsoleSoundEngine; -class IPlatformLeaderboard; class MinecraftApplet; class MouseHandler; class TexturePackRepository;