Files
GTASource/game/Core/UserEntitlementService.cpp

62 lines
1.8 KiB
C++
Raw Normal View History

2025-02-23 17:40:52 +08:00
#include "UserEntitlementService.h"
#include "Core/IUserEntitlementDataProvider.h"
#include "fwsys/gameskeleton.h"
#include "net/status.h"
#include "system/param.h"
// TODO: Include correct data provider based on platform
#include "Core/UserEntitlementDataProvider_dummy.h"
PARAM(nostoryModeEntitlement, "Simulate story mode being unavailable without checking user entitlements");
CUserEntitlementService::CUserEntitlementService() :
mp_latestEntitlements(nullptr),
mp_latestRequestStatus(nullptr)
{
// TODO: Resolve data provider based on platform
mp_dataProvider = rage_new CUserEntitlementDataProvider_dummy();
}
CUserEntitlementService::~CUserEntitlementService()
{
delete mp_dataProvider;
}
bool CUserEntitlementService::AreEntitlementsUpToDate() const
{
const bool success = mp_dataProvider && mp_dataProvider->AreEntitlementsUpToDate();
return success;
}
bool CUserEntitlementService::RequestEntitlements()
{
const bool success = mp_dataProvider && mp_dataProvider->RequestEntitlements(mp_latestEntitlements, mp_latestRequestStatus);
return success;
}
bool CUserEntitlementService::TryGetEntitlements(const UserEntitlements*& out_entitlements) const
{
out_entitlements = mp_latestEntitlements;
const bool success = mp_latestRequestStatus && mp_latestRequestStatus->Succeeded();
return success;
}
void CUserEntitlementServiceWrapper::Init(unsigned int initMode)
{
if (initMode == INIT_CORE)
{
SUserEntitlementService::Instantiate();
// TODO: Requesting immediately here to populate from dummy data
// Should hook into platform sign in event
SUserEntitlementService::GetInstance().RequestEntitlements();
}
}
void CUserEntitlementServiceWrapper::Shutdown(unsigned int shutdownMode)
{
if (shutdownMode == SHUTDOWN_CORE)
{
SUserEntitlementService::Destroy();
}
}