62 lines
1.8 KiB
C++
62 lines
1.8 KiB
C++
![]() |
#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();
|
||
|
}
|
||
|
}
|