forked from Bitcoindefi/OpenAO
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathruntimeRegistry.ts
More file actions
49 lines (38 loc) · 1.61 KB
/
Copy pathruntimeRegistry.ts
File metadata and controls
49 lines (38 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import type { EntityId, RuntimeCharacter, RuntimeClient } from "./types/runtime";
export {};
const vars = require("./vars");
export function getCharacterById<TCharacter extends RuntimeCharacter = RuntimeCharacter>(
idUser: EntityId | null | undefined,
): TCharacter | undefined {
if (typeof idUser === "undefined" || idUser === null) {
return;
}
return vars.personajes[String(idUser)] as TCharacter | undefined;
}
export function getClientById<TClient extends RuntimeClient = RuntimeClient>(
idUser: EntityId | null | undefined,
): TClient | undefined {
if (typeof idUser === "undefined" || idUser === null) {
return;
}
return vars.clients[String(idUser)] as TClient | undefined;
}
export function hasOpenClientById(idUser: EntityId | null | undefined): boolean {
const client = getClientById(idUser);
return Boolean(client && client.readyState === client.OPEN);
}
export function isCharacterOnlineById(idUser: EntityId | null | undefined): boolean {
const user = getCharacterById(idUser);
return Boolean(user && user.connected && !user.cerrado && hasOpenClientById(idUser));
}
export function getOnlineSessionById<
TCharacter extends RuntimeCharacter = RuntimeCharacter,
TClient extends RuntimeClient = RuntimeClient,
>(idUser: EntityId | null | undefined): { user: TCharacter; client: TClient } | undefined {
const user = getCharacterById<TCharacter>(idUser);
const client = getClientById<TClient>(idUser);
if (!user || !client || user.cerrado || !user.connected || client.readyState !== client.OPEN) {
return;
}
return { user, client };
}