16 #ifndef GFESDK_ISDK_CPP_IMPL_H 17 #define GFESDK_ISDK_CPP_IMPL_H 30 virtual NVGSDK_RetCode
Poll(
void);
32 virtual void GetUILanguageAsync(TGetUILanguageCallback cb =
nullptr,
void* cbContext =
nullptr);
34 NVGSDK_HANDLE* GetHandle();
47 struct CallbackContext
52 struct CallbackNotificationContext
54 TNotificationCallback callback;
57 static void __stdcall callbackWrapper(NVGSDK_RetCode rc,
void* appContext);
59 static inline void translateLocaleTable(std::map<std::string, std::string>
const& localeMap, std::vector<NVGSDK_LocalizedPair>& pairs);
61 NVGSDK_HANDLE* m_handle;
62 std::unique_ptr<CallbackNotificationContext> m_notificationCallbackContext;
70 memset(&cInputParams, 0,
sizeof(cInputParams));
71 cInputParams.
appName = inParams.appName.c_str();
73 if (!inParams.requiredScopes.empty())
75 cInputParams.
scopeTable =
const_cast<NVGSDK_Scope*
>(&inParams.requiredScopes[0]);
78 if (inParams.notificationCallback)
81 core->m_notificationCallbackContext.reset(
new CoreImpl::CallbackNotificationContext({ inParams.notificationCallback, inParams.notificationCallbackContext }));
91 std::vector<NVGSDK_ScopePermission> cScopePermissionList;
92 cScopePermissionList.resize(inParams.requiredScopes.size());
94 if (!inParams.requiredScopes.empty())
100 outParams.returnCode =
NVGSDK_Create(&core->m_handle, &cInputParams, &cOutputParams);
105 if (NVGSDK_FAILED(outParams.returnCode))
116 outParams.scopePermissions[scopePermission.scope] = scopePermission.permission;
123 inline CoreImpl::~CoreImpl()
141 cParams.scopeTable =
const_cast<NVGSDK_Scope*
>(¶ms.scopes[0]);
142 cParams.scopeTableSize = params.scopes.size();
149 std::unique_ptr<CallbackContext<TGetUILanguageCallback>> callbackContext(
reinterpret_cast<CallbackContext<TGetUILanguageCallback>*
>(context));
150 if (!callbackContext->callback)
return;
152 if (NVGSDK_FAILED(rc))
154 return callbackContext->callback(rc,
nullptr, callbackContext->appContext);
159 callbackContext->callback(rc, &language, callbackContext->appContext);
160 },
new CallbackContext<TGetUILanguageCallback>({ callback, context }));
163 inline NVGSDK_HANDLE* CoreImpl::GetHandle()
168 inline void CoreImpl::callbackWrapper(NVGSDK_RetCode rc,
void* context)
170 std::unique_ptr<CallbackContext<TCallback>> callbackContext(
reinterpret_cast<CallbackContext<TCallback>*
>(context));
171 if (!callbackContext->callback)
return;
173 callbackContext->callback(rc, callbackContext->appContext);
178 CallbackNotificationContext* callbackContext(reinterpret_cast<CallbackNotificationContext*>(context));
179 if (!callbackContext->callback)
return;
186 notification.context = callbackContext->appContext;
187 for (
size_t i = 0; i < data->permissionsChanged.scopePermissionTableSize; ++i)
189 notification.scopePermissions[data->permissionsChanged.scopePermissionTable[i].scope] = data->permissionsChanged.scopePermissionTable[i].permission;
191 callbackContext->callback(type, notification);
197 notification.context = callbackContext->appContext;
198 notification.open = data->overlayStateChanged.
open;
199 notification.state = data->overlayStateChanged.
state;
200 callbackContext->callback(type, notification);
208 inline void CoreImpl::translateLocaleTable(std::map<std::string, std::string>
const& localeMap, std::vector<NVGSDK_LocalizedPair>& pairs)
210 for (
auto it = localeMap.begin(); it != localeMap.end(); ++it)
220 #endif //GFESDK_ISDK_CPP_H
NVGSDK_ScopePermission * scopePermissionTable
Must be provided to call. Will be filled with scope/permission pairs.
NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_Poll(NVGSDK_HANDLE *handle)
C++ binding for NVGSDK_GetUILanguageResponse.
char gfeVersionStr[NVGSDK_MAX_LENGTH]
Must be provided to call. Will be populated by GFE version string.
NVGSDK_OverlayState state
State the overlay is closing from or opening to.
C++ binding for NVGSDK_CreateResponse.
Sent when the user accepts/denies the permissions dialog, or toggles in GFE3.
NVGSDK_EXPORT void NVGSDKApi NVGSDK_RequestPermissionsAsync(NVGSDK_HANDLE *handle, NVGSDK_RequestPermissionsParams const *params, NVGSDK_EmptyCallback callback, void *context)
NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_Release(NVGSDK_HANDLE *handle)
char const * cultureCode
Will be populated by the user's GFE language selection.
uint16_t versionMinor
Will be populated with SDK minor version.
virtual void RequestPermissionsAsync(RequestPermissionsParams const &, TCallback cb=nullptr, void *cbContext=nullptr)
virtual void GetUILanguageAsync(TGetUILanguageCallback cb=nullptr, void *cbContext=nullptr)
NVGSDK_EXPORT void NVGSDKApi NVGSDK_GetUILanguageAsync(NVGSDK_HANDLE *handle, NVGSDK_GetUILanguageCallback callback, void *context)
virtual NVGSDK_RetCode Poll(void)
static Core * Create(CreateInputParams const &, CreateResponse &)
bool open
true if the overlay is opening, false if it is closing
uint16_t versionMajor
Will be populated with SDK major version.
Sent when the in-game overlay is shown or removed.
NVGSDK_EXPORT NVGSDK_RetCode NVGSDKApi NVGSDK_Create(NVGSDK_HANDLE **handle, NVGSDK_CreateInputParams const *inParams, NVGSDK_CreateResponse *outParams)
size_t scopePermissionTableSize
Must be provided to call.