@phalanx-engine/client 0.1.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 +1037 -0
- package/dist/DesyncDetector.d.ts +80 -0
- package/dist/DesyncDetector.d.ts.map +1 -0
- package/dist/DesyncDetector.js +93 -0
- package/dist/DesyncDetector.js.map +1 -0
- package/dist/DeterministicRandom.d.ts +78 -0
- package/dist/DeterministicRandom.d.ts.map +1 -0
- package/dist/DeterministicRandom.js +122 -0
- package/dist/DeterministicRandom.js.map +1 -0
- package/dist/EventEmitter.d.ts +65 -0
- package/dist/EventEmitter.d.ts.map +1 -0
- package/dist/EventEmitter.js +102 -0
- package/dist/EventEmitter.js.map +1 -0
- package/dist/FixedMath.d.ts +22 -0
- package/dist/FixedMath.d.ts.map +1 -0
- package/dist/FixedMath.js +26 -0
- package/dist/FixedMath.js.map +1 -0
- package/dist/PhalanxClient.d.ts +335 -0
- package/dist/PhalanxClient.d.ts.map +1 -0
- package/dist/PhalanxClient.js +844 -0
- package/dist/PhalanxClient.js.map +1 -0
- package/dist/RenderLoop.d.ts +95 -0
- package/dist/RenderLoop.d.ts.map +1 -0
- package/dist/RenderLoop.js +192 -0
- package/dist/RenderLoop.js.map +1 -0
- package/dist/SocketManager.d.ts +228 -0
- package/dist/SocketManager.d.ts.map +1 -0
- package/dist/SocketManager.js +584 -0
- package/dist/SocketManager.js.map +1 -0
- package/dist/StateHasher.d.ts +76 -0
- package/dist/StateHasher.d.ts.map +1 -0
- package/dist/StateHasher.js +129 -0
- package/dist/StateHasher.js.map +1 -0
- package/dist/auth/AuthManager.d.ts +188 -0
- package/dist/auth/AuthManager.d.ts.map +1 -0
- package/dist/auth/AuthManager.js +462 -0
- package/dist/auth/AuthManager.js.map +1 -0
- package/dist/auth/adapters/GoogleOAuthAdapter.d.ts +164 -0
- package/dist/auth/adapters/GoogleOAuthAdapter.d.ts.map +1 -0
- package/dist/auth/adapters/GoogleOAuthAdapter.js +521 -0
- package/dist/auth/adapters/GoogleOAuthAdapter.js.map +1 -0
- package/dist/auth/index.d.ts +45 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +54 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/storage.d.ts +56 -0
- package/dist/auth/storage.d.ts.map +1 -0
- package/dist/auth/storage.js +78 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/auth/types.d.ts +212 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +7 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/recovery/BrowserLifecycle.d.ts +33 -0
- package/dist/recovery/BrowserLifecycle.d.ts.map +1 -0
- package/dist/recovery/BrowserLifecycle.js +62 -0
- package/dist/recovery/BrowserLifecycle.js.map +1 -0
- package/dist/recovery/GuestPlayerIdStore.d.ts +17 -0
- package/dist/recovery/GuestPlayerIdStore.d.ts.map +1 -0
- package/dist/recovery/GuestPlayerIdStore.js +31 -0
- package/dist/recovery/GuestPlayerIdStore.js.map +1 -0
- package/dist/recovery/KeyValueStorage.d.ts +32 -0
- package/dist/recovery/KeyValueStorage.d.ts.map +1 -0
- package/dist/recovery/KeyValueStorage.js +58 -0
- package/dist/recovery/KeyValueStorage.js.map +1 -0
- package/dist/recovery/MobileTransport.d.ts +12 -0
- package/dist/recovery/MobileTransport.d.ts.map +1 -0
- package/dist/recovery/MobileTransport.js +24 -0
- package/dist/recovery/MobileTransport.js.map +1 -0
- package/dist/recovery/NetworkQuality.d.ts +22 -0
- package/dist/recovery/NetworkQuality.d.ts.map +1 -0
- package/dist/recovery/NetworkQuality.js +35 -0
- package/dist/recovery/NetworkQuality.js.map +1 -0
- package/dist/recovery/RoomPersistence.d.ts +55 -0
- package/dist/recovery/RoomPersistence.d.ts.map +1 -0
- package/dist/recovery/RoomPersistence.js +68 -0
- package/dist/recovery/RoomPersistence.js.map +1 -0
- package/dist/recovery/RoomRecoveryController.d.ts +146 -0
- package/dist/recovery/RoomRecoveryController.d.ts.map +1 -0
- package/dist/recovery/RoomRecoveryController.js +348 -0
- package/dist/recovery/RoomRecoveryController.js.map +1 -0
- package/dist/recovery/index.d.ts +13 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/index.js +8 -0
- package/dist/recovery/index.js.map +1 -0
- package/dist/types.d.ts +501 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhalanxClient.js","sourceRoot":"","sources":["../src/PhalanxClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RenderLoop - Manages frame-based rendering with tick interpolation
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - requestAnimationFrame-based render loop
|
|
6
|
+
* - Interpolation alpha calculation for smooth rendering between ticks
|
|
7
|
+
* - Tick and frame handler registration
|
|
8
|
+
* - Automatic command flushing
|
|
9
|
+
* - Cross-environment compatibility (browser and Node.js)
|
|
10
|
+
*/
|
|
11
|
+
import type { PlayerCommand, TickHandler, FrameHandler, Unsubscribe } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Configuration for RenderLoop
|
|
14
|
+
*/
|
|
15
|
+
export interface RenderLoopConfig {
|
|
16
|
+
/** Ticks per second (default: 20) */
|
|
17
|
+
tickRate: number;
|
|
18
|
+
/** Enable debug logging (default: false) */
|
|
19
|
+
debug: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Callback to flush pending commands
|
|
23
|
+
*/
|
|
24
|
+
export type CommandFlushCallback = () => void;
|
|
25
|
+
/**
|
|
26
|
+
* RenderLoop - Handles frame rendering and tick interpolation
|
|
27
|
+
*/
|
|
28
|
+
export declare class RenderLoop {
|
|
29
|
+
private config;
|
|
30
|
+
private rafId;
|
|
31
|
+
private lastTickTime;
|
|
32
|
+
private lastFrameTime;
|
|
33
|
+
private tickDurationMs;
|
|
34
|
+
private tickHandlers;
|
|
35
|
+
private frameHandlers;
|
|
36
|
+
private commandFlushCallback;
|
|
37
|
+
constructor(config: RenderLoopConfig);
|
|
38
|
+
/**
|
|
39
|
+
* Set the callback for flushing commands each frame
|
|
40
|
+
*/
|
|
41
|
+
setCommandFlushCallback(callback: CommandFlushCallback | null): void;
|
|
42
|
+
/**
|
|
43
|
+
* Register a callback for simulation ticks
|
|
44
|
+
* Called when processTick is invoked with commands from all players
|
|
45
|
+
*
|
|
46
|
+
* @param handler Callback receiving tick number and commands grouped by player
|
|
47
|
+
* @returns Unsubscribe function
|
|
48
|
+
*/
|
|
49
|
+
onTick(handler: TickHandler): Unsubscribe;
|
|
50
|
+
/**
|
|
51
|
+
* Register a callback for render frames
|
|
52
|
+
* Called every animation frame (~60fps) with interpolation alpha
|
|
53
|
+
* Automatically starts the render loop when first handler is added
|
|
54
|
+
*
|
|
55
|
+
* @param handler Callback receiving alpha (0-1) and delta time in seconds
|
|
56
|
+
* @returns Unsubscribe function
|
|
57
|
+
*/
|
|
58
|
+
onFrame(handler: FrameHandler): Unsubscribe;
|
|
59
|
+
/**
|
|
60
|
+
* Process an incoming tick and notify all tick handlers
|
|
61
|
+
* @param tick Tick number
|
|
62
|
+
* @param commands Commands for this tick
|
|
63
|
+
*/
|
|
64
|
+
processTick(tick: number, commands: PlayerCommand[]): void;
|
|
65
|
+
/**
|
|
66
|
+
* Start the render loop
|
|
67
|
+
*/
|
|
68
|
+
start(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Stop the render loop
|
|
71
|
+
*/
|
|
72
|
+
stop(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Check if render loop is running
|
|
75
|
+
*/
|
|
76
|
+
isRunning(): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Calculate interpolation alpha for smooth rendering
|
|
79
|
+
* @returns Value between 0 and 1 representing progress between ticks
|
|
80
|
+
*/
|
|
81
|
+
calculateInterpolationAlpha(): number;
|
|
82
|
+
/**
|
|
83
|
+
* Update the last tick time (called when tick is received)
|
|
84
|
+
*/
|
|
85
|
+
updateTickTime(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Get tick duration in milliseconds
|
|
88
|
+
*/
|
|
89
|
+
getTickDurationMs(): number;
|
|
90
|
+
/**
|
|
91
|
+
* Clear all handlers and stop the loop
|
|
92
|
+
*/
|
|
93
|
+
dispose(): void;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=RenderLoop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderLoop.d.ts","sourceRoot":"","sources":["../src/RenderLoop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,aAAa,EAEb,WAAW,EACX,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAcpB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAE9C;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IAGjC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,aAAa,CAAgC;IAGrD,OAAO,CAAC,oBAAoB,CAAqC;gBAErD,MAAM,EAAE,gBAAgB;IAKpC;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAIpE;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAOzC;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW;IAiB3C;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI;IA6B1D;;OAEG;IACH,KAAK,IAAI,IAAI;IAoCb;;OAEG;IACH,IAAI,IAAI,IAAI;IAYZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,2BAA2B,IAAI,MAAM;IAOrC;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RenderLoop - Manages frame-based rendering with tick interpolation
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - requestAnimationFrame-based render loop
|
|
6
|
+
* - Interpolation alpha calculation for smooth rendering between ticks
|
|
7
|
+
* - Tick and frame handler registration
|
|
8
|
+
* - Automatic command flushing
|
|
9
|
+
* - Cross-environment compatibility (browser and Node.js)
|
|
10
|
+
*/
|
|
11
|
+
// Cross-environment compatibility for animation frame
|
|
12
|
+
const raf = typeof requestAnimationFrame !== 'undefined'
|
|
13
|
+
? requestAnimationFrame
|
|
14
|
+
: (cb) => setTimeout(() => cb(Date.now()), 16);
|
|
15
|
+
const caf = typeof cancelAnimationFrame !== 'undefined'
|
|
16
|
+
? cancelAnimationFrame
|
|
17
|
+
: (id) => clearTimeout(id);
|
|
18
|
+
/**
|
|
19
|
+
* RenderLoop - Handles frame rendering and tick interpolation
|
|
20
|
+
*/
|
|
21
|
+
export class RenderLoop {
|
|
22
|
+
config;
|
|
23
|
+
// Render loop state
|
|
24
|
+
rafId = null;
|
|
25
|
+
lastTickTime = 0;
|
|
26
|
+
lastFrameTime = 0;
|
|
27
|
+
tickDurationMs;
|
|
28
|
+
// Handlers
|
|
29
|
+
tickHandlers = new Set();
|
|
30
|
+
frameHandlers = new Set();
|
|
31
|
+
// Command flushing callback
|
|
32
|
+
commandFlushCallback = null;
|
|
33
|
+
constructor(config) {
|
|
34
|
+
this.config = config;
|
|
35
|
+
this.tickDurationMs = 1000 / config.tickRate;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set the callback for flushing commands each frame
|
|
39
|
+
*/
|
|
40
|
+
setCommandFlushCallback(callback) {
|
|
41
|
+
this.commandFlushCallback = callback;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Register a callback for simulation ticks
|
|
45
|
+
* Called when processTick is invoked with commands from all players
|
|
46
|
+
*
|
|
47
|
+
* @param handler Callback receiving tick number and commands grouped by player
|
|
48
|
+
* @returns Unsubscribe function
|
|
49
|
+
*/
|
|
50
|
+
onTick(handler) {
|
|
51
|
+
this.tickHandlers.add(handler);
|
|
52
|
+
return () => {
|
|
53
|
+
this.tickHandlers.delete(handler);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Register a callback for render frames
|
|
58
|
+
* Called every animation frame (~60fps) with interpolation alpha
|
|
59
|
+
* Automatically starts the render loop when first handler is added
|
|
60
|
+
*
|
|
61
|
+
* @param handler Callback receiving alpha (0-1) and delta time in seconds
|
|
62
|
+
* @returns Unsubscribe function
|
|
63
|
+
*/
|
|
64
|
+
onFrame(handler) {
|
|
65
|
+
this.frameHandlers.add(handler);
|
|
66
|
+
// Start render loop when first handler is added
|
|
67
|
+
if (this.frameHandlers.size === 1) {
|
|
68
|
+
this.start();
|
|
69
|
+
}
|
|
70
|
+
return () => {
|
|
71
|
+
this.frameHandlers.delete(handler);
|
|
72
|
+
// Stop render loop when no handlers remain
|
|
73
|
+
if (this.frameHandlers.size === 0) {
|
|
74
|
+
this.stop();
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Process an incoming tick and notify all tick handlers
|
|
80
|
+
* @param tick Tick number
|
|
81
|
+
* @param commands Commands for this tick
|
|
82
|
+
*/
|
|
83
|
+
processTick(tick, commands) {
|
|
84
|
+
this.lastTickTime = performance.now();
|
|
85
|
+
// Group commands by player
|
|
86
|
+
const commandsBatch = {
|
|
87
|
+
tick,
|
|
88
|
+
commands: {},
|
|
89
|
+
};
|
|
90
|
+
for (const cmd of commands) {
|
|
91
|
+
const playerId = cmd.playerId ?? 'unknown';
|
|
92
|
+
if (!commandsBatch.commands[playerId]) {
|
|
93
|
+
commandsBatch.commands[playerId] = [];
|
|
94
|
+
}
|
|
95
|
+
commandsBatch.commands[playerId].push(cmd);
|
|
96
|
+
}
|
|
97
|
+
// Call all tick handlers
|
|
98
|
+
for (const handler of this.tickHandlers) {
|
|
99
|
+
try {
|
|
100
|
+
handler(tick, commandsBatch);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (this.config.debug) {
|
|
104
|
+
console.error('[RenderLoop] Error in tick handler:', error);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Start the render loop
|
|
111
|
+
*/
|
|
112
|
+
start() {
|
|
113
|
+
if (this.rafId !== null)
|
|
114
|
+
return;
|
|
115
|
+
this.lastFrameTime = performance.now();
|
|
116
|
+
const loop = (now) => {
|
|
117
|
+
const dt = (now - this.lastFrameTime) / 1000;
|
|
118
|
+
this.lastFrameTime = now;
|
|
119
|
+
// Flush pending commands at the start of each frame
|
|
120
|
+
this.commandFlushCallback?.();
|
|
121
|
+
// Calculate interpolation alpha
|
|
122
|
+
const alpha = this.calculateInterpolationAlpha();
|
|
123
|
+
// Call all frame handlers
|
|
124
|
+
for (const handler of this.frameHandlers) {
|
|
125
|
+
try {
|
|
126
|
+
handler(alpha, dt);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (this.config.debug) {
|
|
130
|
+
console.error('[RenderLoop] Error in frame handler:', error);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
this.rafId = raf(loop);
|
|
135
|
+
};
|
|
136
|
+
this.rafId = raf(loop);
|
|
137
|
+
if (this.config.debug) {
|
|
138
|
+
console.log('[RenderLoop] Started');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Stop the render loop
|
|
143
|
+
*/
|
|
144
|
+
stop() {
|
|
145
|
+
if (this.rafId !== null) {
|
|
146
|
+
caf(this.rafId);
|
|
147
|
+
this.rafId = null;
|
|
148
|
+
if (this.config.debug) {
|
|
149
|
+
// eslint-disable-next-line no-console
|
|
150
|
+
console.log('[RenderLoop] Stopped');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Check if render loop is running
|
|
156
|
+
*/
|
|
157
|
+
isRunning() {
|
|
158
|
+
return this.rafId !== null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Calculate interpolation alpha for smooth rendering
|
|
162
|
+
* @returns Value between 0 and 1 representing progress between ticks
|
|
163
|
+
*/
|
|
164
|
+
calculateInterpolationAlpha() {
|
|
165
|
+
if (this.lastTickTime === 0)
|
|
166
|
+
return 0;
|
|
167
|
+
const elapsed = performance.now() - this.lastTickTime;
|
|
168
|
+
return Math.min(1, Math.max(0, elapsed / this.tickDurationMs));
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Update the last tick time (called when tick is received)
|
|
172
|
+
*/
|
|
173
|
+
updateTickTime() {
|
|
174
|
+
this.lastTickTime = performance.now();
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get tick duration in milliseconds
|
|
178
|
+
*/
|
|
179
|
+
getTickDurationMs() {
|
|
180
|
+
return this.tickDurationMs;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Clear all handlers and stop the loop
|
|
184
|
+
*/
|
|
185
|
+
dispose() {
|
|
186
|
+
this.stop();
|
|
187
|
+
this.tickHandlers.clear();
|
|
188
|
+
this.frameHandlers.clear();
|
|
189
|
+
this.commandFlushCallback = null;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=RenderLoop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderLoop.js","sourceRoot":"","sources":["../src/RenderLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SocketManager - Manages socket.io connection and event handling
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Connection/disconnection to server
|
|
6
|
+
* - Socket event routing
|
|
7
|
+
* - Reconnection logic with retries
|
|
8
|
+
* - Connection state tracking
|
|
9
|
+
*/
|
|
10
|
+
import type { MatchFoundEvent, CountdownEvent, GameStartEvent, TickSyncEvent, CommandsBatchEvent, QueueStatusEvent, RoomCreatedEvent, RoomErrorEvent, RoomExpiredEvent, RoomCancelledEvent, RoomRecoveredEvent, PlayerDisconnectedEvent, PlayerReconnectedEvent, PlayerReadyEvent, ReconnectStateEvent, ReconnectStatusEvent, SubmitCommandsAck, MatchEndEvent, HashComparisonEvent, GamePausedEvent, GameResumedEvent, PhalanxError, ConnectionState, PlayerCommand, SocketTransport } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for SocketManager
|
|
13
|
+
*/
|
|
14
|
+
export interface SocketManagerConfig {
|
|
15
|
+
/** Server URL */
|
|
16
|
+
serverUrl: string;
|
|
17
|
+
/** Player ID */
|
|
18
|
+
playerId: string;
|
|
19
|
+
/** Username */
|
|
20
|
+
username: string;
|
|
21
|
+
/** Authentication token (e.g., Google ID token) */
|
|
22
|
+
authToken?: string;
|
|
23
|
+
/** Connection timeout in milliseconds */
|
|
24
|
+
connectionTimeoutMs: number;
|
|
25
|
+
/** Timeout for private-room recovery acknowledgement in milliseconds */
|
|
26
|
+
recoverRoomTimeoutMs: number;
|
|
27
|
+
/** Socket.IO transports to use when connecting */
|
|
28
|
+
socketTransports: readonly SocketTransport[];
|
|
29
|
+
/** Whether to auto-reconnect */
|
|
30
|
+
autoReconnect: boolean;
|
|
31
|
+
/** Maximum reconnection attempts */
|
|
32
|
+
maxReconnectAttempts: number;
|
|
33
|
+
/** Delay between reconnection attempts in milliseconds */
|
|
34
|
+
reconnectDelayMs: number;
|
|
35
|
+
/** Enable debug logging */
|
|
36
|
+
debug: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Callbacks from SocketManager to the client
|
|
40
|
+
*/
|
|
41
|
+
export interface SocketManagerCallbacks {
|
|
42
|
+
onConnected: () => void;
|
|
43
|
+
onDisconnected: () => void;
|
|
44
|
+
onReconnecting: (attempt: number) => void;
|
|
45
|
+
onReconnectFailed: () => void;
|
|
46
|
+
onError: (error: PhalanxError) => void;
|
|
47
|
+
onMatchFound: (data: MatchFoundEvent) => void;
|
|
48
|
+
onCountdown: (data: CountdownEvent) => void;
|
|
49
|
+
onGameStart: (data: GameStartEvent) => void;
|
|
50
|
+
onMatchEnd: (data: MatchEndEvent) => void;
|
|
51
|
+
onTickSync: (data: TickSyncEvent) => void;
|
|
52
|
+
onCommandsBatch: (data: CommandsBatchEvent) => void;
|
|
53
|
+
onPlayerDisconnected: (data: PlayerDisconnectedEvent) => void;
|
|
54
|
+
onPlayerReconnected: (data: PlayerReconnectedEvent) => void;
|
|
55
|
+
onPlayerReady: (data: PlayerReadyEvent) => void;
|
|
56
|
+
onReconnectState: (data: ReconnectStateEvent) => void;
|
|
57
|
+
onReconnectStatus: (data: ReconnectStatusEvent) => void;
|
|
58
|
+
onHashComparison: (data: HashComparisonEvent) => void;
|
|
59
|
+
onGamePaused: (data: GamePausedEvent) => void;
|
|
60
|
+
onGameResumed: (data: GameResumedEvent) => void;
|
|
61
|
+
onRoomError: (data: RoomErrorEvent) => void;
|
|
62
|
+
onRoomExpired: (data: RoomExpiredEvent) => void;
|
|
63
|
+
onRoomCancelled: (data: RoomCancelledEvent) => void;
|
|
64
|
+
onRoomRecovered: (data: RoomRecoveredEvent) => void;
|
|
65
|
+
isPlaying: () => boolean;
|
|
66
|
+
getCurrentMatchId: () => string | null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* SocketManager - Handles socket.io connection and event handling
|
|
70
|
+
*/
|
|
71
|
+
export declare class SocketManager {
|
|
72
|
+
private socket;
|
|
73
|
+
private config;
|
|
74
|
+
private callbacks;
|
|
75
|
+
private connectionState;
|
|
76
|
+
private reconnectAttempts;
|
|
77
|
+
constructor(config: SocketManagerConfig, callbacks: SocketManagerCallbacks);
|
|
78
|
+
/**
|
|
79
|
+
* Connect to the server
|
|
80
|
+
*/
|
|
81
|
+
connect(): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Disconnect from the server
|
|
84
|
+
*/
|
|
85
|
+
disconnect(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Check if connected
|
|
88
|
+
*/
|
|
89
|
+
isConnected(): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Get connection state
|
|
92
|
+
*/
|
|
93
|
+
getConnectionState(): ConnectionState;
|
|
94
|
+
/**
|
|
95
|
+
* Update player credentials (after auth)
|
|
96
|
+
*/
|
|
97
|
+
updateCredentials(playerId: string, username: string, authToken?: string): void;
|
|
98
|
+
/**
|
|
99
|
+
* Join the matchmaking queue
|
|
100
|
+
*/
|
|
101
|
+
joinQueue(): Promise<QueueStatusEvent>;
|
|
102
|
+
/**
|
|
103
|
+
* Leave the matchmaking queue
|
|
104
|
+
*/
|
|
105
|
+
leaveQueue(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Create a private room. Resolves with the room code.
|
|
108
|
+
*/
|
|
109
|
+
createRoom(gameType?: string): Promise<RoomCreatedEvent>;
|
|
110
|
+
/**
|
|
111
|
+
* Join an existing private room by code.
|
|
112
|
+
* After joining, the server will emit match-found to both players.
|
|
113
|
+
*/
|
|
114
|
+
joinRoom(code: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Cancel a previously created private room.
|
|
117
|
+
*/
|
|
118
|
+
cancelRoom(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Reclaim a private room after the underlying socket was briefly torn
|
|
121
|
+
* down and reconnected.
|
|
122
|
+
*
|
|
123
|
+
* This is the client half of the host-disconnect grace-period contract
|
|
124
|
+
* introduced server-side in PR #18 and extended with countdown/game-start
|
|
125
|
+
* snapshotting in PR #19: the server holds the room (and, if the guest
|
|
126
|
+
* already joined, the running match) open for `HOST_DISCONNECT_GRACE_MS`
|
|
127
|
+
* so the host's new socket can reclaim it via `room-recover`.
|
|
128
|
+
*
|
|
129
|
+
* Typical trigger: a mobile browser kills the WebSocket when the user
|
|
130
|
+
* switches to a messenger to share the invite link, then re-opens the
|
|
131
|
+
* tab. The caller (Game / UI layer) should listen for `visibilitychange`
|
|
132
|
+
* and, when the tab becomes visible again and the socket is dead, call
|
|
133
|
+
* `connect()` followed by `recoverRoom(code)`.
|
|
134
|
+
*
|
|
135
|
+
* Resolves with the `RoomRecoveredEvent` on success. Rejects with the
|
|
136
|
+
* server's error message on `room-error`, or with `'Recover timeout'`
|
|
137
|
+
* if the server never answers within `timeoutMs` (default 10 s). The
|
|
138
|
+
* timeout is important because a stubbornly flaky connection can cause
|
|
139
|
+
* `socket.emit` to succeed locally but never round-trip — we must not
|
|
140
|
+
* leave the host hanging on a dead promise while their countdown UI
|
|
141
|
+
* stays frozen.
|
|
142
|
+
*/
|
|
143
|
+
recoverRoom(code: string, timeoutMs?: number): Promise<RoomRecoveredEvent>;
|
|
144
|
+
/**
|
|
145
|
+
* Register a handler for room-recovered events. Exposed alongside the
|
|
146
|
+
* one-shot `recoverRoom` promise so callers that want to observe
|
|
147
|
+
* recoveries initiated elsewhere (e.g. for analytics) can do so.
|
|
148
|
+
*/
|
|
149
|
+
onRoomRecovered(handler: (event: RoomRecoveredEvent) => void): void;
|
|
150
|
+
/**
|
|
151
|
+
* Register a handler for room-expired events.
|
|
152
|
+
*/
|
|
153
|
+
onRoomExpired(handler: (event: RoomExpiredEvent) => void): void;
|
|
154
|
+
/**
|
|
155
|
+
* Register a handler for room-cancelled events.
|
|
156
|
+
*/
|
|
157
|
+
onRoomCancelled(handler: (event: RoomCancelledEvent) => void): void;
|
|
158
|
+
/**
|
|
159
|
+
* Wait for match found event
|
|
160
|
+
*/
|
|
161
|
+
waitForMatch(): Promise<MatchFoundEvent>;
|
|
162
|
+
/**
|
|
163
|
+
* Wait for countdown to complete
|
|
164
|
+
*/
|
|
165
|
+
waitForCountdown(onCountdown?: (event: CountdownEvent) => void): Promise<void>;
|
|
166
|
+
/**
|
|
167
|
+
* Wait for game start event
|
|
168
|
+
*/
|
|
169
|
+
waitForGameStart(): Promise<GameStartEvent>;
|
|
170
|
+
/**
|
|
171
|
+
* Submit commands with acknowledgment
|
|
172
|
+
*/
|
|
173
|
+
submitCommands(tick: number, commands: PlayerCommand[]): Promise<SubmitCommandsAck>;
|
|
174
|
+
/**
|
|
175
|
+
* Submit commands without acknowledgment (fire and forget)
|
|
176
|
+
*/
|
|
177
|
+
submitCommandsAsync(tick: number, commands: PlayerCommand[]): void;
|
|
178
|
+
/**
|
|
179
|
+
* Send state hash for desync detection
|
|
180
|
+
* @param tick - The tick this hash is for
|
|
181
|
+
* @param hash - The state hash string
|
|
182
|
+
*/
|
|
183
|
+
sendStateHash(tick: number, hash: string): void;
|
|
184
|
+
/**
|
|
185
|
+
* Send a pause-game request to the server (fire-and-forget)
|
|
186
|
+
*/
|
|
187
|
+
sendPauseGame(): void;
|
|
188
|
+
/**
|
|
189
|
+
* Send a resume-game request to the server (fire-and-forget)
|
|
190
|
+
*/
|
|
191
|
+
sendResumeGame(): void;
|
|
192
|
+
/**
|
|
193
|
+
* Notify the server that this client has finished loading and is ready to receive ticks.
|
|
194
|
+
*/
|
|
195
|
+
sendReady(): void;
|
|
196
|
+
/**
|
|
197
|
+
* Reconnect to a specific match
|
|
198
|
+
*/
|
|
199
|
+
reconnectToMatch(matchId: string): Promise<ReconnectStateEvent>;
|
|
200
|
+
/**
|
|
201
|
+
* Attempt automatic reconnection with retries
|
|
202
|
+
*/
|
|
203
|
+
attemptReconnection(): Promise<void>;
|
|
204
|
+
private setupEventHandlers;
|
|
205
|
+
private ensureConnected;
|
|
206
|
+
/**
|
|
207
|
+
* Replay `payload` through every listener currently registered for
|
|
208
|
+
* `event` on the local socket.
|
|
209
|
+
*
|
|
210
|
+
* socket.io-client's `socket.emit` sends to the server, so there is
|
|
211
|
+
* no public API to dispatch a server→client event against the
|
|
212
|
+
* client's own handlers. For the private-room recover path we need
|
|
213
|
+
* exactly that: the server already decided that, e.g., countdown
|
|
214
|
+
* should show "3", and we want every listener the application has
|
|
215
|
+
* wired up — including one-shot promises inside `waitForCountdown`
|
|
216
|
+
* / `waitForGameStart` — to observe the value as if the server had
|
|
217
|
+
* broadcast it on the wire.
|
|
218
|
+
*
|
|
219
|
+
* Iterating a snapshot of `socket.listeners(event)` (rather than
|
|
220
|
+
* the live list) is deliberate: a listener may call `socket.off`
|
|
221
|
+
* on itself during handling (e.g. `waitForCountdown`'s handler
|
|
222
|
+
* unsubscribes on `seconds === 0`), which would mutate the array
|
|
223
|
+
* under us and skip siblings.
|
|
224
|
+
*/
|
|
225
|
+
private emitSyntheticLocal;
|
|
226
|
+
private delay;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=SocketManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocketManager.d.ts","sourceRoot":"","sources":["../src/SocketManager.ts"],"names":[],"mappings":"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"}
|