2024-03-26 13:05:25 -05:00
|
|
|
#include "steam.h"
|
2024-05-21 18:50:53 -05:00
|
|
|
#ifndef NSTEAM
|
2024-03-26 14:57:35 -05:00
|
|
|
#include <steam/steam_api.h>
|
|
|
|
#include <steam/steam_api_flat.h>
|
2024-03-26 13:05:25 -05:00
|
|
|
|
2024-05-21 18:50:53 -05:00
|
|
|
#include "jsffi.h"
|
|
|
|
|
|
|
|
ISteamUserStats *stats = NULL;
|
|
|
|
ISteamApps *app = NULL;
|
|
|
|
ISteamRemoteStorage *remote = NULL;
|
|
|
|
ISteamUGC *ugc = NULL;
|
|
|
|
|
2024-03-26 14:57:35 -05:00
|
|
|
static JSValue js_steam_init(JSContext *js, JSValue this_v, int argc, JSValue *argv)
|
2024-03-26 13:05:25 -05:00
|
|
|
{
|
2024-05-21 18:50:53 -05:00
|
|
|
SteamErrMsg err;
|
|
|
|
SteamAPI_InitEx(&err);
|
|
|
|
JSValue str = str2js(err);
|
|
|
|
stats = SteamAPI_SteamUserStats();
|
|
|
|
app = SteamAPI_SteamApps();
|
|
|
|
remote = SteamAPI_SteamRemoteStorage();
|
|
|
|
ugc = SteamAPI_SteamUGC();
|
|
|
|
return str;
|
2024-03-26 13:05:25 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
static const JSCFunctionListEntry js_steam_funcs[] = {
|
2024-03-26 14:57:35 -05:00
|
|
|
MIST_FUNC_DEF(steam, init, 1),
|
2024-03-26 13:05:25 -05:00
|
|
|
};
|
|
|
|
|
2024-05-21 18:50:53 -05:00
|
|
|
JSC_SCALL(achievement_get32,
|
|
|
|
int32 data;
|
|
|
|
SteamAPI_ISteamUserStats_GetStatInt32(stats, str, &data);
|
|
|
|
return number2js(data);
|
|
|
|
)
|
|
|
|
|
|
|
|
JSC_SCALL(achievement_get,
|
|
|
|
bool data;
|
|
|
|
SteamAPI_ISteamUserStats_GetAchievement(stats, str, &data);
|
|
|
|
return boolean2js(data);
|
|
|
|
)
|
|
|
|
|
|
|
|
JSC_SCALL(achievement_set,
|
|
|
|
return boolean2js(SteamAPI_ISteamUserStats_SetAchievement(stats, str));
|
|
|
|
)
|
|
|
|
|
|
|
|
JSC_CCALL(achievement_num,
|
|
|
|
return number2js(SteamAPI_ISteamUserStats_GetNumAchievements(stats));
|
|
|
|
)
|
|
|
|
|
|
|
|
JSC_SCALL(achievement_clear, SteamAPI_ISteamUserStats_ClearAchievement(stats, str))
|
|
|
|
|
|
|
|
JSC_SCALL(achievement_user_get,
|
|
|
|
bool a;
|
|
|
|
boolean2js(SteamAPI_ISteamUserStats_GetUserAchievement(stats, js2uint64(argv[1]), str, &a));
|
|
|
|
ret = boolean2js(a);
|
|
|
|
)
|
|
|
|
|
|
|
|
static const JSCFunctionListEntry js_achievement_funcs[] = {
|
|
|
|
MIST_FUNC_DEF(achievement, clear, 1),
|
|
|
|
MIST_FUNC_DEF(achievement, get32, 2),
|
|
|
|
MIST_FUNC_DEF(achievement, get, 2),
|
|
|
|
MIST_FUNC_DEF(achievement, set, 1),
|
|
|
|
MIST_FUNC_DEF(achievement, num, 0),
|
|
|
|
MIST_FUNC_DEF(achievement, user_get, 2),
|
|
|
|
};
|
|
|
|
|
|
|
|
JSC_CCALL(cloud_app_enabled,
|
|
|
|
return boolean2js(SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(remote))
|
|
|
|
)
|
|
|
|
JSC_CCALL(cloud_enable, SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(remote, js2boolean(self)))
|
|
|
|
JSC_CCALL(cloud_account_enabled, return boolean2js(SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(remote)))
|
|
|
|
|
|
|
|
static const JSCFunctionListEntry js_cloud_funcs[] = {
|
|
|
|
MIST_FUNC_DEF(cloud, app_enabled, 0),
|
|
|
|
MIST_FUNC_DEF(cloud, account_enabled, 0),
|
|
|
|
MIST_FUNC_DEF(cloud, enable, 1)
|
|
|
|
};
|
|
|
|
|
|
|
|
JSC_CCALL(app_owner,
|
|
|
|
uint64_t own = SteamAPI_ISteamApps_GetAppOwner(app);
|
|
|
|
return JS_NewBigUint64(js, own);
|
|
|
|
)
|
|
|
|
static const JSCFunctionListEntry js_app_funcs[] = {
|
|
|
|
MIST_FUNC_DEF(app, owner, 0),
|
|
|
|
};
|
|
|
|
|
2024-03-26 14:57:35 -05:00
|
|
|
JSValue js_init_steam(JSContext *js)
|
2024-03-26 13:05:25 -05:00
|
|
|
{
|
2024-03-26 14:57:35 -05:00
|
|
|
JSValue steam = JS_NewObject(js);
|
|
|
|
JS_SetPropertyFunctionList(js, steam, js_steam_funcs, countof(js_steam_funcs));
|
2024-05-21 18:50:53 -05:00
|
|
|
JSValue achievements = JS_NewObject(js);
|
|
|
|
JS_SetPropertyFunctionList(js, achievements, js_achievement_funcs, countof(js_achievement_funcs));
|
|
|
|
js_setpropstr(steam, "achievements", achievements);
|
|
|
|
|
|
|
|
JSValue app = JS_NewObject(js);
|
|
|
|
JS_SetPropertyFunctionList(js, app, js_app_funcs, countof(js_app_funcs));
|
|
|
|
js_setpropstr(steam, "app", app);
|
|
|
|
|
|
|
|
JSValue cloud = JS_NewObject(js);
|
|
|
|
JS_SetPropertyFunctionList(js, cloud, js_cloud_funcs, countof(js_cloud_funcs));
|
|
|
|
js_setpropstr(steam, "cloud", cloud);
|
2024-03-26 14:57:35 -05:00
|
|
|
return steam;
|
2024-04-15 15:01:28 -05:00
|
|
|
}
|
2024-05-21 18:50:53 -05:00
|
|
|
#endif
|