steamworks-ffi-node 0.5.2 → 0.6.0
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 +65 -55
- package/dist/internal/SteamAPICore.d.ts +23 -0
- package/dist/internal/SteamAPICore.d.ts.map +1 -1
- package/dist/internal/SteamAPICore.js +30 -0
- package/dist/internal/SteamAPICore.js.map +1 -1
- package/dist/internal/SteamCloudManager.d.ts +319 -0
- package/dist/internal/SteamCloudManager.d.ts.map +1 -0
- package/dist/internal/SteamCloudManager.js +584 -0
- package/dist/internal/SteamCloudManager.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 +81 -30
- package/dist/internal/SteamLibraryLoader.js.map +1 -1
- package/dist/steam.d.ts +36 -0
- package/dist/steam.d.ts.map +1 -1
- package/dist/steam.js +4 -0
- package/dist/steam.js.map +1 -1
- package/dist/types/cloud.d.ts +83 -0
- package/dist/types/cloud.d.ts.map +1 -0
- package/dist/types/cloud.js +35 -0
- package/dist/types/cloud.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/docs/README.md +155 -0
- package/docs/STEAMWORKS_SDK_SETUP.md +209 -0
- package/package.json +9 -3
- package/postinstall.js +34 -0
- package/verify-sdk-setup.js +220 -0
- package/THIRD_PARTY_LICENSES.md +0 -24
- package/steamworks_sdk/redistributable_bin/linux32/libsteam_api.so +0 -0
- package/steamworks_sdk/redistributable_bin/linux64/libsteam_api.so +0 -0
- package/steamworks_sdk/redistributable_bin/osx/libsteam_api.dylib +0 -0
- package/steamworks_sdk/redistributable_bin/steam_api.dll +0 -0
- package/steamworks_sdk/redistributable_bin/steam_api.lib +0 -0
- package/steamworks_sdk/redistributable_bin/win64/steam_api64.dll +0 -0
- package/steamworks_sdk/redistributable_bin/win64/steam_api64.lib +0 -0
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SteamCloudManager = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Manager for Steam Cloud / Remote Storage operations
|
|
6
|
+
*
|
|
7
|
+
* The SteamCloudManager provides comprehensive access to Steam's cloud storage system,
|
|
8
|
+
* allowing you to save and synchronize game data across multiple devices.
|
|
9
|
+
*
|
|
10
|
+
* Key Features:
|
|
11
|
+
* - File operations (read, write, delete, check existence)
|
|
12
|
+
* - Quota management (check available space)
|
|
13
|
+
* - File iteration and metadata retrieval
|
|
14
|
+
* - Automatic synchronization across devices
|
|
15
|
+
* - Platform-specific sync control
|
|
16
|
+
*
|
|
17
|
+
* File Constraints:
|
|
18
|
+
* - Max file size: 100MB per write, 200MB total
|
|
19
|
+
* - Filenames are case-insensitive (converted to lowercase)
|
|
20
|
+
* - Max filename length: 260 characters
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* All methods require the Steam API to be initialized and cloud to be enabled.
|
|
24
|
+
* Files are automatically synced when Steam is running and connected.
|
|
25
|
+
*
|
|
26
|
+
* @example Basic file operations
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const steam = SteamworksSDK.getInstance();
|
|
29
|
+
* steam.init({ appId: 480 });
|
|
30
|
+
*
|
|
31
|
+
* // Write a save file
|
|
32
|
+
* const saveData = Buffer.from(JSON.stringify({ level: 5, score: 1000 }));
|
|
33
|
+
* const written = steam.cloud.fileWrite('savegame.json', saveData);
|
|
34
|
+
*
|
|
35
|
+
* // Read it back
|
|
36
|
+
* const result = steam.cloud.fileRead('savegame.json');
|
|
37
|
+
* if (result.success) {
|
|
38
|
+
* const data = JSON.parse(result.data.toString());
|
|
39
|
+
* console.log(`Level: ${data.level}, Score: ${data.score}`);
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* // Check quota
|
|
43
|
+
* const quota = steam.cloud.getQuota();
|
|
44
|
+
* console.log(`Using ${quota.percentUsed}% of cloud storage`);
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example List all cloud files
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const files = steam.cloud.getAllFiles();
|
|
50
|
+
* files.forEach(file => {
|
|
51
|
+
* console.log(`${file.name}: ${file.size} bytes, modified ${new Date(file.timestamp * 1000)}`);
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @see {@link https://partner.steamgames.com/doc/api/ISteamRemoteStorage ISteamRemoteStorage Documentation}
|
|
56
|
+
*/
|
|
57
|
+
class SteamCloudManager {
|
|
58
|
+
/**
|
|
59
|
+
* Creates a new SteamCloudManager instance
|
|
60
|
+
*
|
|
61
|
+
* @param libraryLoader - The Steam library loader for FFI calls
|
|
62
|
+
* @param apiCore - The Steam API core for lifecycle management
|
|
63
|
+
*/
|
|
64
|
+
constructor(libraryLoader, apiCore) {
|
|
65
|
+
this.libraryLoader = libraryLoader;
|
|
66
|
+
this.apiCore = apiCore;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Writes a file to Steam Cloud
|
|
70
|
+
*
|
|
71
|
+
* @param filename - The name of the file to write (will be converted to lowercase)
|
|
72
|
+
* @param data - The data to write as a Buffer
|
|
73
|
+
* @returns True if the write was successful, false otherwise
|
|
74
|
+
*
|
|
75
|
+
* @remarks
|
|
76
|
+
* - Files are limited to 100MB per write and 200MB total
|
|
77
|
+
* - Filenames are automatically converted to lowercase
|
|
78
|
+
* - File is queued for upload when Steam is connected
|
|
79
|
+
* - Overwrites existing file with same name
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const saveData = Buffer.from(JSON.stringify({ level: 5 }));
|
|
84
|
+
* const success = steam.cloud.fileWrite('savegame.json', saveData);
|
|
85
|
+
* if (success) {
|
|
86
|
+
* console.log('Save file written to cloud');
|
|
87
|
+
* }
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
fileWrite(filename, data) {
|
|
91
|
+
if (!this.apiCore.isInitialized()) {
|
|
92
|
+
console.error('Steam API not initialized');
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
96
|
+
if (!remoteStorage) {
|
|
97
|
+
console.error('ISteamRemoteStorage interface not available');
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const result = this.libraryLoader.SteamAPI_ISteamRemoteStorage_FileWrite(remoteStorage, filename, data, data.length);
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error('Error writing file to Steam Cloud:', error);
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Reads a file from Steam Cloud
|
|
111
|
+
*
|
|
112
|
+
* @param filename - The name of the file to read
|
|
113
|
+
* @returns CloudFileReadResult with success status and data
|
|
114
|
+
*
|
|
115
|
+
* @remarks
|
|
116
|
+
* - File must exist in cloud storage
|
|
117
|
+
* - Returns the complete file contents as a Buffer
|
|
118
|
+
* - Data can be converted to string or parsed as JSON
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* const result = steam.cloud.fileRead('savegame.json');
|
|
123
|
+
* if (result.success && result.data) {
|
|
124
|
+
* const saveData = JSON.parse(result.data.toString());
|
|
125
|
+
* console.log('Loaded save:', saveData);
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
fileRead(filename) {
|
|
130
|
+
const result = {
|
|
131
|
+
success: false,
|
|
132
|
+
filename,
|
|
133
|
+
data: null,
|
|
134
|
+
bytesRead: 0
|
|
135
|
+
};
|
|
136
|
+
if (!this.apiCore.isInitialized()) {
|
|
137
|
+
console.error('Steam API not initialized');
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
141
|
+
if (!remoteStorage) {
|
|
142
|
+
console.error('ISteamRemoteStorage interface not available');
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
// First, get the file size
|
|
147
|
+
const size = this.getFileSize(filename);
|
|
148
|
+
if (size <= 0) {
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
151
|
+
// Allocate buffer for file data
|
|
152
|
+
const buffer = Buffer.alloc(size);
|
|
153
|
+
const bytesRead = this.libraryLoader.SteamAPI_ISteamRemoteStorage_FileRead(remoteStorage, filename, buffer, size);
|
|
154
|
+
if (bytesRead > 0) {
|
|
155
|
+
result.success = true;
|
|
156
|
+
result.data = buffer.slice(0, bytesRead);
|
|
157
|
+
result.bytesRead = bytesRead;
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error('Error reading file from Steam Cloud:', error);
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Checks if a file exists in Steam Cloud
|
|
168
|
+
*
|
|
169
|
+
* @param filename - The name of the file to check
|
|
170
|
+
* @returns True if the file exists, false otherwise
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* if (steam.cloud.fileExists('savegame.json')) {
|
|
175
|
+
* console.log('Save file found in cloud');
|
|
176
|
+
* }
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
fileExists(filename) {
|
|
180
|
+
if (!this.apiCore.isInitialized()) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
184
|
+
if (!remoteStorage) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
return this.libraryLoader.SteamAPI_ISteamRemoteStorage_FileExists(remoteStorage, filename);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
console.error('Error checking file existence:', error);
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Deletes a file from Steam Cloud
|
|
197
|
+
*
|
|
198
|
+
* @param filename - The name of the file to delete
|
|
199
|
+
* @returns True if the file was deleted, false otherwise
|
|
200
|
+
*
|
|
201
|
+
* @remarks
|
|
202
|
+
* - File is removed from cloud storage
|
|
203
|
+
* - Deletion is synchronized across all devices
|
|
204
|
+
* - Returns true even if file doesn't exist
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```typescript
|
|
208
|
+
* const deleted = steam.cloud.fileDelete('old_save.json');
|
|
209
|
+
* if (deleted) {
|
|
210
|
+
* console.log('Save file deleted from cloud');
|
|
211
|
+
* }
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
fileDelete(filename) {
|
|
215
|
+
if (!this.apiCore.isInitialized()) {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
219
|
+
if (!remoteStorage) {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
return this.libraryLoader.SteamAPI_ISteamRemoteStorage_FileDelete(remoteStorage, filename);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
console.error('Error deleting file:', error);
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Gets the size of a file in Steam Cloud
|
|
232
|
+
*
|
|
233
|
+
* @param filename - The name of the file
|
|
234
|
+
* @returns File size in bytes, or 0 if file doesn't exist
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```typescript
|
|
238
|
+
* const size = steam.cloud.getFileSize('savegame.json');
|
|
239
|
+
* console.log(`Save file is ${size} bytes`);
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
getFileSize(filename) {
|
|
243
|
+
if (!this.apiCore.isInitialized()) {
|
|
244
|
+
return 0;
|
|
245
|
+
}
|
|
246
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
247
|
+
if (!remoteStorage) {
|
|
248
|
+
return 0;
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
return this.libraryLoader.SteamAPI_ISteamRemoteStorage_GetFileSize(remoteStorage, filename);
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
console.error('Error getting file size:', error);
|
|
255
|
+
return 0;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Gets the last modified timestamp of a file
|
|
260
|
+
*
|
|
261
|
+
* @param filename - The name of the file
|
|
262
|
+
* @returns Unix timestamp of last modification, or 0 if file doesn't exist
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* const timestamp = steam.cloud.getFileTimestamp('savegame.json');
|
|
267
|
+
* const date = new Date(timestamp * 1000);
|
|
268
|
+
* console.log(`Last saved: ${date.toLocaleString()}`);
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
getFileTimestamp(filename) {
|
|
272
|
+
if (!this.apiCore.isInitialized()) {
|
|
273
|
+
return 0;
|
|
274
|
+
}
|
|
275
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
276
|
+
if (!remoteStorage) {
|
|
277
|
+
return 0;
|
|
278
|
+
}
|
|
279
|
+
try {
|
|
280
|
+
return Number(this.libraryLoader.SteamAPI_ISteamRemoteStorage_GetFileTimestamp(remoteStorage, filename));
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
console.error('Error getting file timestamp:', error);
|
|
284
|
+
return 0;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Gets the total number of files in Steam Cloud for this app
|
|
289
|
+
*
|
|
290
|
+
* @returns Number of files in cloud storage
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* const count = steam.cloud.getFileCount();
|
|
295
|
+
* console.log(`${count} files in cloud storage`);
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
getFileCount() {
|
|
299
|
+
if (!this.apiCore.isInitialized()) {
|
|
300
|
+
return 0;
|
|
301
|
+
}
|
|
302
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
303
|
+
if (!remoteStorage) {
|
|
304
|
+
return 0;
|
|
305
|
+
}
|
|
306
|
+
try {
|
|
307
|
+
return this.libraryLoader.SteamAPI_ISteamRemoteStorage_GetFileCount(remoteStorage);
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
console.error('Error getting file count:', error);
|
|
311
|
+
return 0;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Gets the name and size of a file by index
|
|
316
|
+
*
|
|
317
|
+
* @param index - The index of the file (0 to GetFileCount()-1)
|
|
318
|
+
* @returns Object with name and size, or null if index is invalid
|
|
319
|
+
*
|
|
320
|
+
* @remarks
|
|
321
|
+
* Use this with getFileCount() to iterate through all files
|
|
322
|
+
*
|
|
323
|
+
* @example
|
|
324
|
+
* ```typescript
|
|
325
|
+
* const count = steam.cloud.getFileCount();
|
|
326
|
+
* for (let i = 0; i < count; i++) {
|
|
327
|
+
* const file = steam.cloud.getFileNameAndSize(i);
|
|
328
|
+
* if (file) {
|
|
329
|
+
* console.log(`${file.name}: ${file.size} bytes`);
|
|
330
|
+
* }
|
|
331
|
+
* }
|
|
332
|
+
* ```
|
|
333
|
+
*/
|
|
334
|
+
getFileNameAndSize(index) {
|
|
335
|
+
if (!this.apiCore.isInitialized()) {
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
339
|
+
if (!remoteStorage) {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
try {
|
|
343
|
+
// Allocate buffer for the size output parameter
|
|
344
|
+
const sizePtr = Buffer.alloc(4); // int32 pointer
|
|
345
|
+
// Call the API - it will write the size into sizePtr
|
|
346
|
+
const name = this.libraryLoader.SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(remoteStorage, index, sizePtr);
|
|
347
|
+
// If no name returned, index is out of bounds
|
|
348
|
+
if (!name || name === '') {
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
// Read the size value that was written by the API
|
|
352
|
+
const size = sizePtr.readInt32LE(0);
|
|
353
|
+
// Validate size is non-negative
|
|
354
|
+
if (size < 0) {
|
|
355
|
+
console.warn(`Invalid file size returned for ${name}: ${size}`);
|
|
356
|
+
return { name, size: 0 };
|
|
357
|
+
}
|
|
358
|
+
return { name, size };
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
console.error('Error getting file name and size:', error);
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Gets detailed information about all files in Steam Cloud
|
|
367
|
+
*
|
|
368
|
+
* @returns Array of CloudFileInfo objects with complete metadata
|
|
369
|
+
*
|
|
370
|
+
* @example
|
|
371
|
+
* ```typescript
|
|
372
|
+
* const files = steam.cloud.getAllFiles();
|
|
373
|
+
* files.forEach(file => {
|
|
374
|
+
* const date = new Date(file.timestamp * 1000);
|
|
375
|
+
* console.log(`${file.name}:`);
|
|
376
|
+
* console.log(` Size: ${file.size} bytes`);
|
|
377
|
+
* console.log(` Modified: ${date.toLocaleString()}`);
|
|
378
|
+
* console.log(` Persisted: ${file.persisted ? 'Yes' : 'No'}`);
|
|
379
|
+
* });
|
|
380
|
+
* ```
|
|
381
|
+
*/
|
|
382
|
+
getAllFiles() {
|
|
383
|
+
const files = [];
|
|
384
|
+
const count = this.getFileCount();
|
|
385
|
+
for (let i = 0; i < count; i++) {
|
|
386
|
+
const fileInfo = this.getFileNameAndSize(i);
|
|
387
|
+
if (fileInfo) {
|
|
388
|
+
const timestamp = this.getFileTimestamp(fileInfo.name);
|
|
389
|
+
const persisted = this.filePersisted(fileInfo.name);
|
|
390
|
+
files.push({
|
|
391
|
+
name: fileInfo.name,
|
|
392
|
+
size: fileInfo.size,
|
|
393
|
+
timestamp,
|
|
394
|
+
exists: true,
|
|
395
|
+
persisted
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return files;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Checks if a file is persisted (uploaded) to Steam Cloud
|
|
403
|
+
*
|
|
404
|
+
* @param filename - The name of the file to check
|
|
405
|
+
* @returns True if the file is persisted to cloud, false otherwise
|
|
406
|
+
*
|
|
407
|
+
* @remarks
|
|
408
|
+
* Files may exist locally but not yet be uploaded to the cloud.
|
|
409
|
+
* This checks if the file has been successfully synced.
|
|
410
|
+
*
|
|
411
|
+
* @example
|
|
412
|
+
* ```typescript
|
|
413
|
+
* if (steam.cloud.filePersisted('savegame.json')) {
|
|
414
|
+
* console.log('Save file is synced to cloud');
|
|
415
|
+
* } else {
|
|
416
|
+
* console.log('Save file is still uploading...');
|
|
417
|
+
* }
|
|
418
|
+
* ```
|
|
419
|
+
*/
|
|
420
|
+
filePersisted(filename) {
|
|
421
|
+
if (!this.apiCore.isInitialized()) {
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
425
|
+
if (!remoteStorage) {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
try {
|
|
429
|
+
return this.libraryLoader.SteamAPI_ISteamRemoteStorage_FilePersisted(remoteStorage, filename);
|
|
430
|
+
}
|
|
431
|
+
catch (error) {
|
|
432
|
+
console.error('Error checking file persisted status:', error);
|
|
433
|
+
return false;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Gets Steam Cloud quota information
|
|
438
|
+
*
|
|
439
|
+
* @returns CloudQuota object with total, available, and used bytes
|
|
440
|
+
*
|
|
441
|
+
* @remarks
|
|
442
|
+
* - Total quota varies by app (typically 100MB-1GB)
|
|
443
|
+
* - Available bytes = total - used
|
|
444
|
+
* - Quota is per-user, per-app
|
|
445
|
+
*
|
|
446
|
+
* @example
|
|
447
|
+
* ```typescript
|
|
448
|
+
* const quota = steam.cloud.getQuota();
|
|
449
|
+
* console.log(`Cloud Storage: ${quota.usedBytes}/${quota.totalBytes} bytes`);
|
|
450
|
+
* console.log(`${quota.percentUsed.toFixed(1)}% used`);
|
|
451
|
+
* console.log(`${quota.availableBytes} bytes remaining`);
|
|
452
|
+
* ```
|
|
453
|
+
*/
|
|
454
|
+
getQuota() {
|
|
455
|
+
const quota = {
|
|
456
|
+
totalBytes: 0,
|
|
457
|
+
availableBytes: 0,
|
|
458
|
+
usedBytes: 0,
|
|
459
|
+
percentUsed: 0
|
|
460
|
+
};
|
|
461
|
+
if (!this.apiCore.isInitialized()) {
|
|
462
|
+
return quota;
|
|
463
|
+
}
|
|
464
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
465
|
+
if (!remoteStorage) {
|
|
466
|
+
return quota;
|
|
467
|
+
}
|
|
468
|
+
try {
|
|
469
|
+
const totalBytesPtr = Buffer.alloc(8); // uint64
|
|
470
|
+
const availableBytesPtr = Buffer.alloc(8); // uint64
|
|
471
|
+
const success = this.libraryLoader.SteamAPI_ISteamRemoteStorage_GetQuota(remoteStorage, totalBytesPtr, availableBytesPtr);
|
|
472
|
+
if (success) {
|
|
473
|
+
quota.totalBytes = Number(totalBytesPtr.readBigUInt64LE(0));
|
|
474
|
+
quota.availableBytes = Number(availableBytesPtr.readBigUInt64LE(0));
|
|
475
|
+
quota.usedBytes = quota.totalBytes - quota.availableBytes;
|
|
476
|
+
quota.percentUsed = quota.totalBytes > 0
|
|
477
|
+
? (quota.usedBytes / quota.totalBytes) * 100
|
|
478
|
+
: 0;
|
|
479
|
+
}
|
|
480
|
+
return quota;
|
|
481
|
+
}
|
|
482
|
+
catch (error) {
|
|
483
|
+
console.error('Error getting cloud quota:', error);
|
|
484
|
+
return quota;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Checks if Steam Cloud is enabled for the user's account
|
|
489
|
+
*
|
|
490
|
+
* @returns True if cloud is enabled at account level
|
|
491
|
+
*
|
|
492
|
+
* @remarks
|
|
493
|
+
* Users can disable Steam Cloud globally in their Steam settings.
|
|
494
|
+
* If disabled, file operations will fail.
|
|
495
|
+
*
|
|
496
|
+
* @example
|
|
497
|
+
* ```typescript
|
|
498
|
+
* if (!steam.cloud.isCloudEnabledForAccount()) {
|
|
499
|
+
* console.warn('User has disabled Steam Cloud in their settings');
|
|
500
|
+
* }
|
|
501
|
+
* ```
|
|
502
|
+
*/
|
|
503
|
+
isCloudEnabledForAccount() {
|
|
504
|
+
if (!this.apiCore.isInitialized()) {
|
|
505
|
+
return false;
|
|
506
|
+
}
|
|
507
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
508
|
+
if (!remoteStorage) {
|
|
509
|
+
return false;
|
|
510
|
+
}
|
|
511
|
+
try {
|
|
512
|
+
return this.libraryLoader.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(remoteStorage);
|
|
513
|
+
}
|
|
514
|
+
catch (error) {
|
|
515
|
+
console.error('Error checking cloud enabled for account:', error);
|
|
516
|
+
return false;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Checks if Steam Cloud is enabled for this specific app
|
|
521
|
+
*
|
|
522
|
+
* @returns True if cloud is enabled for this app
|
|
523
|
+
*
|
|
524
|
+
* @remarks
|
|
525
|
+
* Apps can enable/disable cloud storage independently.
|
|
526
|
+
* Even if account cloud is enabled, app cloud might be disabled.
|
|
527
|
+
*
|
|
528
|
+
* @example
|
|
529
|
+
* ```typescript
|
|
530
|
+
* if (steam.cloud.isCloudEnabledForApp()) {
|
|
531
|
+
* console.log('Steam Cloud is active for this game');
|
|
532
|
+
* }
|
|
533
|
+
* ```
|
|
534
|
+
*/
|
|
535
|
+
isCloudEnabledForApp() {
|
|
536
|
+
if (!this.apiCore.isInitialized()) {
|
|
537
|
+
return false;
|
|
538
|
+
}
|
|
539
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
540
|
+
if (!remoteStorage) {
|
|
541
|
+
return false;
|
|
542
|
+
}
|
|
543
|
+
try {
|
|
544
|
+
return this.libraryLoader.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(remoteStorage);
|
|
545
|
+
}
|
|
546
|
+
catch (error) {
|
|
547
|
+
console.error('Error checking cloud enabled for app:', error);
|
|
548
|
+
return false;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Enables or disables Steam Cloud for this app
|
|
553
|
+
*
|
|
554
|
+
* @param enabled - True to enable cloud, false to disable
|
|
555
|
+
*
|
|
556
|
+
* @remarks
|
|
557
|
+
* - This is a per-app setting
|
|
558
|
+
* - User must have cloud enabled at account level
|
|
559
|
+
* - Changes are saved to Steam config
|
|
560
|
+
*
|
|
561
|
+
* @example
|
|
562
|
+
* ```typescript
|
|
563
|
+
* // Let user toggle cloud saves
|
|
564
|
+
* steam.cloud.setCloudEnabledForApp(userWantsCloudSaves);
|
|
565
|
+
* ```
|
|
566
|
+
*/
|
|
567
|
+
setCloudEnabledForApp(enabled) {
|
|
568
|
+
if (!this.apiCore.isInitialized()) {
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
const remoteStorage = this.apiCore.getRemoteStorageInterface();
|
|
572
|
+
if (!remoteStorage) {
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
try {
|
|
576
|
+
this.libraryLoader.SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(remoteStorage, enabled);
|
|
577
|
+
}
|
|
578
|
+
catch (error) {
|
|
579
|
+
console.error('Error setting cloud enabled for app:', error);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
exports.SteamCloudManager = SteamCloudManager;
|
|
584
|
+
//# sourceMappingURL=SteamCloudManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SteamCloudManager.js","sourceRoot":"","sources":["../../src/internal/SteamCloudManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,8 +95,23 @@ export declare class SteamLibraryLoader {
|
|
|
95
95
|
SteamAPI_ISteamFriends_GetCoplayFriend: koffi.KoffiFunction;
|
|
96
96
|
SteamAPI_ISteamFriends_GetFriendCoplayTime: koffi.KoffiFunction;
|
|
97
97
|
SteamAPI_ISteamFriends_GetFriendCoplayGame: koffi.KoffiFunction;
|
|
98
|
+
SteamAPI_SteamRemoteStorage_v016: koffi.KoffiFunction;
|
|
99
|
+
SteamAPI_ISteamRemoteStorage_FileWrite: koffi.KoffiFunction;
|
|
100
|
+
SteamAPI_ISteamRemoteStorage_FileRead: koffi.KoffiFunction;
|
|
101
|
+
SteamAPI_ISteamRemoteStorage_FileExists: koffi.KoffiFunction;
|
|
102
|
+
SteamAPI_ISteamRemoteStorage_FileDelete: koffi.KoffiFunction;
|
|
103
|
+
SteamAPI_ISteamRemoteStorage_GetFileSize: koffi.KoffiFunction;
|
|
104
|
+
SteamAPI_ISteamRemoteStorage_GetFileTimestamp: koffi.KoffiFunction;
|
|
105
|
+
SteamAPI_ISteamRemoteStorage_FilePersisted: koffi.KoffiFunction;
|
|
106
|
+
SteamAPI_ISteamRemoteStorage_GetFileCount: koffi.KoffiFunction;
|
|
107
|
+
SteamAPI_ISteamRemoteStorage_GetFileNameAndSize: koffi.KoffiFunction;
|
|
108
|
+
SteamAPI_ISteamRemoteStorage_GetQuota: koffi.KoffiFunction;
|
|
109
|
+
SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount: koffi.KoffiFunction;
|
|
110
|
+
SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp: koffi.KoffiFunction;
|
|
111
|
+
SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp: koffi.KoffiFunction;
|
|
98
112
|
/**
|
|
99
113
|
* Get platform-specific Steam library path
|
|
114
|
+
* Users must download and install Steamworks SDK redistributables separately
|
|
100
115
|
*/
|
|
101
116
|
private getSteamLibraryPath;
|
|
102
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SteamLibraryLoader.d.ts","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SteamLibraryLoader.d.ts","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"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"}
|