steamworks-ffi-node 0.4.2 → 0.5.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 +59 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- 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/SteamFriendsManager.d.ts +365 -0
- package/dist/internal/SteamFriendsManager.d.ts.map +1 -0
- package/dist/internal/SteamFriendsManager.js +602 -0
- package/dist/internal/SteamFriendsManager.js.map +1 -0
- package/dist/internal/SteamLibraryLoader.d.ts +23 -0
- package/dist/internal/SteamLibraryLoader.d.ts.map +1 -1
- package/dist/internal/SteamLibraryLoader.js +32 -0
- package/dist/internal/SteamLibraryLoader.js.map +1 -1
- package/dist/internal/SteamOverlayManager.d.ts +407 -0
- package/dist/internal/SteamOverlayManager.d.ts.map +1 -0
- package/dist/internal/SteamOverlayManager.js +523 -0
- package/dist/internal/SteamOverlayManager.js.map +1 -0
- package/dist/internal/SteamRichPresenceManager.d.ts +265 -0
- package/dist/internal/SteamRichPresenceManager.d.ts.map +1 -0
- package/dist/internal/SteamRichPresenceManager.js +374 -0
- package/dist/internal/SteamRichPresenceManager.js.map +1 -0
- package/dist/steam.d.ts +98 -0
- package/dist/steam.d.ts.map +1 -1
- package/dist/steam.js +12 -0
- package/dist/steam.js.map +1 -1
- package/dist/types/friends.d.ts +68 -0
- package/dist/types/friends.d.ts.map +1 -0
- package/dist/types/friends.js +55 -0
- package/dist/types/friends.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/overlay.d.ts +72 -0
- package/dist/types/overlay.d.ts.map +1 -0
- package/dist/types/overlay.js +79 -0
- package/dist/types/overlay.js.map +1 -0
- package/dist/types/richpresence.d.ts +43 -0
- package/dist/types/richpresence.d.ts.map +1 -0
- package/dist/types/richpresence.js +33 -0
- package/dist/types/richpresence.js.map +1 -0
- package/package.json +14 -6
|
@@ -0,0 +1,602 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SteamFriendsManager = void 0;
|
|
37
|
+
const koffi = __importStar(require("koffi"));
|
|
38
|
+
const types_1 = require("../types");
|
|
39
|
+
/**
|
|
40
|
+
* Manager for Steam Friends API operations
|
|
41
|
+
*
|
|
42
|
+
* The SteamFriendsManager provides comprehensive access to Steam's social features,
|
|
43
|
+
* allowing you to retrieve information about the current user and their friends.
|
|
44
|
+
*
|
|
45
|
+
* - Current user information (persona name, online state)
|
|
46
|
+
* - Friends list retrieval and iteration
|
|
47
|
+
* - Individual friend information (name, state, relationship)
|
|
48
|
+
* - Friend details (Steam level, currently playing game)
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* All methods require the Steam API to be initialized. The manager checks initialization
|
|
52
|
+
* status and Friends interface availability before making API calls.
|
|
53
|
+
*
|
|
54
|
+
* @example Get current user information
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const steam = SteamworksSDK.getInstance();
|
|
57
|
+
* steam.init({ appId: 480 });
|
|
58
|
+
*
|
|
59
|
+
* const myName = steam.friends.getPersonaName();
|
|
60
|
+
* const myState = steam.friends.getPersonaState();
|
|
61
|
+
* console.log(`${myName} is ${myState === EPersonaState.Online ? 'online' : 'offline'}`);
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @example Get all friends
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const friends = steam.friends.getAllFriends(EFriendFlags.Immediate);
|
|
67
|
+
* friends.forEach(friend => {
|
|
68
|
+
* console.log(`${friend.personaName} (${friend.steamId})`);
|
|
69
|
+
* console.log(`Status: ${friend.personaState}`);
|
|
70
|
+
*
|
|
71
|
+
* const gameInfo = steam.friends.getFriendGamePlayed(friend.steamId);
|
|
72
|
+
* if (gameInfo) {
|
|
73
|
+
* console.log(`Playing game: ${gameInfo.gameId}`);
|
|
74
|
+
* }
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* @example Iterate through friends manually
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const count = steam.friends.getFriendCount(EFriendFlags.Immediate);
|
|
81
|
+
* for (let i = 0; i < count; i++) {
|
|
82
|
+
* const steamId = steam.friends.getFriendByIndex(i, EFriendFlags.Immediate);
|
|
83
|
+
* if (steamId) {
|
|
84
|
+
* const name = steam.friends.getFriendPersonaName(steamId);
|
|
85
|
+
* const level = steam.friends.getFriendSteamLevel(steamId);
|
|
86
|
+
* console.log(`${name} - Level ${level}`);
|
|
87
|
+
* }
|
|
88
|
+
* }
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @see {@link https://partner.steamgames.com/doc/api/ISteamFriends ISteamFriends Documentation}
|
|
92
|
+
*/
|
|
93
|
+
class SteamFriendsManager {
|
|
94
|
+
/**
|
|
95
|
+
* Creates a new SteamFriendsManager instance
|
|
96
|
+
*
|
|
97
|
+
* @param libraryLoader - The Steam library loader for FFI calls
|
|
98
|
+
* @param apiCore - The Steam API core for lifecycle management
|
|
99
|
+
*/
|
|
100
|
+
constructor(libraryLoader, apiCore) {
|
|
101
|
+
this.libraryLoader = libraryLoader;
|
|
102
|
+
this.apiCore = apiCore;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Gets the current user's persona name (Steam display name)
|
|
106
|
+
*
|
|
107
|
+
* @returns The user's Steam display name, or empty string if unavailable
|
|
108
|
+
*
|
|
109
|
+
* @remarks
|
|
110
|
+
* This returns the name that other users see when they view your profile.
|
|
111
|
+
* It may differ from your account name used for login.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const myName = steam.friends.getPersonaName();
|
|
116
|
+
* console.log(`Logged in as: ${myName}`);
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
getPersonaName() {
|
|
120
|
+
if (!this.apiCore.isInitialized()) {
|
|
121
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
122
|
+
return '';
|
|
123
|
+
}
|
|
124
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
125
|
+
if (!friendsInterface) {
|
|
126
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
127
|
+
return '';
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
const name = this.libraryLoader.SteamAPI_ISteamFriends_GetPersonaName(friendsInterface);
|
|
131
|
+
return name || '';
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
console.error('[Steamworks] Error getting persona name:', error);
|
|
135
|
+
return '';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Gets the current user's persona state (online status)
|
|
140
|
+
*
|
|
141
|
+
* @returns The user's current online status from {@link EPersonaState}
|
|
142
|
+
*
|
|
143
|
+
* @remarks
|
|
144
|
+
* The persona state indicates the user's current availability:
|
|
145
|
+
* - Offline: User is not logged in
|
|
146
|
+
* - Online: User is online and available
|
|
147
|
+
* - Busy: User is online but marked as busy
|
|
148
|
+
* - Away: User is away from keyboard
|
|
149
|
+
* - Snooze: User is auto-away
|
|
150
|
+
* - LookingToTrade: User is looking to trade items
|
|
151
|
+
* - LookingToPlay: User is looking for a game
|
|
152
|
+
* - Invisible: User appears offline to others
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const state = steam.friends.getPersonaState();
|
|
157
|
+
* if (state === EPersonaState.Online) {
|
|
158
|
+
* console.log('You are online!');
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
getPersonaState() {
|
|
163
|
+
if (!this.apiCore.isInitialized()) {
|
|
164
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
165
|
+
return types_1.EPersonaState.Offline;
|
|
166
|
+
}
|
|
167
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
168
|
+
if (!friendsInterface) {
|
|
169
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
170
|
+
return types_1.EPersonaState.Offline;
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const state = this.libraryLoader.SteamAPI_ISteamFriends_GetPersonaState(friendsInterface);
|
|
174
|
+
return state;
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
console.error('[Steamworks] Error getting persona state:', error);
|
|
178
|
+
return types_1.EPersonaState.Offline;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Gets the count of friends matching specified flags
|
|
183
|
+
*
|
|
184
|
+
* @param friendFlags - Flags to filter which friends to count (default: {@link EFriendFlags.Immediate})
|
|
185
|
+
* @returns The number of friends matching the specified flags
|
|
186
|
+
*
|
|
187
|
+
* @remarks
|
|
188
|
+
* Common flag combinations:
|
|
189
|
+
* - `EFriendFlags.Immediate`: Regular friends (most common)
|
|
190
|
+
* - `EFriendFlags.All`: All relationships including blocked, ignored, etc.
|
|
191
|
+
* - `EFriendFlags.OnGameServer`: Friends on the same game server
|
|
192
|
+
*
|
|
193
|
+
* The same flags must be used with {@link getFriendByIndex} to iterate the list.
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* const friendCount = steam.friends.getFriendCount(EFriendFlags.Immediate);
|
|
198
|
+
* console.log(`You have ${friendCount} friends`);
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
201
|
+
* @see {@link getFriendByIndex}
|
|
202
|
+
* @see {@link getAllFriends}
|
|
203
|
+
*/
|
|
204
|
+
getFriendCount(friendFlags = types_1.EFriendFlags.Immediate) {
|
|
205
|
+
if (!this.apiCore.isInitialized()) {
|
|
206
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
207
|
+
return 0;
|
|
208
|
+
}
|
|
209
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
210
|
+
if (!friendsInterface) {
|
|
211
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const count = this.libraryLoader.SteamAPI_ISteamFriends_GetFriendCount(friendsInterface, friendFlags);
|
|
216
|
+
return count;
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
console.error('[Steamworks] Error getting friend count:', error);
|
|
220
|
+
return 0;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Gets a friend's Steam ID by their index in the friends list
|
|
225
|
+
*
|
|
226
|
+
* @param index - Zero-based index of the friend (0 to {@link getFriendCount}() - 1)
|
|
227
|
+
* @param friendFlags - Same flags used in {@link getFriendCount} (default: {@link EFriendFlags.Immediate})
|
|
228
|
+
* @returns The friend's Steam ID as a string, or null if the index is invalid
|
|
229
|
+
*
|
|
230
|
+
* @remarks
|
|
231
|
+
* Use this method to iterate through the friends list:
|
|
232
|
+
* 1. Call {@link getFriendCount} with specific flags
|
|
233
|
+
* 2. Loop from 0 to count-1 calling this method with the same flags
|
|
234
|
+
* 3. Use the returned Steam ID with other methods like {@link getFriendPersonaName}
|
|
235
|
+
*
|
|
236
|
+
* The flags must match those used in {@link getFriendCount} or you'll get incorrect results.
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```typescript
|
|
240
|
+
* const count = steam.friends.getFriendCount(EFriendFlags.Immediate);
|
|
241
|
+
* for (let i = 0; i < count; i++) {
|
|
242
|
+
* const steamId = steam.friends.getFriendByIndex(i, EFriendFlags.Immediate);
|
|
243
|
+
* if (steamId) {
|
|
244
|
+
* const name = steam.friends.getFriendPersonaName(steamId);
|
|
245
|
+
* console.log(`Friend ${i}: ${name} (${steamId})`);
|
|
246
|
+
* }
|
|
247
|
+
* }
|
|
248
|
+
* ```
|
|
249
|
+
*
|
|
250
|
+
* @see {@link getFriendCount}
|
|
251
|
+
* @see {@link getAllFriends}
|
|
252
|
+
*/
|
|
253
|
+
getFriendByIndex(index, friendFlags = types_1.EFriendFlags.Immediate) {
|
|
254
|
+
if (!this.apiCore.isInitialized()) {
|
|
255
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
259
|
+
if (!friendsInterface) {
|
|
260
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
try {
|
|
264
|
+
const steamId = this.libraryLoader.SteamAPI_ISteamFriends_GetFriendByIndex(friendsInterface, index, friendFlags);
|
|
265
|
+
if (steamId && steamId !== 0n) {
|
|
266
|
+
const steamIdStr = steamId.toString();
|
|
267
|
+
return steamIdStr;
|
|
268
|
+
}
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
console.error(`[Steamworks] Error getting friend by index ${index}:`, error);
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Gets a friend's persona name (Steam display name)
|
|
278
|
+
*
|
|
279
|
+
* @param steamId - The friend's Steam ID as a string
|
|
280
|
+
* @returns The friend's display name, or empty string if unavailable
|
|
281
|
+
*
|
|
282
|
+
* @remarks
|
|
283
|
+
* This returns the name that appears in the Steam friends list and chat.
|
|
284
|
+
* If the friend has not been seen by the current user recently, the name
|
|
285
|
+
* may not be immediately available and could return an empty string.
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* const steamId = steam.friends.getFriendByIndex(0, EFriendFlags.Immediate);
|
|
290
|
+
* if (steamId) {
|
|
291
|
+
* const name = steam.friends.getFriendPersonaName(steamId);
|
|
292
|
+
* console.log(`Friend's name: ${name}`);
|
|
293
|
+
* }
|
|
294
|
+
* ```
|
|
295
|
+
*
|
|
296
|
+
* @see {@link getPersonaName} for current user's name
|
|
297
|
+
*/
|
|
298
|
+
getFriendPersonaName(steamId) {
|
|
299
|
+
if (!this.apiCore.isInitialized()) {
|
|
300
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
301
|
+
return '';
|
|
302
|
+
}
|
|
303
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
304
|
+
if (!friendsInterface) {
|
|
305
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
306
|
+
return '';
|
|
307
|
+
}
|
|
308
|
+
try {
|
|
309
|
+
const name = this.libraryLoader.SteamAPI_ISteamFriends_GetFriendPersonaName(friendsInterface, BigInt(steamId));
|
|
310
|
+
return name || '';
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
console.error(`[Steamworks] Error getting friend persona name for ${steamId}:`, error);
|
|
314
|
+
return '';
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Gets a friend's persona state (online status)
|
|
319
|
+
*
|
|
320
|
+
* @param steamId - The friend's Steam ID as a string
|
|
321
|
+
* @returns The friend's current online status from {@link EPersonaState}
|
|
322
|
+
*
|
|
323
|
+
* @remarks
|
|
324
|
+
* Returns the friend's current availability status. Common states include:
|
|
325
|
+
* - Offline (0): Friend is not logged in
|
|
326
|
+
* - Online (1): Friend is online and available
|
|
327
|
+
* - Busy (2): Friend is marked as busy
|
|
328
|
+
* - Away (3): Friend is away from keyboard
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```typescript
|
|
332
|
+
* const friends = steam.friends.getAllFriends();
|
|
333
|
+
* const onlineFriends = friends.filter(f =>
|
|
334
|
+
* steam.friends.getFriendPersonaState(f.steamId) !== EPersonaState.Offline
|
|
335
|
+
* );
|
|
336
|
+
* console.log(`${onlineFriends.length} friends are online`);
|
|
337
|
+
* ```
|
|
338
|
+
*
|
|
339
|
+
* @see {@link getPersonaState} for current user's state
|
|
340
|
+
* @see {@link EPersonaState}
|
|
341
|
+
*/
|
|
342
|
+
getFriendPersonaState(steamId) {
|
|
343
|
+
if (!this.apiCore.isInitialized()) {
|
|
344
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
345
|
+
return types_1.EPersonaState.Offline;
|
|
346
|
+
}
|
|
347
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
348
|
+
if (!friendsInterface) {
|
|
349
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
350
|
+
return types_1.EPersonaState.Offline;
|
|
351
|
+
}
|
|
352
|
+
try {
|
|
353
|
+
const state = this.libraryLoader.SteamAPI_ISteamFriends_GetFriendPersonaState(friendsInterface, BigInt(steamId));
|
|
354
|
+
return state;
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
console.error(`[Steamworks] Error getting friend persona state for ${steamId}:`, error);
|
|
358
|
+
return types_1.EPersonaState.Offline;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Gets the relationship status between the current user and another user
|
|
363
|
+
*
|
|
364
|
+
* @param steamId - The other user's Steam ID as a string
|
|
365
|
+
* @returns The relationship status from {@link EFriendRelationship}
|
|
366
|
+
*
|
|
367
|
+
* @remarks
|
|
368
|
+
* Possible relationship states include:
|
|
369
|
+
* - None (0): No relationship
|
|
370
|
+
* - Blocked (1): User is blocked
|
|
371
|
+
* - RequestRecipient (2): Received a friend request from this user
|
|
372
|
+
* - Friend (3): Users are friends
|
|
373
|
+
* - RequestInitiator (4): Sent a friend request to this user
|
|
374
|
+
* - Ignored (5): User is ignored
|
|
375
|
+
* - IgnoredFriend (6): User was a friend but is now ignored
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* ```typescript
|
|
379
|
+
* const relationship = steam.friends.getFriendRelationship(friendSteamId);
|
|
380
|
+
* if (relationship === EFriendRelationship.Friend) {
|
|
381
|
+
* console.log('This user is your friend');
|
|
382
|
+
* } else if (relationship === EFriendRelationship.RequestRecipient) {
|
|
383
|
+
* console.log('This user sent you a friend request');
|
|
384
|
+
* }
|
|
385
|
+
* ```
|
|
386
|
+
*
|
|
387
|
+
* @see {@link EFriendRelationship}
|
|
388
|
+
*/
|
|
389
|
+
getFriendRelationship(steamId) {
|
|
390
|
+
if (!this.apiCore.isInitialized()) {
|
|
391
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
392
|
+
return types_1.EFriendRelationship.None;
|
|
393
|
+
}
|
|
394
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
395
|
+
if (!friendsInterface) {
|
|
396
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
397
|
+
return types_1.EFriendRelationship.None;
|
|
398
|
+
}
|
|
399
|
+
try {
|
|
400
|
+
const relationship = this.libraryLoader.SteamAPI_ISteamFriends_GetFriendRelationship(friendsInterface, BigInt(steamId));
|
|
401
|
+
return relationship;
|
|
402
|
+
}
|
|
403
|
+
catch (error) {
|
|
404
|
+
console.error(`[Steamworks] Error getting friend relationship for ${steamId}:`, error);
|
|
405
|
+
return types_1.EFriendRelationship.None;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Gets all friends with their complete information in a single call
|
|
410
|
+
*
|
|
411
|
+
* @param friendFlags - Flags to filter which friends to retrieve (default: {@link EFriendFlags.Immediate})
|
|
412
|
+
* @returns Array of {@link FriendInfo} objects containing friend details
|
|
413
|
+
*
|
|
414
|
+
* @remarks
|
|
415
|
+
* This is a convenience method that combines {@link getFriendCount}, {@link getFriendByIndex},
|
|
416
|
+
* and several other methods to retrieve complete friend information in one call.
|
|
417
|
+
*
|
|
418
|
+
* Each {@link FriendInfo} object contains:
|
|
419
|
+
* - steamId: Friend's Steam ID
|
|
420
|
+
* - personaName: Friend's display name
|
|
421
|
+
* - personaState: Friend's online status
|
|
422
|
+
* - relationship: Relationship type with this friend
|
|
423
|
+
*
|
|
424
|
+
* For large friends lists (100+), this method makes many API calls and may take
|
|
425
|
+
* a moment to complete. Consider using {@link getFriendByIndex} for manual iteration
|
|
426
|
+
* if you need to process friends incrementally.
|
|
427
|
+
*
|
|
428
|
+
* @example
|
|
429
|
+
* ```typescript
|
|
430
|
+
* const friends = steam.friends.getAllFriends(EFriendFlags.Immediate);
|
|
431
|
+
* console.log(`You have ${friends.length} friends`);
|
|
432
|
+
*
|
|
433
|
+
* friends.forEach(friend => {
|
|
434
|
+
* console.log(`${friend.personaName} is ${friend.personaState === EPersonaState.Online ? 'online' : 'offline'}`);
|
|
435
|
+
* });
|
|
436
|
+
* ```
|
|
437
|
+
*
|
|
438
|
+
* @see {@link getFriendCount}
|
|
439
|
+
* @see {@link getFriendByIndex}
|
|
440
|
+
* @see {@link FriendInfo}
|
|
441
|
+
*/
|
|
442
|
+
getAllFriends(friendFlags = types_1.EFriendFlags.Immediate) {
|
|
443
|
+
const friends = [];
|
|
444
|
+
const count = this.getFriendCount(friendFlags);
|
|
445
|
+
for (let i = 0; i < count; i++) {
|
|
446
|
+
const steamId = this.getFriendByIndex(i, friendFlags);
|
|
447
|
+
if (steamId) {
|
|
448
|
+
friends.push({
|
|
449
|
+
steamId,
|
|
450
|
+
personaName: this.getFriendPersonaName(steamId),
|
|
451
|
+
personaState: this.getFriendPersonaState(steamId),
|
|
452
|
+
relationship: this.getFriendRelationship(steamId),
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
console.log(`[Steamworks] Retrieved ${friends.length} friends`);
|
|
457
|
+
return friends;
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Gets a friend's current Steam level
|
|
461
|
+
*
|
|
462
|
+
* @param steamId - The friend's Steam ID as a string
|
|
463
|
+
* @returns The friend's Steam level (1-5000+), or 0 if unavailable
|
|
464
|
+
*
|
|
465
|
+
* @remarks
|
|
466
|
+
* The Steam level indicates how much a user has participated in Steam features
|
|
467
|
+
* like collecting trading cards, crafting badges, and participating in events.
|
|
468
|
+
*
|
|
469
|
+
* Returns 0 if:
|
|
470
|
+
* - The friend's profile is private
|
|
471
|
+
* - The level hasn't been loaded yet
|
|
472
|
+
* - The API call fails
|
|
473
|
+
*
|
|
474
|
+
* @example
|
|
475
|
+
* ```typescript
|
|
476
|
+
* const friends = steam.friends.getAllFriends();
|
|
477
|
+
* friends.forEach(friend => {
|
|
478
|
+
* const level = steam.friends.getFriendSteamLevel(friend.steamId);
|
|
479
|
+
* console.log(`${friend.personaName} is Level ${level}`);
|
|
480
|
+
* });
|
|
481
|
+
* ```
|
|
482
|
+
*
|
|
483
|
+
* @example Find highest level friend
|
|
484
|
+
* ```typescript
|
|
485
|
+
* const friends = steam.friends.getAllFriends();
|
|
486
|
+
* const highestLevel = friends.reduce((max, friend) => {
|
|
487
|
+
* const level = steam.friends.getFriendSteamLevel(friend.steamId);
|
|
488
|
+
* return level > max.level ? { friend, level } : max;
|
|
489
|
+
* }, { friend: null, level: 0 });
|
|
490
|
+
*
|
|
491
|
+
* if (highestLevel.friend) {
|
|
492
|
+
* console.log(`Highest level friend: ${highestLevel.friend.personaName} (Level ${highestLevel.level})`);
|
|
493
|
+
* }
|
|
494
|
+
* ```
|
|
495
|
+
*/
|
|
496
|
+
getFriendSteamLevel(steamId) {
|
|
497
|
+
if (!this.apiCore.isInitialized()) {
|
|
498
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
499
|
+
return 0;
|
|
500
|
+
}
|
|
501
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
502
|
+
if (!friendsInterface) {
|
|
503
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
504
|
+
return 0;
|
|
505
|
+
}
|
|
506
|
+
try {
|
|
507
|
+
const level = this.libraryLoader.SteamAPI_ISteamFriends_GetFriendSteamLevel(friendsInterface, BigInt(steamId));
|
|
508
|
+
return level;
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
console.error(`[Steamworks] Error getting friend Steam level for ${steamId}:`, error);
|
|
512
|
+
return 0;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Checks if a friend is currently playing a game and returns game information
|
|
517
|
+
*
|
|
518
|
+
* @param steamId - The friend's Steam ID as a string
|
|
519
|
+
* @returns {@link FriendGameInfo} object if the friend is playing a game, null otherwise
|
|
520
|
+
*
|
|
521
|
+
* @remarks
|
|
522
|
+
* When a friend is actively playing a game, this returns detailed information including:
|
|
523
|
+
* - gameId: The Steam App ID of the game being played
|
|
524
|
+
* - gameIP: IP address of the game server (if on a server)
|
|
525
|
+
* - gamePort: Port of the game server
|
|
526
|
+
* - queryPort: Query port for the game server
|
|
527
|
+
* - steamIDLobby: Steam ID of the lobby (if in a lobby)
|
|
528
|
+
*
|
|
529
|
+
* Returns null if:
|
|
530
|
+
* - Friend is not playing any game
|
|
531
|
+
* - Friend is offline
|
|
532
|
+
* - Game information is not available
|
|
533
|
+
*
|
|
534
|
+
* @example Check what games friends are playing
|
|
535
|
+
* ```typescript
|
|
536
|
+
* const friends = steam.friends.getAllFriends();
|
|
537
|
+
* friends.forEach(friend => {
|
|
538
|
+
* const gameInfo = steam.friends.getFriendGamePlayed(friend.steamId);
|
|
539
|
+
* if (gameInfo) {
|
|
540
|
+
* console.log(`${friend.personaName} is playing App ${gameInfo.gameId}`);
|
|
541
|
+
* }
|
|
542
|
+
* });
|
|
543
|
+
* ```
|
|
544
|
+
*
|
|
545
|
+
* @example Find friends playing a specific game
|
|
546
|
+
* ```typescript
|
|
547
|
+
* const TARGET_GAME_ID = '730'; // CS:GO
|
|
548
|
+
* const friends = steam.friends.getAllFriends();
|
|
549
|
+
* const playingTargetGame = friends.filter(friend => {
|
|
550
|
+
* const gameInfo = steam.friends.getFriendGamePlayed(friend.steamId);
|
|
551
|
+
* return gameInfo && gameInfo.gameId === TARGET_GAME_ID;
|
|
552
|
+
* });
|
|
553
|
+
*
|
|
554
|
+
* console.log(`${playingTargetGame.length} friends are playing CS:GO`);
|
|
555
|
+
* ```
|
|
556
|
+
*
|
|
557
|
+
* @see {@link FriendGameInfo}
|
|
558
|
+
*/
|
|
559
|
+
getFriendGamePlayed(steamId) {
|
|
560
|
+
if (!this.apiCore.isInitialized()) {
|
|
561
|
+
console.warn('[Steamworks] WARNING: Steam API not initialized');
|
|
562
|
+
return null;
|
|
563
|
+
}
|
|
564
|
+
const friendsInterface = this.apiCore.getFriendsInterface();
|
|
565
|
+
if (!friendsInterface) {
|
|
566
|
+
console.warn('[Steamworks] WARNING: Friends interface not available');
|
|
567
|
+
return null;
|
|
568
|
+
}
|
|
569
|
+
try {
|
|
570
|
+
const gameInfoPtr = koffi.alloc(SteamFriendsManager.FriendGameInfo_t, 1);
|
|
571
|
+
const isPlaying = this.libraryLoader.SteamAPI_ISteamFriends_GetFriendGamePlayed(friendsInterface, BigInt(steamId), gameInfoPtr);
|
|
572
|
+
if (isPlaying) {
|
|
573
|
+
const gameInfo = koffi.decode(gameInfoPtr, SteamFriendsManager.FriendGameInfo_t);
|
|
574
|
+
if (gameInfo.m_gameID && gameInfo.m_gameID !== 0n) {
|
|
575
|
+
const result = {
|
|
576
|
+
gameId: gameInfo.m_gameID.toString(),
|
|
577
|
+
gameIP: gameInfo.m_unGameIP,
|
|
578
|
+
gamePort: gameInfo.m_usGamePort,
|
|
579
|
+
queryPort: gameInfo.m_usQueryPort,
|
|
580
|
+
steamIDLobby: gameInfo.m_steamIDLobby.toString(),
|
|
581
|
+
};
|
|
582
|
+
return result;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
return null;
|
|
586
|
+
}
|
|
587
|
+
catch (error) {
|
|
588
|
+
console.error(`[Steamworks] Error getting friend game played for ${steamId}:`, error);
|
|
589
|
+
return null;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
exports.SteamFriendsManager = SteamFriendsManager;
|
|
594
|
+
/** FriendGameInfo_t struct for game information */
|
|
595
|
+
SteamFriendsManager.FriendGameInfo_t = koffi.struct('FriendGameInfo_t', {
|
|
596
|
+
m_gameID: 'uint64',
|
|
597
|
+
m_unGameIP: 'uint32',
|
|
598
|
+
m_usGamePort: 'uint16',
|
|
599
|
+
m_usQueryPort: 'uint16',
|
|
600
|
+
m_steamIDLobby: 'uint64',
|
|
601
|
+
});
|
|
602
|
+
//# sourceMappingURL=SteamFriendsManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SteamFriendsManager.js","sourceRoot":"","sources":["../../src/internal/SteamFriendsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,29 @@ export declare class SteamLibraryLoader {
|
|
|
60
60
|
SteamAPI_ISteamUtils_IsAPICallCompleted: koffi.KoffiFunction;
|
|
61
61
|
SteamAPI_ISteamUtils_GetAPICallResult: koffi.KoffiFunction;
|
|
62
62
|
SteamAPI_ISteamUtils_GetAPICallFailureReason: koffi.KoffiFunction;
|
|
63
|
+
SteamAPI_SteamFriends_v018: koffi.KoffiFunction;
|
|
64
|
+
SteamAPI_ISteamFriends_GetPersonaName: koffi.KoffiFunction;
|
|
65
|
+
SteamAPI_ISteamFriends_GetPersonaState: koffi.KoffiFunction;
|
|
66
|
+
SteamAPI_ISteamFriends_GetFriendCount: koffi.KoffiFunction;
|
|
67
|
+
SteamAPI_ISteamFriends_GetFriendByIndex: koffi.KoffiFunction;
|
|
68
|
+
SteamAPI_ISteamFriends_GetFriendPersonaName: koffi.KoffiFunction;
|
|
69
|
+
SteamAPI_ISteamFriends_GetFriendPersonaState: koffi.KoffiFunction;
|
|
70
|
+
SteamAPI_ISteamFriends_GetFriendRelationship: koffi.KoffiFunction;
|
|
71
|
+
SteamAPI_ISteamFriends_GetFriendSteamLevel: koffi.KoffiFunction;
|
|
72
|
+
SteamAPI_ISteamFriends_GetFriendGamePlayed: koffi.KoffiFunction;
|
|
73
|
+
SteamAPI_ISteamFriends_SetRichPresence: koffi.KoffiFunction;
|
|
74
|
+
SteamAPI_ISteamFriends_ClearRichPresence: koffi.KoffiFunction;
|
|
75
|
+
SteamAPI_ISteamFriends_GetFriendRichPresence: koffi.KoffiFunction;
|
|
76
|
+
SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount: koffi.KoffiFunction;
|
|
77
|
+
SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex: koffi.KoffiFunction;
|
|
78
|
+
SteamAPI_ISteamFriends_RequestFriendRichPresence: koffi.KoffiFunction;
|
|
79
|
+
SteamAPI_ISteamFriends_ActivateGameOverlay: koffi.KoffiFunction;
|
|
80
|
+
SteamAPI_ISteamFriends_ActivateGameOverlayToUser: koffi.KoffiFunction;
|
|
81
|
+
SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage: koffi.KoffiFunction;
|
|
82
|
+
SteamAPI_ISteamFriends_ActivateGameOverlayToStore: koffi.KoffiFunction;
|
|
83
|
+
SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog: koffi.KoffiFunction;
|
|
84
|
+
SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog: koffi.KoffiFunction;
|
|
85
|
+
SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString: koffi.KoffiFunction;
|
|
63
86
|
/**
|
|
64
87
|
* Get platform-specific Steam library path
|
|
65
88
|
*/
|
|
@@ -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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"}
|