steamworks-ffi-node 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -20
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/SteamAPICore.d.ts +32 -9
- package/dist/internal/SteamAPICore.d.ts.map +1 -1
- package/dist/internal/SteamAPICore.js +46 -15
- package/dist/internal/SteamAPICore.js.map +1 -1
- package/dist/internal/SteamAchievementManager.d.ts +25 -25
- package/dist/internal/SteamAchievementManager.js +26 -26
- package/dist/internal/SteamAchievementManager.js.map +1 -1
- package/dist/internal/SteamCallbackPoller.d.ts +68 -0
- package/dist/internal/SteamCallbackPoller.d.ts.map +1 -0
- package/dist/internal/SteamCallbackPoller.js +134 -0
- package/dist/internal/SteamCallbackPoller.js.map +1 -0
- package/dist/internal/SteamLeaderboardManager.d.ts +338 -0
- package/dist/internal/SteamLeaderboardManager.d.ts.map +1 -0
- package/dist/internal/SteamLeaderboardManager.js +734 -0
- package/dist/internal/SteamLeaderboardManager.js.map +1 -0
- package/dist/internal/SteamLibraryLoader.d.ts +15 -0
- package/dist/internal/SteamLibraryLoader.d.ts.map +1 -1
- package/dist/internal/SteamLibraryLoader.js +26 -0
- package/dist/internal/SteamLibraryLoader.js.map +1 -1
- package/dist/internal/SteamStatsManager.d.ts +57 -45
- package/dist/internal/SteamStatsManager.d.ts.map +1 -1
- package/dist/internal/SteamStatsManager.js +146 -101
- package/dist/internal/SteamStatsManager.js.map +1 -1
- package/dist/steam.d.ts +115 -172
- package/dist/steam.d.ts.map +1 -1
- package/dist/steam.js +24 -241
- package/dist/steam.js.map +1 -1
- package/dist/{types.d.ts → types/achievements.d.ts} +19 -30
- package/dist/types/achievements.d.ts.map +1 -0
- package/dist/types/achievements.js +6 -0
- package/dist/types/achievements.js.map +1 -0
- package/dist/types/core.d.ts +18 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +6 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +34 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/leaderboards.d.ts +121 -0
- package/dist/types/leaderboards.d.ts.map +1 -0
- package/dist/types/leaderboards.js +45 -0
- package/dist/types/leaderboards.js.map +1 -0
- package/dist/types/stats.d.ts +37 -0
- package/dist/types/stats.d.ts.map +1 -0
- package/dist/types/stats.js +6 -0
- package/dist/types/stats.js.map +1 -0
- package/package.json +4 -3
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/steamworks_sdk/README.md +0 -82
package/dist/steam.js
CHANGED
|
@@ -4,23 +4,36 @@ const SteamLibraryLoader_1 = require("./internal/SteamLibraryLoader");
|
|
|
4
4
|
const SteamAPICore_1 = require("./internal/SteamAPICore");
|
|
5
5
|
const SteamAchievementManager_1 = require("./internal/SteamAchievementManager");
|
|
6
6
|
const SteamStatsManager_1 = require("./internal/SteamStatsManager");
|
|
7
|
+
const SteamLeaderboardManager_1 = require("./internal/SteamLeaderboardManager");
|
|
7
8
|
/**
|
|
8
9
|
* Real Steamworks SDK implementation using Koffi FFI
|
|
9
10
|
* This connects directly to the actual Steam client and Steamworks SDK
|
|
10
11
|
*
|
|
11
|
-
* Uses composition pattern with specialized
|
|
12
|
-
* -
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
15
|
-
*
|
|
12
|
+
* Uses composition pattern with specialized managers:
|
|
13
|
+
* - achievements: SteamAchievementManager - All achievement operations
|
|
14
|
+
* - stats: SteamStatsManager - All stats operations
|
|
15
|
+
* - leaderboards: SteamLeaderboardManager - All leaderboard operations
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const steam = Steam.getInstance();
|
|
20
|
+
* steam.init({ appId: 480 });
|
|
21
|
+
*
|
|
22
|
+
* // Use managers directly
|
|
23
|
+
* await steam.achievements.unlockAchievement('ACH_WIN_ONE_GAME');
|
|
24
|
+
* await steam.stats.setStatInt('NumGames', 1);
|
|
25
|
+
* await steam.leaderboards.uploadScore(handle, 1000, KeepBest);
|
|
26
|
+
* ```
|
|
16
27
|
*/
|
|
17
28
|
class SteamworksSDK {
|
|
18
29
|
constructor() {
|
|
19
|
-
// Initialize
|
|
30
|
+
// Initialize internal modules
|
|
20
31
|
this.libraryLoader = new SteamLibraryLoader_1.SteamLibraryLoader();
|
|
21
32
|
this.apiCore = new SteamAPICore_1.SteamAPICore(this.libraryLoader);
|
|
22
|
-
|
|
23
|
-
this.
|
|
33
|
+
// Initialize public managers
|
|
34
|
+
this.achievements = new SteamAchievementManager_1.SteamAchievementManager(this.libraryLoader, this.apiCore);
|
|
35
|
+
this.stats = new SteamStatsManager_1.SteamStatsManager(this.libraryLoader, this.apiCore);
|
|
36
|
+
this.leaderboards = new SteamLeaderboardManager_1.SteamLeaderboardManager(this.libraryLoader, this.apiCore);
|
|
24
37
|
}
|
|
25
38
|
static getInstance() {
|
|
26
39
|
if (!SteamworksSDK.instance) {
|
|
@@ -28,6 +41,9 @@ class SteamworksSDK {
|
|
|
28
41
|
}
|
|
29
42
|
return SteamworksSDK.instance;
|
|
30
43
|
}
|
|
44
|
+
// ========================================
|
|
45
|
+
// CORE API METHODS
|
|
46
|
+
// ========================================
|
|
31
47
|
/**
|
|
32
48
|
* Initialize Steam API with real Steamworks SDK
|
|
33
49
|
*/
|
|
@@ -46,48 +62,6 @@ class SteamworksSDK {
|
|
|
46
62
|
getStatus() {
|
|
47
63
|
return this.apiCore.getStatus();
|
|
48
64
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Get all achievements from Steam
|
|
51
|
-
*/
|
|
52
|
-
async getAllAchievements() {
|
|
53
|
-
return this.achievementManager.getAllAchievements();
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Unlock achievement in Steam
|
|
57
|
-
*/
|
|
58
|
-
async unlockAchievement(achievementName) {
|
|
59
|
-
return this.achievementManager.unlockAchievement(achievementName);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Clear achievement in Steam (for testing)
|
|
63
|
-
*/
|
|
64
|
-
async clearAchievement(achievementName) {
|
|
65
|
-
return this.achievementManager.clearAchievement(achievementName);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Check if achievement is unlocked
|
|
69
|
-
*/
|
|
70
|
-
async isAchievementUnlocked(achievementName) {
|
|
71
|
-
return this.achievementManager.isAchievementUnlocked(achievementName);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get achievement by API name
|
|
75
|
-
*/
|
|
76
|
-
async getAchievementByName(achievementName) {
|
|
77
|
-
return this.achievementManager.getAchievementByName(achievementName);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Get total number of achievements
|
|
81
|
-
*/
|
|
82
|
-
async getTotalAchievementCount() {
|
|
83
|
-
return this.achievementManager.getTotalAchievementCount();
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Get number of unlocked achievements
|
|
87
|
-
*/
|
|
88
|
-
async getUnlockedAchievementCount() {
|
|
89
|
-
return this.achievementManager.getUnlockedAchievementCount();
|
|
90
|
-
}
|
|
91
65
|
/**
|
|
92
66
|
* Run Steam callbacks to process pending events
|
|
93
67
|
*/
|
|
@@ -100,197 +74,6 @@ class SteamworksSDK {
|
|
|
100
74
|
isSteamRunning() {
|
|
101
75
|
return this.apiCore.isSteamRunning();
|
|
102
76
|
}
|
|
103
|
-
// ===== VISUAL & UI FEATURES =====
|
|
104
|
-
/**
|
|
105
|
-
* Get achievement icon handle for use with ISteamUtils::GetImageRGBA()
|
|
106
|
-
*/
|
|
107
|
-
async getAchievementIcon(achievementName) {
|
|
108
|
-
return this.achievementManager.getAchievementIcon(achievementName);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Show achievement progress notification in Steam overlay
|
|
112
|
-
*/
|
|
113
|
-
async indicateAchievementProgress(achievementName, currentProgress, maxProgress) {
|
|
114
|
-
return this.achievementManager.indicateAchievementProgress(achievementName, currentProgress, maxProgress);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Get all achievements with icon handles
|
|
118
|
-
*/
|
|
119
|
-
async getAllAchievementsWithIcons() {
|
|
120
|
-
return this.achievementManager.getAllAchievementsWithIcons();
|
|
121
|
-
}
|
|
122
|
-
// ===== PROGRESS TRACKING =====
|
|
123
|
-
/**
|
|
124
|
-
* Get achievement progress limits (integer-based)
|
|
125
|
-
*/
|
|
126
|
-
async getAchievementProgressLimitsInt(achievementName) {
|
|
127
|
-
return this.achievementManager.getAchievementProgressLimitsInt(achievementName);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Get achievement progress limits (float-based)
|
|
131
|
-
*/
|
|
132
|
-
async getAchievementProgressLimitsFloat(achievementName) {
|
|
133
|
-
return this.achievementManager.getAchievementProgressLimitsFloat(achievementName);
|
|
134
|
-
}
|
|
135
|
-
// ===== FRIEND/USER ACHIEVEMENTS =====
|
|
136
|
-
/**
|
|
137
|
-
* Request achievement stats for another user (friend)
|
|
138
|
-
* This is async - wait for callback before calling getUserAchievement()
|
|
139
|
-
*/
|
|
140
|
-
async requestUserStats(steamId) {
|
|
141
|
-
return this.achievementManager.requestUserStats(steamId);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get achievement status for another user (friend)
|
|
145
|
-
* Must call requestUserStats() first and wait for callback
|
|
146
|
-
*/
|
|
147
|
-
async getUserAchievement(steamId, achievementName) {
|
|
148
|
-
return this.achievementManager.getUserAchievement(steamId, achievementName);
|
|
149
|
-
}
|
|
150
|
-
// ===== GLOBAL STATISTICS =====
|
|
151
|
-
/**
|
|
152
|
-
* Request global achievement percentages from Steam
|
|
153
|
-
* This is async - wait for callback before calling other global stats methods
|
|
154
|
-
*/
|
|
155
|
-
async requestGlobalAchievementPercentages() {
|
|
156
|
-
return this.achievementManager.requestGlobalAchievementPercentages();
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Get percentage of users who unlocked a specific achievement
|
|
160
|
-
* Must call requestGlobalAchievementPercentages() first
|
|
161
|
-
*/
|
|
162
|
-
async getAchievementAchievedPercent(achievementName) {
|
|
163
|
-
return this.achievementManager.getAchievementAchievedPercent(achievementName);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Get all achievements with global unlock percentages
|
|
167
|
-
* Must call requestGlobalAchievementPercentages() first
|
|
168
|
-
*/
|
|
169
|
-
async getAllAchievementsWithGlobalStats() {
|
|
170
|
-
return this.achievementManager.getAllAchievementsWithGlobalStats();
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Get most achieved achievement
|
|
174
|
-
*/
|
|
175
|
-
async getMostAchievedAchievementInfo() {
|
|
176
|
-
return this.achievementManager.getMostAchievedAchievementInfo();
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Get next most achieved achievement (iterate by popularity)
|
|
180
|
-
*/
|
|
181
|
-
async getNextMostAchievedAchievementInfo(previousIterator) {
|
|
182
|
-
return this.achievementManager.getNextMostAchievedAchievementInfo(previousIterator);
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Get all achievements sorted by global popularity (most achieved first)
|
|
186
|
-
* Must call requestGlobalAchievementPercentages() first
|
|
187
|
-
*/
|
|
188
|
-
async getAllAchievementsSortedByPopularity() {
|
|
189
|
-
return this.achievementManager.getAllAchievementsSortedByPopularity();
|
|
190
|
-
}
|
|
191
|
-
// ===== TESTING & DEVELOPMENT =====
|
|
192
|
-
/**
|
|
193
|
-
* Reset all stats and optionally achievements
|
|
194
|
-
* WARNING: This clears ALL user stats and achievements!
|
|
195
|
-
*/
|
|
196
|
-
async resetAllStats(includeAchievements = false) {
|
|
197
|
-
return this.achievementManager.resetAllStats(includeAchievements);
|
|
198
|
-
}
|
|
199
|
-
// ========================================
|
|
200
|
-
// STATS API
|
|
201
|
-
// ========================================
|
|
202
|
-
// ===== USER STATS (GET/SET) =====
|
|
203
|
-
/**
|
|
204
|
-
* Get an integer stat value
|
|
205
|
-
*/
|
|
206
|
-
async getStatInt(statName) {
|
|
207
|
-
return this.statsManager.getStatInt(statName);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Get a float stat value
|
|
211
|
-
*/
|
|
212
|
-
async getStatFloat(statName) {
|
|
213
|
-
return this.statsManager.getStatFloat(statName);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Set an integer stat value
|
|
217
|
-
*/
|
|
218
|
-
async setStatInt(statName, value) {
|
|
219
|
-
return this.statsManager.setStatInt(statName, value);
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Set a float stat value
|
|
223
|
-
*/
|
|
224
|
-
async setStatFloat(statName, value) {
|
|
225
|
-
return this.statsManager.setStatFloat(statName, value);
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Update an average rate stat (e.g., kills per hour, average speed)
|
|
229
|
-
*/
|
|
230
|
-
async updateAvgRateStat(statName, countThisSession, sessionLength) {
|
|
231
|
-
return this.statsManager.updateAvgRateStat(statName, countThisSession, sessionLength);
|
|
232
|
-
}
|
|
233
|
-
// ===== FRIEND/USER STATS =====
|
|
234
|
-
/**
|
|
235
|
-
* Request stats for another user (friend)
|
|
236
|
-
* Must be called before getting user stats
|
|
237
|
-
*/
|
|
238
|
-
async requestUserStatsForStats(steamId) {
|
|
239
|
-
return this.statsManager.requestUserStats(steamId);
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Get an integer stat value for another user (friend)
|
|
243
|
-
* Must call requestUserStatsForStats() first and wait for callback
|
|
244
|
-
*/
|
|
245
|
-
async getUserStatInt(steamId, statName) {
|
|
246
|
-
return this.statsManager.getUserStatInt(steamId, statName);
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Get a float stat value for another user (friend)
|
|
250
|
-
* Must call requestUserStatsForStats() first and wait for callback
|
|
251
|
-
*/
|
|
252
|
-
async getUserStatFloat(steamId, statName) {
|
|
253
|
-
return this.statsManager.getUserStatFloat(steamId, statName);
|
|
254
|
-
}
|
|
255
|
-
// ===== GLOBAL STATS =====
|
|
256
|
-
/**
|
|
257
|
-
* Request global stats data from Steam
|
|
258
|
-
* Must be called before getting global stats
|
|
259
|
-
* @param historyDays - Number of days of history to retrieve (0-60)
|
|
260
|
-
*/
|
|
261
|
-
async requestGlobalStats(historyDays = 0) {
|
|
262
|
-
return this.statsManager.requestGlobalStats(historyDays);
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Get a global stat value (int64)
|
|
266
|
-
* Must call requestGlobalStats() first and wait for callback
|
|
267
|
-
*/
|
|
268
|
-
async getGlobalStatInt(statName) {
|
|
269
|
-
return this.statsManager.getGlobalStatInt(statName);
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Get a global stat value (double)
|
|
273
|
-
* Must call requestGlobalStats() first and wait for callback
|
|
274
|
-
*/
|
|
275
|
-
async getGlobalStatDouble(statName) {
|
|
276
|
-
return this.statsManager.getGlobalStatDouble(statName);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Get global stat history (int64)
|
|
280
|
-
* Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
|
|
281
|
-
* @param days - Number of days of history to retrieve (max 60)
|
|
282
|
-
*/
|
|
283
|
-
async getGlobalStatHistoryInt(statName, days = 7) {
|
|
284
|
-
return this.statsManager.getGlobalStatHistoryInt(statName, days);
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Get global stat history (double)
|
|
288
|
-
* Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
|
|
289
|
-
* @param days - Number of days of history to retrieve (max 60)
|
|
290
|
-
*/
|
|
291
|
-
async getGlobalStatHistoryDouble(statName, days = 7) {
|
|
292
|
-
return this.statsManager.getGlobalStatHistoryDouble(statName, days);
|
|
293
|
-
}
|
|
294
77
|
}
|
|
295
78
|
exports.default = SteamworksSDK;
|
|
296
79
|
//# sourceMappingURL=steam.js.map
|
package/dist/steam.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steam.js","sourceRoot":"","sources":["../src/steam.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"steam.js","sourceRoot":"","sources":["../src/steam.ts"],"names":[],"mappings":";;AAIA,sEAAmE;AACnE,0DAAuD;AACvD,gFAA6E;AAC7E,oEAAiE;AACjE,gFAA6E;AAE7E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,aAAa;IA0GjB;QACE,8BAA8B;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,uCAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpD,6BAA6B;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,2CAA2C;IAC3C,mBAAmB;IACnB,2CAA2C;IAE3C;;OAEG;IACH,IAAI,CAAC,OAAyB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACvC,CAAC;CACF;AAED,kBAAe,aAAa,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Achievement-related types for the SteamAchievementManager
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Steam achievement data
|
|
6
|
+
*/
|
|
1
7
|
export interface SteamAchievement {
|
|
2
8
|
apiName: string;
|
|
3
9
|
displayName: string;
|
|
@@ -6,18 +12,16 @@ export interface SteamAchievement {
|
|
|
6
12
|
unlockTime: number;
|
|
7
13
|
hidden?: boolean;
|
|
8
14
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export interface SteamStatus {
|
|
13
|
-
initialized: boolean;
|
|
14
|
-
appId: number;
|
|
15
|
-
steamId: string;
|
|
16
|
-
}
|
|
15
|
+
/**
|
|
16
|
+
* Achievement progress limits for progress tracking
|
|
17
|
+
*/
|
|
17
18
|
export interface AchievementProgressLimits {
|
|
18
19
|
minProgress: number;
|
|
19
20
|
maxProgress: number;
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* User (friend) achievement data
|
|
24
|
+
*/
|
|
21
25
|
export interface UserAchievement {
|
|
22
26
|
steamId: string;
|
|
23
27
|
apiName: string;
|
|
@@ -26,6 +30,9 @@ export interface UserAchievement {
|
|
|
26
30
|
unlocked: boolean;
|
|
27
31
|
unlockTime: number;
|
|
28
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Global achievement statistics with unlock percentage
|
|
35
|
+
*/
|
|
29
36
|
export interface AchievementGlobalStats {
|
|
30
37
|
apiName: string;
|
|
31
38
|
displayName: string;
|
|
@@ -33,28 +40,10 @@ export interface AchievementGlobalStats {
|
|
|
33
40
|
unlocked: boolean;
|
|
34
41
|
globalUnlockPercentage: number;
|
|
35
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Achievement with icon handle for visual display
|
|
45
|
+
*/
|
|
36
46
|
export interface AchievementWithIcon extends SteamAchievement {
|
|
37
47
|
iconHandle: number;
|
|
38
48
|
}
|
|
39
|
-
|
|
40
|
-
name: string;
|
|
41
|
-
value: number;
|
|
42
|
-
type: 'int' | 'float';
|
|
43
|
-
}
|
|
44
|
-
export interface GlobalStat {
|
|
45
|
-
name: string;
|
|
46
|
-
value: number;
|
|
47
|
-
type: 'int64' | 'double';
|
|
48
|
-
}
|
|
49
|
-
export interface GlobalStatHistory {
|
|
50
|
-
name: string;
|
|
51
|
-
history: number[];
|
|
52
|
-
type: 'int64' | 'double';
|
|
53
|
-
}
|
|
54
|
-
export interface UserStat {
|
|
55
|
-
steamId: string;
|
|
56
|
-
name: string;
|
|
57
|
-
value: number;
|
|
58
|
-
type: 'int' | 'float';
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=types.d.ts.map
|
|
49
|
+
//# sourceMappingURL=achievements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"achievements.d.ts","sourceRoot":"","sources":["../../src/types/achievements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"achievements.js","sourceRoot":"","sources":["../../src/types/achievements.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Steam API types used across all managers
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Options for initializing the Steam API
|
|
6
|
+
*/
|
|
7
|
+
export interface SteamInitOptions {
|
|
8
|
+
appId: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Current Steam connection status
|
|
12
|
+
*/
|
|
13
|
+
export interface SteamStatus {
|
|
14
|
+
initialized: boolean;
|
|
15
|
+
appId: number;
|
|
16
|
+
steamId: string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central export file for all Steam types
|
|
3
|
+
*
|
|
4
|
+
* Types are organized by manager:
|
|
5
|
+
* - core.ts - Core Steam API types
|
|
6
|
+
* - achievements.ts - Achievement-related types
|
|
7
|
+
* - stats.ts - Stats-related types
|
|
8
|
+
* - leaderboards.ts - Leaderboard-related types
|
|
9
|
+
*/
|
|
10
|
+
export * from './core';
|
|
11
|
+
export * from './achievements';
|
|
12
|
+
export * from './stats';
|
|
13
|
+
export * from './leaderboards';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,SAAS,CAAC;AAGxB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Central export file for all Steam types
|
|
4
|
+
*
|
|
5
|
+
* Types are organized by manager:
|
|
6
|
+
* - core.ts - Core Steam API types
|
|
7
|
+
* - achievements.ts - Achievement-related types
|
|
8
|
+
* - stats.ts - Stats-related types
|
|
9
|
+
* - leaderboards.ts - Leaderboard-related types
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
23
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
// Core types
|
|
27
|
+
__exportStar(require("./core"), exports);
|
|
28
|
+
// Achievement types
|
|
29
|
+
__exportStar(require("./achievements"), exports);
|
|
30
|
+
// Stats types
|
|
31
|
+
__exportStar(require("./stats"), exports);
|
|
32
|
+
// Leaderboard types
|
|
33
|
+
__exportStar(require("./leaderboards"), exports);
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;AAEH,aAAa;AACb,yCAAuB;AAEvB,oBAAoB;AACpB,iDAA+B;AAE/B,cAAc;AACd,0CAAwB;AAExB,oBAAoB;AACpB,iDAA+B"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leaderboard-related types for the SteamLeaderboardManager
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Leaderboard sort methods
|
|
6
|
+
*/
|
|
7
|
+
export declare enum LeaderboardSortMethod {
|
|
8
|
+
None = 0,
|
|
9
|
+
Ascending = 1,// Top score is lowest number
|
|
10
|
+
Descending = 2
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Leaderboard display types
|
|
14
|
+
*/
|
|
15
|
+
export declare enum LeaderboardDisplayType {
|
|
16
|
+
None = 0,
|
|
17
|
+
Numeric = 1,// Simple numerical score
|
|
18
|
+
TimeSeconds = 2,// Score represents time in seconds
|
|
19
|
+
TimeMilliseconds = 3
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Leaderboard data request types
|
|
23
|
+
*/
|
|
24
|
+
export declare enum LeaderboardDataRequest {
|
|
25
|
+
Global = 0,// Top entries from full leaderboard
|
|
26
|
+
GlobalAroundUser = 1,// Entries around current user
|
|
27
|
+
Friends = 2,// Entries for friends only
|
|
28
|
+
Users = 3
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Leaderboard upload score methods
|
|
32
|
+
*/
|
|
33
|
+
export declare enum LeaderboardUploadScoreMethod {
|
|
34
|
+
None = 0,
|
|
35
|
+
KeepBest = 1,// Keep user's best score
|
|
36
|
+
ForceUpdate = 2
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Single leaderboard entry
|
|
40
|
+
*/
|
|
41
|
+
export interface LeaderboardEntry {
|
|
42
|
+
steamId: string;
|
|
43
|
+
globalRank: number;
|
|
44
|
+
score: number;
|
|
45
|
+
details: number[];
|
|
46
|
+
ugcHandle: bigint;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Leaderboard information
|
|
50
|
+
*/
|
|
51
|
+
export interface LeaderboardInfo {
|
|
52
|
+
handle: bigint;
|
|
53
|
+
name: string;
|
|
54
|
+
entryCount: number;
|
|
55
|
+
sortMethod: LeaderboardSortMethod;
|
|
56
|
+
displayType: LeaderboardDisplayType;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Result of score upload
|
|
60
|
+
*/
|
|
61
|
+
export interface LeaderboardScoreUploadResult {
|
|
62
|
+
success: boolean;
|
|
63
|
+
leaderboardHandle: bigint;
|
|
64
|
+
score: number;
|
|
65
|
+
scoreChanged: boolean;
|
|
66
|
+
globalRankNew: number;
|
|
67
|
+
globalRankPrevious: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* LeaderboardFindResult_t - Result of FindOrCreateLeaderboard/FindLeaderboard
|
|
71
|
+
* Callback ID: k_iSteamUserStatsCallbacks + 4 = 1104
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
export interface LeaderboardFindResultType {
|
|
75
|
+
m_hSteamLeaderboard: bigint;
|
|
76
|
+
m_bLeaderboardFound: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* LeaderboardScoreUploaded_t - Result of UploadLeaderboardScore
|
|
80
|
+
* Callback ID: k_iSteamUserStatsCallbacks + 6 = 1106
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
export interface LeaderboardScoreUploadedType {
|
|
84
|
+
m_bSuccess: number;
|
|
85
|
+
m_hSteamLeaderboard: bigint;
|
|
86
|
+
m_nScore: number;
|
|
87
|
+
m_bScoreChanged: number;
|
|
88
|
+
m_nGlobalRankNew: number;
|
|
89
|
+
m_nGlobalRankPrevious: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* LeaderboardScoresDownloaded_t - Result of DownloadLeaderboardEntries
|
|
93
|
+
* Callback ID: k_iSteamUserStatsCallbacks + 5 = 1105
|
|
94
|
+
* @internal
|
|
95
|
+
*/
|
|
96
|
+
export interface LeaderboardScoresDownloadedType {
|
|
97
|
+
m_hSteamLeaderboard: bigint;
|
|
98
|
+
m_hSteamLeaderboardEntries: bigint;
|
|
99
|
+
m_cEntryCount: number;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* LeaderboardUGCSet_t - Result of AttachLeaderboardUGC
|
|
103
|
+
* Callback ID: k_iSteamUserStatsCallbacks + 11 = 1111
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
export interface LeaderboardUGCSetType {
|
|
107
|
+
m_eResult: number;
|
|
108
|
+
m_hSteamLeaderboard: bigint;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* LeaderboardEntry_t - Individual leaderboard entry data (from Steam)
|
|
112
|
+
* @internal
|
|
113
|
+
*/
|
|
114
|
+
export interface LeaderboardEntryType {
|
|
115
|
+
m_steamIDUser: bigint;
|
|
116
|
+
m_nGlobalRank: number;
|
|
117
|
+
m_nScore: number;
|
|
118
|
+
m_cDetails: number;
|
|
119
|
+
m_hUGC: bigint;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=leaderboards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaderboards.d.ts","sourceRoot":"","sources":["../../src/types/leaderboards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,qBAAqB;IAC/B,IAAI,IAAI;IACR,SAAS,IAAI,CAAI,6BAA6B;IAC9C,UAAU,IAAI;CACf;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAChC,IAAI,IAAI;IACR,OAAO,IAAI,CAAY,yBAAyB;IAChD,WAAW,IAAI,CAAQ,mCAAmC;IAC1D,gBAAgB,IAAI;CACrB;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAChC,MAAM,IAAI,CAAa,oCAAoC;IAC3D,gBAAgB,IAAI,CAAG,8BAA8B;IACrD,OAAO,IAAI,CAAY,2BAA2B;IAClD,KAAK,IAAI;CACV;AAED;;GAEG;AACH,oBAAY,4BAA4B;IACtC,IAAI,IAAI;IACR,QAAQ,IAAI,CAAO,yBAAyB;IAC5C,WAAW,IAAI;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,qBAAqB,CAAC;IAClC,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Leaderboard-related types for the SteamLeaderboardManager
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LeaderboardUploadScoreMethod = exports.LeaderboardDataRequest = exports.LeaderboardDisplayType = exports.LeaderboardSortMethod = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Leaderboard sort methods
|
|
9
|
+
*/
|
|
10
|
+
var LeaderboardSortMethod;
|
|
11
|
+
(function (LeaderboardSortMethod) {
|
|
12
|
+
LeaderboardSortMethod[LeaderboardSortMethod["None"] = 0] = "None";
|
|
13
|
+
LeaderboardSortMethod[LeaderboardSortMethod["Ascending"] = 1] = "Ascending";
|
|
14
|
+
LeaderboardSortMethod[LeaderboardSortMethod["Descending"] = 2] = "Descending"; // Top score is highest number
|
|
15
|
+
})(LeaderboardSortMethod || (exports.LeaderboardSortMethod = LeaderboardSortMethod = {}));
|
|
16
|
+
/**
|
|
17
|
+
* Leaderboard display types
|
|
18
|
+
*/
|
|
19
|
+
var LeaderboardDisplayType;
|
|
20
|
+
(function (LeaderboardDisplayType) {
|
|
21
|
+
LeaderboardDisplayType[LeaderboardDisplayType["None"] = 0] = "None";
|
|
22
|
+
LeaderboardDisplayType[LeaderboardDisplayType["Numeric"] = 1] = "Numeric";
|
|
23
|
+
LeaderboardDisplayType[LeaderboardDisplayType["TimeSeconds"] = 2] = "TimeSeconds";
|
|
24
|
+
LeaderboardDisplayType[LeaderboardDisplayType["TimeMilliseconds"] = 3] = "TimeMilliseconds"; // Score represents time in milliseconds
|
|
25
|
+
})(LeaderboardDisplayType || (exports.LeaderboardDisplayType = LeaderboardDisplayType = {}));
|
|
26
|
+
/**
|
|
27
|
+
* Leaderboard data request types
|
|
28
|
+
*/
|
|
29
|
+
var LeaderboardDataRequest;
|
|
30
|
+
(function (LeaderboardDataRequest) {
|
|
31
|
+
LeaderboardDataRequest[LeaderboardDataRequest["Global"] = 0] = "Global";
|
|
32
|
+
LeaderboardDataRequest[LeaderboardDataRequest["GlobalAroundUser"] = 1] = "GlobalAroundUser";
|
|
33
|
+
LeaderboardDataRequest[LeaderboardDataRequest["Friends"] = 2] = "Friends";
|
|
34
|
+
LeaderboardDataRequest[LeaderboardDataRequest["Users"] = 3] = "Users"; // Entries for specific users
|
|
35
|
+
})(LeaderboardDataRequest || (exports.LeaderboardDataRequest = LeaderboardDataRequest = {}));
|
|
36
|
+
/**
|
|
37
|
+
* Leaderboard upload score methods
|
|
38
|
+
*/
|
|
39
|
+
var LeaderboardUploadScoreMethod;
|
|
40
|
+
(function (LeaderboardUploadScoreMethod) {
|
|
41
|
+
LeaderboardUploadScoreMethod[LeaderboardUploadScoreMethod["None"] = 0] = "None";
|
|
42
|
+
LeaderboardUploadScoreMethod[LeaderboardUploadScoreMethod["KeepBest"] = 1] = "KeepBest";
|
|
43
|
+
LeaderboardUploadScoreMethod[LeaderboardUploadScoreMethod["ForceUpdate"] = 2] = "ForceUpdate"; // Always replace with new score
|
|
44
|
+
})(LeaderboardUploadScoreMethod || (exports.LeaderboardUploadScoreMethod = LeaderboardUploadScoreMethod = {}));
|
|
45
|
+
//# sourceMappingURL=leaderboards.js.map
|