@types/gimloader 1.7.0 → 1.8.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.
Files changed (3) hide show
  1. gimloader/README.md +2 -2
  2. gimloader/index.d.ts +2103 -177
  3. gimloader/package.json +6 -3
gimloader/index.d.ts CHANGED
@@ -1,173 +1,2092 @@
1
1
  declare namespace Gimloader {
2
- type event = symbol | string;
3
- type eventNS = string | event[];
2
+ type EventEmitter2 = import("eventemitter2").EventEmitter2;
3
+ namespace Stores {
4
+ type Collider = import("@dimforge/rapier2d-compat").Collider;
5
+ type ColliderDesc = import("@dimforge/rapier2d-compat").ColliderDesc;
6
+ type RigidBody = import("@dimforge/rapier2d-compat").RigidBody;
7
+ type RigidBodyDesc = import("@dimforge/rapier2d-compat").RigidBodyDesc;
8
+ type Vector = import("@dimforge/rapier2d-compat").Vector;
9
+ type BaseScene = import("phaser").Scene;
4
10
 
5
- interface ConstructorOptions {
6
- /**
7
- * @default false
8
- * @description set this to `true` to use wildcards.
9
- */
10
- wildcard?: boolean;
11
- /**
12
- * @default '.'
13
- * @description the delimiter used to segment namespaces.
14
- */
15
- delimiter?: string;
16
- /**
17
- * @default false
18
- * @description set this to `true` if you want to emit the newListener events.
19
- */
20
- newListener?: boolean;
21
- /**
22
- * @default false
23
- * @description set this to `true` if you want to emit the removeListener events.
24
- */
25
- removeListener?: boolean;
26
- /**
27
- * @default 10
28
- * @description the maximum amount of listeners that can be assigned to an event.
29
- */
30
- maxListeners?: number;
31
- /**
32
- * @default false
33
- * @description show event name in memory leak message when more than maximum amount of listeners is assigned, default false
34
- */
35
- verboseMemoryLeak?: boolean;
36
- /**
37
- * @default false
38
- * @description disable throwing uncaughtException if an error event is emitted and it has no listeners
39
- */
40
- ignoreErrors?: boolean;
41
- }
42
- interface ListenerFn {
43
- (...values: any[]): void;
44
- }
45
- interface EventAndListener {
46
- (event: string | string[], ...values: any[]): void;
47
- }
11
+ interface Team {
12
+ characters: Map<number, string>;
13
+ id: string;
14
+ name: string;
15
+ score: number;
16
+ }
48
17
 
49
- interface WaitForFilter {
50
- (...values: any[]): boolean;
51
- }
18
+ interface Teams {
19
+ teams: Map<string, Team>;
20
+ updateCounter: number;
21
+ }
52
22
 
53
- interface WaitForOptions {
54
- /**
55
- * @default 0
56
- */
57
- timeout: number;
58
- /**
59
- * @default null
60
- */
61
- filter: WaitForFilter;
62
- /**
63
- * @default false
64
- */
65
- handleError: boolean;
66
- /**
67
- * @default Promise
68
- */
69
- Promise: any;
70
- /**
71
- * @default false
72
- */
73
- overload: boolean;
74
- }
23
+ interface SceneStore {
24
+ currentScene: string;
25
+ gpuTier: number;
26
+ isCursorOverCanvas: boolean;
27
+ }
75
28
 
76
- interface CancelablePromise<T> extends Promise<T> {
77
- cancel(reason: string): undefined;
78
- }
29
+ interface BackgroundLayersManager {
30
+ layerManager: LayerManager;
31
+ scene: Scene;
32
+ createLayer(options: {
33
+ layerId: string;
34
+ depth: number;
35
+ }): void;
36
+ fill(terrain: TerrainOption): void;
37
+ fillForPlatformer(): void;
38
+ fillForTopDown(terrain: TerrainOption): void;
39
+ removeLayer(options: {
40
+ layerId: string;
41
+ }): void;
42
+ }
79
43
 
80
- interface OnceOptions {
81
- /**
82
- * @default 0
83
- */
84
- timeout: number;
85
- /**
86
- * @default Promise
87
- */
88
- Promise: any;
89
- /**
90
- * @default false
91
- */
92
- overload: boolean;
93
- }
44
+ interface LayerManager {
45
+ backgroundLayersManager: BackgroundLayersManager;
46
+ colliders: Map<string, Map<string, string>>;
47
+ layers: Map<string, any>;
48
+ scene: Scene;
49
+ createInitialLayers(): void;
50
+ createLayer(id: string): void;
51
+ fillBottomLayer(terrain: TerrainOption): void;
52
+ getActualLayerDepth(id: string): number;
53
+ moveLayersAboveCharacters(): void;
54
+ onWorldSizeChange(): void;
55
+ }
94
56
 
95
- interface ListenToOptions {
96
- on?: { (event: event | eventNS, handler: ListenerFn): void };
97
- off?: { (event: event | eventNS, handler: ListenerFn): void };
98
- reducers: (event: any) => boolean | object;
99
- }
57
+ interface TileManager {
58
+ cumulTime: number;
59
+ scene: Scene;
60
+ layerManager: LayerManager;
61
+ }
100
62
 
101
- interface GeneralEventEmitter {
102
- addEventListener(event: event, handler: ListenerFn): this;
103
- removeEventListener(event: event, handler: ListenerFn): this;
104
- addListener?(event: event, handler: ListenerFn): this;
105
- removeListener?(event: event, handler: ListenerFn): this;
106
- on?(event: event, handler: ListenerFn): this;
107
- off?(event: event, handler: ListenerFn): this;
108
- }
63
+ interface CharacterOptions {
64
+ id: string;
65
+ x: number;
66
+ y: number;
67
+ scale: number;
68
+ type: string;
69
+ }
109
70
 
110
- interface OnOptions {
111
- async?: boolean;
112
- promisify?: boolean;
113
- nextTick?: boolean;
114
- objectify?: boolean;
115
- }
71
+ interface Spectating {
72
+ findNewCharacter(): void;
73
+ onBeginSpectating(): void;
74
+ onEndSpectating(): void;
75
+ setShuffle(shuffle: boolean, save?: boolean): void;
76
+ }
116
77
 
117
- interface Listener {
118
- emitter: EventEmitter2;
119
- event: event | eventNS;
120
- listener: ListenerFn;
121
- off(): this;
122
- }
78
+ interface CharacterManager {
79
+ characterContainer: import("phaser").GameObjects.Container;
80
+ characters: Map<string, Character>;
81
+ scene: Scene;
82
+ spectating: Spectating;
83
+ addCharacter(options: CharacterOptions): Character;
84
+ cullCharacters(): void;
85
+ removeCharacter(id: string): void;
86
+ update(dt: number): void;
87
+ }
88
+
89
+ interface Removal {
90
+ overlay: Overlay;
91
+ prevMouseWasDown: boolean;
92
+ scene: Scene;
93
+ checkForItem(): void;
94
+ createStateListeners(): void;
95
+ removeSelectedItems(): void;
96
+ update(): void;
97
+ }
98
+
99
+ interface PlatformerEditing {
100
+ setTopDownControlsActive(active: boolean): void;
101
+ }
102
+
103
+ interface SelectedDevicesOverlay {
104
+ graphics: import("phaser").GameObjects.Graphics;
105
+ scene: Scene;
106
+ showing: boolean;
107
+ hide(): void;
108
+ show(rects: Rect[]): void;
109
+ }
110
+
111
+ interface MultiSelect {
112
+ boundingBoxAroundEverything: Rect | null;
113
+ currentlySelectedDevices: Device[];
114
+ currentlySelectedDevicesIds: string[];
115
+ hidingSelectionForDevices: boolean;
116
+ isSelecting: boolean;
117
+ modifierKeyDown: boolean;
118
+ mouseShifts: Vector[];
119
+ movedOrCopiedDevices: Device[];
120
+ overlay: Overlay;
121
+ scene: Scene;
122
+ selectedDevices: Device[];
123
+ selectedDevicesIds: string[];
124
+ selectedDevicesOverlay: SelectedDevicesOverlay;
125
+ selection: Rect | null;
126
+ addDeviceToSelection(device: Device): void;
127
+ endSelectionRect(): void;
128
+ findSelectedDevices(): void;
129
+ hasSomeSelection(): boolean;
130
+ hideSelection(): void;
131
+ multiselectDeleteKeyHandler(): void;
132
+ multiselectKeyHandler(down: boolean): void;
133
+ onDeviceAdded(device: Device): void;
134
+ onDeviceRemoved(id: string): void;
135
+ setShiftParams(): void;
136
+ startSelectionRect(): void;
137
+ unselectAll(): void;
138
+ update(): void;
139
+ updateSelectedDevicesOverlay(): void;
140
+ updateSelectionRect(): void;
141
+ }
142
+
143
+ interface DepthSort {
144
+ overlay: Overlay;
145
+ scene: Scene;
146
+ update(): void;
147
+ }
148
+
149
+ interface ActionManager {
150
+ depthSort: DepthSort;
151
+ multiSelect: MultiSelect;
152
+ platformerEditing: PlatformerEditing;
153
+ removal: Removal;
154
+ update(): void;
155
+ }
156
+
157
+ interface Projectile {
158
+ id: string;
159
+ startTime: number;
160
+ endTime: number;
161
+ start: Vector;
162
+ end: Vector;
163
+ radius: number;
164
+ appearance: string;
165
+ ownerId: string;
166
+ ownerTeamId: string;
167
+ damage: number;
168
+ hitPos?: Vector;
169
+ hitTime?: number;
170
+ }
171
+
172
+ interface Projectiles {
173
+ damageMarkers: any;
174
+ dynamicDevices: Set<Device>;
175
+ fireSlashes: any;
176
+ projectileJSON: Map<string, Projectile>;
177
+ runClientSidePrediction: boolean;
178
+ scene: Scene;
179
+ addProjectile(projectile: Projectile): void;
180
+ fire(pointer: import("phaser").Input.Pointer, snap: boolean): void;
181
+ update(): void;
182
+ }
183
+
184
+ interface WorldBoundsCollider {
185
+ body: RigidBody;
186
+ collider: Collider;
187
+ }
188
+
189
+ interface BodyBounds {
190
+ minX: number;
191
+ minY: number;
192
+ maxX: number;
193
+ maxY: number;
194
+ }
195
+
196
+ interface BodyStatic {
197
+ bounds: BodyBounds;
198
+ cells: Set<string>;
199
+ }
200
+
201
+ interface Body {
202
+ collider?: Collider;
203
+ colliderDesc: ColliderDesc;
204
+ rigidBody?: RigidBody;
205
+ rigidBodyDesc: RigidBodyDesc;
206
+ static: BodyStatic;
207
+ device?: {
208
+ id: string;
209
+ };
210
+ terrain?: {
211
+ key: string;
212
+ };
213
+ }
214
+
215
+ interface ActiveBodies {
216
+ activeBodies: Set<string>;
217
+ bodyManager: BodyManager;
218
+ currentCoordinateKeys: Set<string>;
219
+ world: World;
220
+ disableBody(id: string): void;
221
+ enable(keys: Set<string>, setAll: boolean): void;
222
+ enableBodiesAlongLine(options: {
223
+ start: Vector;
224
+ end: Vector;
225
+ }): void;
226
+ enableBodiesWithinAreas(options: {
227
+ areas: Rect[];
228
+ disableActiveBodiesOutsideArea: boolean;
229
+ }): void;
230
+ enableBody(id: string): void;
231
+ setDirty(): void;
232
+ }
233
+
234
+ interface BodyManager {
235
+ activeBodies: ActiveBodies;
236
+ bodies: Map<string, Body>;
237
+ cells: Map<string, Set<string>>;
238
+ dynamicBodies: Set<string>;
239
+ gridSize: number;
240
+ staticBodies: Set<string>;
241
+ staticSensorBodies: Set<string>;
242
+ _idCount: number;
243
+ find(id: string): Body | undefined;
244
+ findPotentialStaticBodiesWithinArea(area: Rect): Set<string>;
245
+ generateId(): void;
246
+ insert(body: Body): string;
247
+ remove(id: string): void;
248
+ }
249
+
250
+ interface PhysicsManager {
251
+ bodies: BodyManager;
252
+ cumulTime: number;
253
+ lastTime: number;
254
+ physicsStep(dt: number): void;
255
+ runPhysicsLoop(dt: number): void;
256
+ world: World;
257
+ worldBoundsColliders: Set<WorldBoundsCollider>;
258
+ }
259
+
260
+ interface CreateTileOptions {
261
+ x: number;
262
+ y: number;
263
+ tileIndex: number;
264
+ terrainOption: TerrainOption;
265
+ }
266
+
267
+ interface InGameTerrainBuilder {
268
+ afterFailureWithTouch: boolean;
269
+ clearConsumeErrorMessage(): void;
270
+ clearPreviewLayer(): void;
271
+ createPreviewTile(options: CreateTileOptions): void;
272
+ overlay: Overlay;
273
+ previewingTile?: Vector;
274
+ scene: Scene;
275
+ update(): void;
276
+ wasDown: boolean;
277
+ }
278
+
279
+ interface WorldInteractives {
280
+ scene: Scene;
281
+ currentDevice?: Device;
282
+ clearCurrentDevice(): void;
283
+ setCurrentDevice(device: Device): void;
284
+ update(devices: Device[]): void;
285
+ }
286
+
287
+ interface ShowOverlayOptions {
288
+ x: number;
289
+ y: number;
290
+ width: number;
291
+ height: number;
292
+ depth: number;
293
+ }
294
+
295
+ interface Overlay {
296
+ scene: Scene;
297
+ showing: boolean;
298
+ showingDimensions: {
299
+ width: number;
300
+ height: number;
301
+ } | null;
302
+ showingPosition: {
303
+ x: number;
304
+ y: number;
305
+ } | null;
306
+ hide(): void;
307
+ show(options: ShowOverlayOptions): void;
308
+ }
309
+
310
+ interface DevicesPreview {
311
+ devicePreviewOverlay: Overlay;
312
+ previousDevices: Device[];
313
+ scene: Scene;
314
+ removePreviousDevices(isBeingReplaced: boolean): void;
315
+ update(): void;
316
+ }
317
+
318
+ interface DevicesAction {
319
+ inputManager: InputManager;
320
+ scene: Scene;
321
+ onClick(arg: any): void;
322
+ update(): void;
323
+ }
324
+
325
+ interface DeviceProjectiles {
326
+ device: Device;
327
+ addToDynamicDevices(): void;
328
+ collidesWithProjectile(object: Circle): boolean;
329
+ onClientPredictedHit(position: Vector): void;
330
+ removeFromDynamicDevices(): void;
331
+ setDynamic(dynamic: boolean): void;
332
+ }
333
+
334
+ interface DeviceTweens {
335
+ list: import("phaser").Tweens.Tween[];
336
+ device: Device;
337
+ add(config: import("phaser").Types.Tweens.TweenBuilderConfig): import("phaser").Tweens.Tween;
338
+ destroy(): void;
339
+ }
340
+
341
+ interface WirePoints {
342
+ device: Device;
343
+ end: Vector;
344
+ start: Vector;
345
+ onPointChange(): void;
346
+ setBoth(x: number, y: number): void;
347
+ }
348
+
349
+ interface Layers {
350
+ depth: number;
351
+ device: Device;
352
+ layer: string;
353
+ options: any;
354
+ }
355
+
356
+ interface ShadowOptions {
357
+ x: number;
358
+ y: number;
359
+ r1: number;
360
+ r2: number;
361
+ alphaMultip: number;
362
+ depth: number;
363
+ }
364
+
365
+ interface Shadows {
366
+ device: Device;
367
+ list: ShadowOptions[];
368
+ add(options: ShadowOptions): void;
369
+ destroy(): void;
370
+ forEach(callback: (shadow: ShadowOptions) => void): void;
371
+ hide(): void;
372
+ show(): void;
373
+ }
374
+
375
+ interface Circle {
376
+ x: number;
377
+ y: number;
378
+ radius: number;
379
+ }
380
+
381
+ interface RotatedCircle extends Circle {
382
+ angle: number;
383
+ }
384
+
385
+ interface VisualEditingCircle {
386
+ angle: number;
387
+ rotable: boolean;
388
+ radius: number;
389
+ minRadius: number;
390
+ maxRadius: number;
391
+ onChange(value: RotatedCircle): void;
392
+ }
393
+
394
+ interface RotatedRect extends Rect {
395
+ angle: number;
396
+ }
397
+
398
+ interface VisualEditingBox {
399
+ width: number;
400
+ height: number;
401
+ angle: number;
402
+ minWidth: number;
403
+ maxWidth: number;
404
+ minHeight: number;
405
+ maxHeight: number;
406
+ keepRatio: boolean;
407
+ rotable: boolean;
408
+ onChange(value: RotatedRect): void;
409
+ }
410
+
411
+ interface VisualEditing {
412
+ add: {
413
+ box(options: VisualEditingBox): void;
414
+ circle(options: VisualEditingCircle): void;
415
+ };
416
+ device: Device;
417
+ isActive: boolean;
418
+ shapes: (VisualEditingBox | VisualEditingCircle)[];
419
+ clear(): void;
420
+ }
421
+
422
+ interface InteractiveZones {
423
+ add: {
424
+ circle(zone: CircleShort): void;
425
+ rect(zone: Rect): void;
426
+ };
427
+ canInteractThroughColliders: boolean;
428
+ device: Device;
429
+ forceDisabled: boolean;
430
+ zones: (CircleShort | Rect)[];
431
+ contains(x: number, y: number): boolean;
432
+ destroy(): void;
433
+ getCanInteractThroughColliders(): boolean;
434
+ getInfo(): any;
435
+ getMaxDistance(x: number, y: number): number;
436
+ isInteractive(): boolean;
437
+ onPlayerCanInteract(): void;
438
+ onPlayerCantInteractAnyMore(): void;
439
+ setCanInteractThroughColliders(canInteract: boolean): void;
440
+ setForceDisabled(forceDisabled: boolean): void;
441
+ setInfo(info: any): void;
442
+ }
443
+
444
+ interface DeviceInput {
445
+ device: Device;
446
+ enabled: boolean;
447
+ hasKeyListeners: boolean;
448
+ isCurrentlyUnderMouse: boolean;
449
+ addDeviceToCursorUnderList(): void;
450
+ createKeyListeners(): void;
451
+ cutCopyHandler(action: string): void;
452
+ disable(): void;
453
+ dispose(): void;
454
+ disposeKeyListeners(): void;
455
+ enable(): void;
456
+ partIsNoLongerUnderMouse(): void;
457
+ partIsUnderMouse(): void;
458
+ removeDeviceFromCursorUnderList(): void;
459
+ }
460
+
461
+ interface DeviceUI {
462
+ device: Device;
463
+ close(): void;
464
+ open(options: Record<string, any>): void;
465
+ update(options: Record<string, any>): void;
466
+ }
467
+
468
+ interface VFX {
469
+ character: Character;
470
+ damageBoostActive: boolean;
471
+ phaseActive: boolean;
472
+ tintModifierId: string;
473
+ transparencyModifierId: string;
474
+ setTintModifier(id: string): void;
475
+ setTransparencyModifier(id: string): void;
476
+ startDamageBoostAnim(): void;
477
+ startPhaseAnim(): void;
478
+ stopDamageBoostAnim(): void;
479
+ stopPhaseAnim(): void;
480
+ }
481
+
482
+ interface TintParams {
483
+ type: string;
484
+ fromColor: string;
485
+ toColor: string;
486
+ duration: number;
487
+ tween?: import("phaser").Tweens.Tween;
488
+ ease(t: number): number;
489
+ }
490
+
491
+ interface Tint {
492
+ character: Character;
493
+ scene: Scene;
494
+ phase?: TintParams;
495
+ playerAppearanceModifierDevice?: TintParams;
496
+ immunity?: TintParams;
497
+ damageBoost?: TintParams;
498
+ getTintParams(type: string): TintParams | undefined;
499
+ setTintParams(type: string, tint?: TintParams): void;
500
+ startAnimateTint(params: TintParams): void;
501
+ stopAnimateTint(type: string): void;
502
+ update(): void;
503
+ }
504
+
505
+ interface SkinOptions {
506
+ id: string;
507
+ editStyles: Record<string, string>;
508
+ }
509
+
510
+ interface Skin {
511
+ character: Character;
512
+ editStyles?: Record<string, string>;
513
+ latestSkinId: string;
514
+ scene: Scene;
515
+ skinId: string;
516
+ applyEditStyles(options: SkinOptions): void;
517
+ setupSkin(position: Vector): void;
518
+ updateSkin(options: SkinOptions): void;
519
+ }
520
+
521
+ interface Shadow {
522
+ character: Character;
523
+ image?: import("phaser").GameObjects.Image;
524
+ createShadow(): void;
525
+ destroy(): void;
526
+ update(): void;
527
+ }
528
+
529
+ interface TweenScaleOptions {
530
+ type: string;
531
+ scale: number;
532
+ duration: number;
533
+ }
534
+
535
+ interface Scale {
536
+ activeScale: number;
537
+ baseScale: number;
538
+ character: Character;
539
+ respawningScale: number;
540
+ scaleX: number;
541
+ scaleY: number;
542
+ scene: Scene;
543
+ spectatorScale: number;
544
+ dependencyScale: number;
545
+ isVisible: boolean;
546
+ getCurrentScale(type: number): void;
547
+ onSkinChange(): void;
548
+ setScale(type: number, scale: number): void;
549
+ tweenScale(options: TweenScaleOptions): void;
550
+ update(): void;
551
+ }
552
+
553
+ interface Position {
554
+ character: Character;
555
+ update(dt: number): void;
556
+ }
557
+
558
+ interface Network {
559
+ lastAngle?: number;
560
+ lastAngleUpdate: number;
561
+ updateAimAngle(angle: number): void;
562
+ }
563
+
564
+ interface Nametag {
565
+ alpha: number;
566
+ character: Character;
567
+ creatingTag: boolean;
568
+ depth: number;
569
+ destroyed: boolean;
570
+ followScale: boolean;
571
+ fragilityTag?: import("phaser").GameObjects.Text;
572
+ healthMode: string;
573
+ name: string;
574
+ scale: number;
575
+ scene: Scene;
576
+ tag: import("phaser").GameObjects.Text;
577
+ teamState: TeamState;
578
+ fontColor: string;
579
+ tags: import("phaser").GameObjects.Text[];
580
+ createFragilityTag(): void;
581
+ createTag(): void;
582
+ destroy(): void;
583
+ makeVisibleChanges(force?: boolean): void;
584
+ playHideAnimation(): void;
585
+ playShowUpAnimation(): void;
586
+ setName(name: string): void;
587
+ update(update: {
588
+ teamState: TeamState;
589
+ }): void;
590
+ updateFontColor(): void;
591
+ updateFragility(fragility: number): void;
592
+ updateTagAlpha(force?: boolean): void;
593
+ updateTagDepth(force?: boolean): void;
594
+ updateTagPosition(force?: boolean): void;
595
+ updateTagScale(force?: boolean): void;
596
+ }
597
+
598
+ interface CharacterInput {
599
+ character: Character;
600
+ isListeningForInput: boolean;
601
+ scene: Scene;
602
+ setupInput(): void;
603
+ }
604
+
605
+ interface TeamState {
606
+ status: string;
607
+ teamId: string;
608
+ }
609
+
610
+ interface Indicator extends Updates {
611
+ character: Character;
612
+ characterHeight: number;
613
+ depth: number;
614
+ image: import("phaser").GameObjects.Image;
615
+ isMain: boolean;
616
+ isSpectated: boolean;
617
+ lastCharacterAlpha: number;
618
+ scene: Scene;
619
+ teamState: TeamState;
620
+ destroy(): void;
621
+ makeIndicator(): void;
622
+ }
623
+
624
+ interface ImpactAnimation {
625
+ animations: Map<string, import("phaser").GameObjects.Sprite>;
626
+ character: Character;
627
+ loadedAnimations: Set<string>;
628
+ scene: Scene;
629
+ _play(animation: string): void;
630
+ destroy(): void;
631
+ load(animation: string): void;
632
+ play(animation: string): void;
633
+ }
634
+
635
+ interface Immunity {
636
+ character: Character;
637
+ classImmunityActive: boolean;
638
+ spawnImmunityActive: boolean;
639
+ activate(): void;
640
+ activateClassImmunity(): void;
641
+ activateSpawnImmunity(): void;
642
+ deactivate(): void;
643
+ deactivateClassImmunity(): void;
644
+ deactivateSpawnImmunity(): void;
645
+ isActive(): boolean;
646
+ }
647
+
648
+ interface Updates {
649
+ update(update: {
650
+ delta: number;
651
+ }): void;
652
+ updateAlpha(): void;
653
+ updateDepth(): void;
654
+ updatePosition(dt: number): void;
655
+ updateScale(): void;
656
+ }
657
+
658
+ interface Healthbar extends Updates {
659
+ character: Character;
660
+ depth: number;
661
+ isVisible: boolean;
662
+ scene: Scene;
663
+ destroy(): void;
664
+ makeIndicator(): void;
665
+ updateValue(): void;
666
+ }
667
+
668
+ interface Flip {
669
+ character: Character;
670
+ flipXLastX: number;
671
+ isFlipped: boolean;
672
+ lastX: number;
673
+ lastY: number;
674
+ update(): void;
675
+ updateFlipForMainCharacter(): void;
676
+ updateFlipForOthers(): void;
677
+ }
678
+
679
+ interface Dimensions {
680
+ character: Character;
681
+ currentDimensionsId: string;
682
+ bottomY: number;
683
+ centerX: number;
684
+ topY: number;
685
+ x: number;
686
+ onPotentialDimensionsChange(): void;
687
+ }
688
+
689
+ interface Depth {
690
+ character: Character;
691
+ currentDepth: number;
692
+ lastY: number;
693
+ update(): void;
694
+ updateDepth(): void;
695
+ }
696
+
697
+ interface Culling {
698
+ character: Character;
699
+ isInCamera: boolean;
700
+ needsCullUpdate: boolean;
701
+ scene: Scene;
702
+ shouldForceUpdate: boolean;
703
+ forceUpdate(): void;
704
+ hideObject(object: any): void;
705
+ onInCamera(): void;
706
+ onOutCamera(): void;
707
+ showObject(object: any): void;
708
+ updateNeedsUpdate(): void;
709
+ }
710
+
711
+ interface TrailParticles {
712
+ frameHeight: number;
713
+ frameWidth: number;
714
+ imageUrl: string;
715
+ numberOfFrames: number;
716
+ }
717
+
718
+ interface TrailEmitter {
719
+ frequency: number;
720
+ quantity: number;
721
+ blendMode: number;
722
+ speed: number;
723
+ speedVariation: number;
724
+ lifetime: number;
725
+ lifetimeVariation: number;
726
+ scale: number;
727
+ scaleVariation: number;
728
+ scaleThreshold: number;
729
+ rotationRandomAtStart: boolean;
730
+ rotationChange: number;
731
+ rotationChangeVariation: number;
732
+ rotationAllowNegativeChange: boolean;
733
+ alphaThresholdStart: number;
734
+ alphaThresholdEnd: number;
735
+ gravityY: number;
736
+ yOriginChange: number;
737
+ emitterZone: Partial<Vector>;
738
+ }
739
+
740
+ interface TrailAppearance {
741
+ id: string;
742
+ emitter: TrailEmitter;
743
+ particles: TrailParticles;
744
+ }
745
+
746
+ interface CharacterTrail {
747
+ character: Character;
748
+ currentAppearance: TrailAppearance;
749
+ currentAppearanceId: string;
750
+ isReady: boolean;
751
+ lastSetAlpha: number;
752
+ destroy(): void;
753
+ followCharacter(): void;
754
+ setNewAppearance(appearance: TrailAppearance): void;
755
+ update(): void;
756
+ updateAppearance(id: string): void;
757
+ }
758
+
759
+ interface TweenAlphaOptions {
760
+ alpha: number;
761
+ type: string;
762
+ duration: number;
763
+ ease?: string;
764
+ }
765
+
766
+ interface Alpha {
767
+ character: Character;
768
+ cinematicModeAlpha: number;
769
+ currentAlpha: number;
770
+ immunity: number;
771
+ phaseAlpha: number;
772
+ playerAppearanceModifierDeviceAlpha: number;
773
+ scene: Scene;
774
+ getCurrentAlpha(): number;
775
+ setAlpha(type: string, alpha: number): void;
776
+ tweenAlpha(options: TweenAlphaOptions): void;
777
+ update(): void;
778
+ }
779
+
780
+ interface EndInfo {
781
+ end: number;
782
+ start: number;
783
+ x: number;
784
+ y: number;
785
+ }
786
+
787
+ interface Point {
788
+ endTime: number;
789
+ endX: number;
790
+ endY: number;
791
+ startTime: number;
792
+ startX: number;
793
+ startY: number;
794
+ teleported: boolean;
795
+ usedTeleported: boolean;
796
+ }
797
+
798
+ interface Movement {
799
+ character: Character;
800
+ currentPoint: Point;
801
+ currentTime: number;
802
+ nonMainCharacterGrounded: boolean;
803
+ pointMap: Point[];
804
+ targetIsDirty: boolean;
805
+ targetNonMainCharacterGrounded: boolean;
806
+ targetX: number;
807
+ targetY: number;
808
+ teleportCount: number;
809
+ teleported: boolean;
810
+ getCurrentEndInfo(): EndInfo;
811
+ moveToTargetPosition(): void;
812
+ onMainCharacterTeleport(): void;
813
+ postPhysicsUpdate(dt: number): void;
814
+ setNonMainCharacterTargetGrounded(grounded: boolean): void;
815
+ setTargetX(x: number): void;
816
+ setTargetY(y: number): void;
817
+ setTeleportCount(teleportCount: number): void;
818
+ update(dt: number): void;
819
+ }
820
+
821
+ interface NonMainCharacterState {
822
+ grounded: boolean;
823
+ }
824
+
825
+ interface Animation {
826
+ availableAnimations: string[];
827
+ blinkTimer: number;
828
+ bodyAnimationLocked: boolean;
829
+ bodyAnimationStartedAt: number;
830
+ character: Character;
831
+ currentBodyAnimation: string;
832
+ currentEyeAnimation: string;
833
+ lastGroundedAnimationAt: number;
834
+ nonMainCharacterState: NonMainCharacterState;
835
+ prevNonMainCharacterState: NonMainCharacterState;
836
+ skinChanged: boolean;
837
+ destroy(): void;
838
+ onAnimationComplete(options: any): void;
839
+ onSkinChanged(): void;
840
+ playAnimationOrClearTrack(animations: string[], track: number): void;
841
+ playBodyAnimation(animation: string): void;
842
+ playBodySupplementalAnimation(animation: string): void;
843
+ playEyeAnimation(animation: string): void;
844
+ playJumpSupplementalAnimation(animation: string): void;
845
+ playMovementSupplementalAnimation(animation: string): void;
846
+ setupAnimations(): void;
847
+ startBlinkAnimation(): void;
848
+ stopBlinkAnimation(): void;
849
+ update(dt: number): void;
850
+ }
851
+
852
+ interface ProjectileAppearance {
853
+ imageUrl: string;
854
+ rotateToTarget: boolean;
855
+ scale: number;
856
+ }
857
+
858
+ interface WeaponAsset extends BaseAsset {
859
+ fireFrames: number[];
860
+ fromCharacterCenterRadius: number;
861
+ hideFireSlash: boolean;
862
+ idleFrames: number;
863
+ originX: number;
864
+ originY: number;
865
+ }
866
+
867
+ interface BaseAsset {
868
+ frameHeight: number;
869
+ frameRate: number;
870
+ frameWidth: number;
871
+ imageUrl: string;
872
+ scale: number;
873
+ }
874
+
875
+ interface ImpactAsset extends BaseAsset {
876
+ frames: number[];
877
+ hideIfNoHit?: boolean;
878
+ }
879
+
880
+ interface SoundEffect {
881
+ path: string;
882
+ volume: number;
883
+ }
884
+
885
+ interface CurrentAppearance {
886
+ id: string;
887
+ explosionSfx: SoundEffect[];
888
+ fireSfx: SoundEffect[];
889
+ impact: ImpactAsset;
890
+ projectile: ProjectileAppearance;
891
+ reloadSfx: SoundEffect;
892
+ weapon: WeaponAsset;
893
+ }
894
+
895
+ interface AimingAndLookingAround {
896
+ angleTween?: import("phaser").Tweens.Tween;
897
+ character: Character;
898
+ currentAngle?: number;
899
+ currentAppearance?: CurrentAppearance;
900
+ currentWeaponId?: string;
901
+ isAiming: boolean;
902
+ lastUsedAngle: number;
903
+ sprite: import("phaser").GameObjects.Sprite;
904
+ targetAngle?: number;
905
+ characterShouldFlipX(): boolean;
906
+ destroy(): void;
907
+ isCurrentlyAiming(): boolean;
908
+ onInventoryStateChange(): void;
909
+ playFireAnimation(): void;
910
+ setImage(appearance: CurrentAppearance): void;
911
+ setSpriteParams(skipRecalculateAlpha: boolean): void;
912
+ setTargetAngle(angle: number, instant?: boolean): void;
913
+ update(): void;
914
+ updateAnotherCharacter(): void;
915
+ updateMainCharacterMouse(): void;
916
+ updateMainCharacterTouch(): void;
917
+ }
918
+
919
+ interface ServerPosition {
920
+ packet: number;
921
+ x: number;
922
+ y: number;
923
+ jsonState: string;
924
+ teleport: boolean;
925
+ }
926
+
927
+ interface Bodies {
928
+ character: Character;
929
+ collider: Collider;
930
+ colliderDesc: ColliderDesc;
931
+ rigidBody: RigidBody;
932
+ rigidBodyDesc: RigidBodyDesc;
933
+ }
934
+
935
+ interface PhysicsInput {
936
+ _jumpKeyPressed: boolean;
937
+ activeClassDeviceId: string;
938
+ angle: number;
939
+ ignoredStaticBodies: Set<any>;
940
+ ignoredTileBodies: Set<any>;
941
+ jump: boolean;
942
+ projectileHitForcesQueue: Set<any>;
943
+ }
944
+
945
+ interface MovementState {
946
+ accelerationTicks: number;
947
+ direction: string;
948
+ xVelocity: number;
949
+ }
950
+
951
+ interface Jump {
952
+ actuallyJumped: boolean;
953
+ isJumping: boolean;
954
+ jumpCounter: number;
955
+ jumpTicks: number;
956
+ jumpsLeft: number;
957
+ xVelocityAtJumpStart: number;
958
+ }
959
+
960
+ interface PhysicsState {
961
+ forces: any[];
962
+ gravity: number;
963
+ grounded: boolean;
964
+ groundedTicks: number;
965
+ jump: Jump;
966
+ lastGroundedAngle: number;
967
+ movement: MovementState;
968
+ velocity: Vector;
969
+ }
970
+
971
+ interface Physics {
972
+ character: Character;
973
+ currentPacketId: number;
974
+ frameInputsHistory: Map<number, PhysicsInput>;
975
+ justAppliedProjectileHitForces: Set<any>;
976
+ lastClassDeviceActivationId: number;
977
+ lastPacketSent: number[];
978
+ lastSentClassDeviceActivationId: number;
979
+ lastSentTerrainUpdateId: number;
980
+ lastTerrainUpdateId: number;
981
+ newlyAddedTileBodies: Set<any>;
982
+ phase: boolean;
983
+ physicsBodyId: string;
984
+ prevState: PhysicsState;
985
+ projectileHitForcesHistory: Map<any, any>;
986
+ projectileHitForcesQueue: Set<any>;
987
+ scene: Scene;
988
+ state: PhysicsState;
989
+ tickInput: TickInput;
990
+ destroy(): void;
991
+ getBody(): Bodies;
992
+ postUpdate(dt: number): void;
993
+ preUpdate(): void;
994
+ sendToServer(): void;
995
+ setServerPosition(serverPosition: ServerPosition): void;
996
+ setupBody(x: number, y: number): void;
997
+ updateDebugGraphics(): void;
998
+ }
999
+
1000
+ interface Character {
1001
+ aimingAndLookingAround: AimingAndLookingAround;
1002
+ alpha: Alpha;
1003
+ animation: Animation;
1004
+ body: Vector;
1005
+ characterTrail: CharacterTrail;
1006
+ culling: Culling;
1007
+ depth: Depth;
1008
+ dimensions: Dimensions;
1009
+ flip: Flip;
1010
+ healthbar: Healthbar;
1011
+ id: string;
1012
+ immunity: Immunity;
1013
+ impactAnimation: ImpactAnimation;
1014
+ indicator: Indicator;
1015
+ input: CharacterInput;
1016
+ isActive: boolean;
1017
+ isDestroyed: boolean;
1018
+ isMain: boolean;
1019
+ movement: Movement;
1020
+ nametag: Nametag;
1021
+ network: Network;
1022
+ physics: Physics;
1023
+ position: Position;
1024
+ prevBody: Vector;
1025
+ scale: Scale;
1026
+ scene: Scene;
1027
+ shadow: Shadow;
1028
+ skin: Skin;
1029
+ spine: any;
1030
+ teamId: string;
1031
+ tint: Tint;
1032
+ type: string;
1033
+ vfx: VFX;
1034
+ destroy(): void;
1035
+ setIsMain(isMain: boolean): void;
1036
+ update(dt: number): void;
1037
+ }
1038
+
1039
+ interface UpdateCullOptions {
1040
+ mainCharacter: Character;
1041
+ isPhase: boolean;
1042
+ insideView: boolean;
1043
+ }
1044
+
1045
+ interface Cull {
1046
+ device: Device;
1047
+ ignoresCull: boolean;
1048
+ isInsideView: boolean;
1049
+ margin: number;
1050
+ wasInsideView: boolean;
1051
+ getMargin(): number;
1052
+ ignoreCulling(): void;
1053
+ setMargin(margin: number): void;
1054
+ setOnEnterViewCallback(callback: () => void): void;
1055
+ setOnLeaveViewCallback(callback: () => void): void;
1056
+ onEnterViewCallback?(): void;
1057
+ onLeaveViewCallback?(): void;
1058
+ updateCull(options: UpdateCullOptions): void;
1059
+ }
123
1060
 
124
- class EventEmitter2 {
125
- constructor(options?: ConstructorOptions);
126
- emit(event: event | eventNS, ...values: any[]): boolean;
127
- emitAsync(event: event | eventNS, ...values: any[]): Promise<any[]>;
128
- addListener(event: event | eventNS, listener: ListenerFn): this | Listener;
129
- on(event: event | eventNS, listener: ListenerFn, options?: boolean | OnOptions): this | Listener;
130
- prependListener(event: event | eventNS, listener: ListenerFn, options?: boolean | OnOptions): this | Listener;
131
- once(event: event | eventNS, listener: ListenerFn, options?: true | OnOptions): this | Listener;
132
- prependOnceListener(
133
- event: event | eventNS,
134
- listener: ListenerFn,
135
- options?: boolean | OnOptions,
136
- ): this | Listener;
137
- many(
138
- event: event | eventNS,
139
- timesToListen: number,
140
- listener: ListenerFn,
141
- options?: boolean | OnOptions,
142
- ): this | Listener;
143
- prependMany(
144
- event: event | eventNS,
145
- timesToListen: number,
146
- listener: ListenerFn,
147
- options?: boolean | OnOptions,
148
- ): this | Listener;
149
- onAny(listener: EventAndListener): this;
150
- prependAny(listener: EventAndListener): this;
151
- offAny(listener: ListenerFn): this;
152
- removeListener(event: event | eventNS, listener: ListenerFn): this;
153
- off(event: event | eventNS, listener: ListenerFn): this;
154
- removeAllListeners(event?: event | eventNS): this;
155
- setMaxListeners(n: number): void;
156
- getMaxListeners(): number;
157
- eventNames(nsAsArray?: boolean): (event | eventNS)[];
158
- listenerCount(event?: event | eventNS): number;
159
- listeners(event?: event | eventNS): ListenerFn[];
160
- listenersAny(): ListenerFn[];
161
- waitFor(event: event | eventNS, timeout?: number): CancelablePromise<any[]>;
162
- waitFor(event: event | eventNS, filter?: WaitForFilter): CancelablePromise<any[]>;
163
- waitFor(event: event | eventNS, options?: WaitForOptions): CancelablePromise<any[]>;
164
- listenTo(target: GeneralEventEmitter, events: event | eventNS, options?: ListenToOptions): this;
165
- listenTo(target: GeneralEventEmitter, events: event[], options?: ListenToOptions): this;
166
- listenTo(target: GeneralEventEmitter, events: object, options?: ListenToOptions): this;
167
- stopListeningTo(target?: GeneralEventEmitter, event?: event | eventNS): boolean;
168
- hasListeners(event?: string): boolean;
169
- static once(emitter: EventEmitter2, event: event | eventNS, options?: OnceOptions): CancelablePromise<any[]>;
170
- static defaultMaxListeners: number;
1061
+ type ColliderOptions = {
1062
+ device: Device;
1063
+ scene: Scene;
1064
+ angle: number;
1065
+ } & DeviceCollider;
1066
+
1067
+ type DeviceCollider = RectShort | CircleShort | Ellipse;
1068
+
1069
+ interface Colliders {
1070
+ add: {
1071
+ box(collider: RectShort): void;
1072
+ circle(collider: CircleShort): void;
1073
+ ellipse(collider: Ellipse): void;
1074
+ };
1075
+ device: Device;
1076
+ list: DeviceCollider[];
1077
+ createOptions(collider: DeviceCollider): ColliderOptions;
1078
+ destroy(): void;
1079
+ forEach(callback: (collider: DeviceCollider) => void): void;
1080
+ hideDebug(): void;
1081
+ showDebug(): void;
1082
+ }
1083
+
1084
+ interface Rect {
1085
+ x: number;
1086
+ y: number;
1087
+ width: number;
1088
+ height: number;
1089
+ }
1090
+
1091
+ interface BoundingBox {
1092
+ cachedBoundingBox: Rect;
1093
+ device: Device;
1094
+ hardcodedBoundingBox?: Rect;
1095
+ clearCached(): void;
1096
+ clearHardcoded(): void;
1097
+ getBoundingBox(): Rect;
1098
+ isHardcoded(): boolean;
1099
+ isInsideBoundingBox(x: number, y: number): boolean;
1100
+ setHardcoded(rect: Rect): void;
1101
+ }
1102
+
1103
+ interface AppearanceVariation {
1104
+ device: Device;
1105
+ resetAppearance(): void;
1106
+ setPreviewAppearance(): void;
1107
+ setRemovalAppearance(): void;
1108
+ }
1109
+
1110
+ interface BaseDevice {
1111
+ isPreview: boolean;
1112
+ placedByClient: boolean;
1113
+ isDestroyed: boolean;
1114
+ x: number;
1115
+ y: number;
1116
+ forceUseMyState: boolean;
1117
+ options: Record<string, any>;
1118
+ state: Record<string, any>;
1119
+ prevState: Record<string, any>;
1120
+ name: string;
1121
+ id: string;
1122
+ scene: Scene;
1123
+ deviceOption: DeviceOption;
1124
+ visualEditing: VisualEditing;
1125
+ shadows: Shadows;
1126
+ input: DeviceInput;
1127
+ parts: any;
1128
+ cull: Cull;
1129
+ boundingBox: BoundingBox;
1130
+ appearanceVariation: AppearanceVariation;
1131
+ colliders: Colliders;
1132
+ interactiveZones: InteractiveZones;
1133
+ deviceUI: DeviceUI;
1134
+ layers: Layers;
1135
+ wirePoints: WirePoints;
1136
+ tweens: DeviceTweens;
1137
+ projectiles: DeviceProjectiles;
1138
+ sensors: any;
1139
+ onHide: (() => void) | null;
1140
+ onShow: (() => void) | null;
1141
+ onUpdate: (() => void) | null;
1142
+ initialStateProcessing(state: Record<string, any>): Record<string, any>;
1143
+ getMaxDepth(): number;
1144
+ onStateUpdateFromServer(key: string, value: any): void;
1145
+ getRealKey(key: string): string;
1146
+ onPostUpdate(): void;
1147
+ onInit(): void;
1148
+ onMessage(message: {
1149
+ key: string;
1150
+ data: any;
1151
+ }): void;
1152
+ onStateChange(key: string): void;
1153
+ onDestroy(options: {
1154
+ isBeingReplaced: boolean;
1155
+ }): void;
1156
+ sendToServerDevice(key: string, data: any): void;
1157
+ openDeviceUI(): void;
1158
+ checkIfCollidersEnabled(): boolean;
1159
+ destroy(options: {
1160
+ isBeingReplaced: boolean;
1161
+ }): void;
1162
+ }
1163
+
1164
+ type Device = BaseDevice & {
1165
+ [key: string]: any;
1166
+ };
1167
+
1168
+ interface Cameras {
1169
+ allCameras: Device[];
1170
+ allCamerasNeedsUpdate: boolean;
1171
+ camerasPlayerIsInside: any[];
1172
+ scene: Scene;
1173
+ wasInPrePhase: boolean;
1174
+ findNewCameras(allCameras: Device[], x: number, y: number): any;
1175
+ setCurrentCameraSizeDevice(device: Device): void;
1176
+ switchToDefaultCameraSize(reset: boolean): void;
1177
+ update(devices: Device[]): void;
1178
+ }
1179
+
1180
+ interface Devices {
1181
+ allDevices: Device[];
1182
+ cameras: Cameras;
1183
+ devicesAction: DevicesAction;
1184
+ devicesPreview: DevicesPreview;
1185
+ devicesToPostUpdate: Set<Device>;
1186
+ devicesToUpdate: Set<Device>;
1187
+ interactives: WorldInteractives;
1188
+ scene: Scene;
1189
+ visualEditingManager: any;
1190
+ addDevice(device: Device): void;
1191
+ cullDevices(): void;
1192
+ findDeviceUnderMouse(): Device | undefined;
1193
+ getDeviceById(id: string): Device | undefined;
1194
+ hasDevice(id: string): boolean;
1195
+ removeDeviceById(id: string, options: {
1196
+ isBeingReplaced: boolean;
1197
+ }): void;
1198
+ update(dt: number): void;
1199
+ }
1200
+
1201
+ interface WorldManager {
1202
+ devices: Devices;
1203
+ inGameTerrainBuilder: InGameTerrainBuilder;
1204
+ physics: PhysicsManager;
1205
+ projectiles: Projectiles;
1206
+ scene: Scene;
1207
+ terrain: any;
1208
+ wires: any;
1209
+ update(dt: number): void;
1210
+ }
1211
+
1212
+ interface MovementPointer {
1213
+ id: string;
1214
+ x: number;
1215
+ y: number;
1216
+ downX: number;
1217
+ downY: number;
1218
+ }
1219
+
1220
+ interface Mouse {
1221
+ clickListeners: Map<string, (pointer: import("phaser").Input.Pointer) => void>;
1222
+ downX: number;
1223
+ downY: number;
1224
+ isHoldingDown: boolean;
1225
+ movementPointer?: MovementPointer;
1226
+ scene: Scene;
1227
+ stopRunningClickHandlers: boolean;
1228
+ worldX: number;
1229
+ worldY: number;
1230
+ x: number;
1231
+ y: number;
1232
+ addClickListener(options: {
1233
+ callback: (pointer: import("phaser").Input.Pointer) => void;
1234
+ }): () => void;
1235
+ pointerUpdate(pointer: import("phaser").Input.Pointer): void;
1236
+ removeClickListener(id: string): void;
1237
+ shouldBecomeMovementPointer(pointer: import("phaser").Input.Pointer): boolean;
1238
+ }
1239
+
1240
+ interface KeyboardState {
1241
+ isHoldingDown: boolean;
1242
+ isHoldingLeft: boolean;
1243
+ isHoldingRight: boolean;
1244
+ isHoldingUp: boolean;
1245
+ isHoldingSpace: boolean;
1246
+ }
1247
+
1248
+ interface Keyboard {
1249
+ heldKeys: Set<string>;
1250
+ scene: Scene;
1251
+ state: KeyboardState;
1252
+ createListeners(): void;
1253
+ isKeyDown(key: number): boolean;
1254
+ }
1255
+
1256
+ interface PressedKeys {
1257
+ up: boolean;
1258
+ down: boolean;
1259
+ left: boolean;
1260
+ right: boolean;
1261
+ }
1262
+
1263
+ interface Cursor {
1264
+ scene: Scene;
1265
+ createStateListeners(): void;
1266
+ updateCursor(): void;
1267
+ }
1268
+
1269
+ interface AimCursor {
1270
+ aimCursor: import("phaser").GameObjects.Sprite;
1271
+ aimCursorWorldPos: Vector;
1272
+ centerShiftX: number;
1273
+ centerShiftY: number;
1274
+ scene: Scene;
1275
+ x: number;
1276
+ y: number;
1277
+ update(): void;
1278
+ }
1279
+
1280
+ interface TickInput {
1281
+ angle: number | null;
1282
+ jump: boolean;
1283
+ _jumpKeyPressed: boolean;
1284
+ }
1285
+
1286
+ interface InputManager {
1287
+ aimCursor: AimCursor;
1288
+ currentInput: TickInput;
1289
+ cursor: Cursor;
1290
+ isListeningForInput: boolean;
1291
+ jumpedSinceLastPhysicsFetch: boolean;
1292
+ keyboard: Keyboard;
1293
+ mouse: Mouse;
1294
+ physicsInputHandledBetweenUpdates: boolean;
1295
+ scene: Scene;
1296
+ getAimingDirection(): Vector;
1297
+ getInputAngle(): number | null;
1298
+ getKeys(): PressedKeys;
1299
+ getMouseWorldXY(): Vector;
1300
+ getPhysicsInput(): TickInput;
1301
+ refreshInput(): void;
1302
+ update(): void;
1303
+ }
1304
+
1305
+ interface Scene extends BaseScene {
1306
+ actionManager: ActionManager;
1307
+ cameraHelper: any;
1308
+ characterManager: CharacterManager;
1309
+ dt: number;
1310
+ inputManager: InputManager;
1311
+ resizeManager: any;
1312
+ shadowsManager: any;
1313
+ spine: any;
1314
+ tileManager: TileManager;
1315
+ uiManager: any;
1316
+ worldManager: WorldManager;
1317
+ create(): void;
1318
+ }
1319
+
1320
+ interface Phaser {
1321
+ mainCharacter: Character;
1322
+ mainCharacterTeleported: boolean;
1323
+ scene: Scene;
1324
+ }
1325
+
1326
+ interface NetworkStore {
1327
+ attemptingToConnect: boolean;
1328
+ attemptingToReconnect: boolean;
1329
+ authId: string;
1330
+ client: any;
1331
+ clientConnectionString: string;
1332
+ error: any;
1333
+ errorFindingServerForGame: boolean;
1334
+ errorJoiningRoom: boolean;
1335
+ failedToReconnect: boolean;
1336
+ findingServerForGame: boolean;
1337
+ hasJoinedRoom: boolean;
1338
+ isOffline: boolean;
1339
+ isUpToDateWithPingPong: boolean;
1340
+ joinedRoom: boolean;
1341
+ phaseBeforeReconnect: string | null;
1342
+ ping: number;
1343
+ room: any;
1344
+ roomIntentErrorMessage: string;
1345
+ syncingAfterReconnection: boolean;
1346
+ }
1347
+
1348
+ interface Matchmaker {
1349
+ gameCode: string;
1350
+ }
1351
+
1352
+ interface Loading {
1353
+ completedInitialLoad: boolean;
1354
+ loadedInitialDevices: boolean;
1355
+ loadedInitialTerrain: boolean;
1356
+ percentageAssetsLoaded: number;
1357
+ }
1358
+
1359
+ interface Hooks {
1360
+ hookJSON: string;
1361
+ }
1362
+
1363
+ interface EditingStore {
1364
+ accessPoints: Map<any, any>;
1365
+ gridSnap: number;
1366
+ showMemoryBarAtAllTimes: boolean;
1367
+ }
1368
+
1369
+ interface Assignment {
1370
+ hasSavedProgress: boolean;
1371
+ objective: string;
1372
+ percentageComplete: number;
1373
+ }
1374
+
1375
+ interface ActivityFeed {
1376
+ feedItems: {
1377
+ id: string;
1378
+ message: string;
1379
+ }[];
1380
+ }
1381
+
1382
+ interface CustomAssetOption {
1383
+ id: string;
1384
+ maxOnMap: number;
1385
+ memoryCost: number;
1386
+ minimumRoleLevel?: number;
1387
+ validate: any;
1388
+ }
1389
+
1390
+ interface TerrainOption {
1391
+ id: string;
1392
+ name: string;
1393
+ maskTilesUrl: string;
1394
+ borderTilesUrl: string;
1395
+ fillUrl: string;
1396
+ blockedMapStyles?: string[];
1397
+ seasonTicketRequired?: boolean;
1398
+ previewUrl: string;
1399
+ health?: number;
1400
+ minimumRoleLevel?: number;
1401
+ }
1402
+
1403
+ interface SkinOption {
1404
+ id: string;
1405
+ name: string;
1406
+ minimumRoleLevel?: number;
1407
+ }
1408
+
1409
+ interface CircleShort {
1410
+ x: number;
1411
+ y: number;
1412
+ r: number;
1413
+ }
1414
+
1415
+ interface RectShort {
1416
+ x: number;
1417
+ y: number;
1418
+ w: number;
1419
+ h: number;
1420
+ }
1421
+
1422
+ interface RotatedRectShort extends RectShort {
1423
+ angle: number;
1424
+ }
1425
+
1426
+ interface RotatedEllipse extends Ellipse {
1427
+ angle: number;
1428
+ }
1429
+
1430
+ interface Ellipse {
1431
+ x: number;
1432
+ y: number;
1433
+ r1: number;
1434
+ r2: number;
1435
+ }
1436
+
1437
+ interface PropOption {
1438
+ id: string;
1439
+ name: string;
1440
+ scaleMultip: number;
1441
+ originX: number;
1442
+ originY: number;
1443
+ imageUrl: string;
1444
+ rectColliders: RotatedRectShort[];
1445
+ circleColliders: CircleShort[];
1446
+ ellipseColliders: RotatedEllipse[];
1447
+ shadows: Ellipse[];
1448
+ seasonTicketRequired?: boolean;
1449
+ minimumRoleLevel?: number;
1450
+ defaultLayer?: string;
1451
+ }
1452
+
1453
+ interface WeaponShared {
1454
+ cooldownBetweenShots: number;
1455
+ allowAutoFire: boolean;
1456
+ startingProjectileDistanceFromCharacter: number;
1457
+ }
1458
+
1459
+ interface Weapon {
1460
+ type: string;
1461
+ appearance: string;
1462
+ shared: WeaponShared;
1463
+ bullet?: {
1464
+ ammoItemId: string;
1465
+ };
1466
+ }
1467
+
1468
+ interface ItemOption {
1469
+ type: string;
1470
+ id: string;
1471
+ name: string;
1472
+ editorName: string;
1473
+ description: string;
1474
+ previewImage: string;
1475
+ rarity?: string;
1476
+ weapon?: Weapon;
1477
+ minimumRoleLevel?: number;
1478
+ useCommand?: string;
1479
+ consumeType?: string;
1480
+ terrainId?: string;
1481
+ maxStackSize?: number;
1482
+ }
1483
+
1484
+ interface OptionSchema {
1485
+ options: any[];
1486
+ categories?: any[];
1487
+ }
1488
+
1489
+ interface DeviceInfo {
1490
+ id: string;
1491
+ name: string;
1492
+ description?: string;
1493
+ optionSchema: OptionSchema;
1494
+ defaultState: any;
1495
+ codeGridSchema: CodeGridSchema;
1496
+ wireConfig?: any;
1497
+ minimumRoleLevel?: number;
1498
+ maxOnMap?: number;
1499
+ initialMemoryCost?: number;
1500
+ subsequentMemoryCost?: number;
1501
+ supportedMapStyles?: string[];
1502
+ seasonTicketRequired?: boolean;
1503
+ maximumRoleLevel?: number;
1504
+ }
1505
+
1506
+ interface CodeGrids {
1507
+ blockCategories: string;
1508
+ customBlocks: string;
1509
+ customBlocksParsed: any[];
1510
+ }
1511
+
1512
+ interface WorldOptions {
1513
+ codeGrids: CodeGrids;
1514
+ customAssetsOptions: CustomAssetOption[];
1515
+ deviceOptions: DeviceInfo[];
1516
+ hasAllProps: boolean;
1517
+ itemOptions: ItemOption[];
1518
+ propsOptions: PropOption[];
1519
+ skinOptions: SkinOption[];
1520
+ terrainOptions: TerrainOption[];
1521
+ }
1522
+
1523
+ interface Limits {
1524
+ blocksPerCodeGrid: number;
1525
+ codeGrids: number;
1526
+ codeGridsPerDevice: number;
1527
+ collidingTiles: number;
1528
+ customAssetOnMapDefault: number;
1529
+ deviceMaxOnMapDefault: number;
1530
+ nonCollidingTiles: number;
1531
+ wires: number;
1532
+ }
1533
+
1534
+ interface Counters {
1535
+ codeGrids: number;
1536
+ collidingTiles: number;
1537
+ customAssets: Map<string, number>;
1538
+ devices: Map<string, number>;
1539
+ nonCollidingTiles: number;
1540
+ wires: number;
1541
+ }
1542
+
1543
+ interface Costs {
1544
+ codeGrid: number;
1545
+ collidingTile: number;
1546
+ customAssetDefault: number;
1547
+ deviceInitialDefault: number;
1548
+ deviceSubsequentDefault: number;
1549
+ nonCollidingTile: number;
1550
+ wire: number;
1551
+ }
1552
+
1553
+ interface MemorySystem {
1554
+ costs: Costs;
1555
+ counters: Counters;
1556
+ limits: Limits;
1557
+ maxUsedMemory: number;
1558
+ usedMemoryCost: number;
1559
+ }
1560
+
1561
+ interface CharacterData {
1562
+ allowWeaponFire: boolean;
1563
+ existsBeforeReconnect: boolean;
1564
+ fragility: number;
1565
+ health: number;
1566
+ id: string;
1567
+ isActive: boolean;
1568
+ lastPlayersTeamId: string;
1569
+ name: string;
1570
+ permissions: Permissions;
1571
+ score: number;
1572
+ teamId: string;
1573
+ type: string;
1574
+ }
1575
+
1576
+ interface Characters {
1577
+ characters: Map<string, CharacterData>;
1578
+ }
1579
+
1580
+ interface Scorebar {
1581
+ teamColors: string[];
1582
+ teams: string[];
1583
+ }
1584
+
1585
+ interface NoneGui {
1586
+ addMenu: {
1587
+ screen: string;
1588
+ };
1589
+ duringGameScreenVisible: boolean;
1590
+ optionsMenu: {
1591
+ screen: string;
1592
+ };
1593
+ screen: string;
1594
+ }
1595
+
1596
+ interface Modals {
1597
+ closeAllModals: () => void;
1598
+ cosmosModalOpen: boolean;
1599
+ switchToRegisterScreenWhenCosmosModalOpens: boolean;
1600
+ }
1601
+
1602
+ interface KnockoutAlert {
1603
+ id: string;
1604
+ name: string;
1605
+ }
1606
+
1607
+ interface GuiSlot {
1608
+ id: string;
1609
+ position: string;
1610
+ text: string;
1611
+ trackedItemId: any;
1612
+ showTrackedItemMaximumAmount: boolean;
1613
+ type: string;
1614
+ priority: number;
1615
+ color: string;
1616
+ }
1617
+
1618
+ interface DamageIndicator {
1619
+ show: boolean;
1620
+ /** `h` for red, `s` for blue, and any other string for yellow. */
1621
+ type: string;
1622
+ }
1623
+
1624
+ interface BottomInGamePrimaryContent {
1625
+ interactionWantsToBeVisible: boolean;
1626
+ prioritizeInteraction: boolean;
1627
+ }
1628
+
1629
+ interface Achievement {
1630
+ id: string;
1631
+ key: string;
1632
+ reset: () => void;
1633
+ update: () => void;
1634
+ }
1635
+
1636
+ interface GUI {
1637
+ achievement: Achievement;
1638
+ bottomInGamePrimaryContent: BottomInGamePrimaryContent;
1639
+ damageIndicator: DamageIndicator;
1640
+ guiSlots: GuiSlot[];
1641
+ guiSlotsChangeCounter: number;
1642
+ knockoutAlerts: KnockoutAlert[];
1643
+ modals: Modals;
1644
+ none: NoneGui;
1645
+ openInputBlockingUI: string[];
1646
+ playersManagerUpdateCounter: number;
1647
+ scale: number;
1648
+ scorebar?: Scorebar;
1649
+ selectedPlayerId: string;
1650
+ showingGrid: boolean;
1651
+ }
1652
+
1653
+ interface Permissions {
1654
+ adding: boolean;
1655
+ editing: boolean;
1656
+ manageCodeGrids: boolean;
1657
+ removing: boolean;
1658
+ }
1659
+
1660
+ interface GameSession {
1661
+ callToAction: any;
1662
+ countdownEnd: number;
1663
+ phase: string;
1664
+ resultsEnd: number;
1665
+ widgets: {
1666
+ widgets: any[];
1667
+ };
1668
+ }
1669
+
1670
+ interface Session {
1671
+ allowGoogleTranslate: boolean;
1672
+ amIGameOwner: boolean;
1673
+ canAddGameTime: boolean;
1674
+ cosmosBlocked: boolean;
1675
+ customTeams: {
1676
+ characterToTeamMap: Map<string, string>;
1677
+ };
1678
+ duringTransition: boolean;
1679
+ gameClockDuration: string;
1680
+ gameOwnerId: string;
1681
+ gameSession: GameSession;
1682
+ gameTime: number;
1683
+ gameTimeLastUpdateAt: number;
1684
+ globalPermissions: Permissions;
1685
+ loadingPhase: boolean;
1686
+ mapCreatorRoleLevel: number;
1687
+ mapStyle: string;
1688
+ modeType: string;
1689
+ ownerRole: string;
1690
+ phase: string;
1691
+ phaseChangedAt: number;
1692
+ version: string;
1693
+ }
1694
+
1695
+ interface ZoneDropOverrides {
1696
+ allowItemDrop: boolean;
1697
+ allowResourceDrop: boolean;
1698
+ allowWeaponDrop: boolean;
1699
+ }
1700
+
1701
+ interface XPAddition {
1702
+ amount: number;
1703
+ reason: string;
1704
+ xp: number;
1705
+ }
1706
+
1707
+ interface XP {
1708
+ additionTimeouts: Map<string, ReturnType<typeof setTimeout>>;
1709
+ additions: XPAddition[];
1710
+ showingLevelUp: boolean;
1711
+ }
1712
+
1713
+ interface MeSpectating {
1714
+ id: string;
1715
+ name: string;
1716
+ shuffle: boolean;
1717
+ }
1718
+
1719
+ interface TileToRemove {
1720
+ depth: number;
1721
+ id: string;
1722
+ x: number;
1723
+ y: number;
1724
+ }
1725
+
1726
+ interface Removing {
1727
+ deviceIdToRemove?: string;
1728
+ removingMode: string;
1729
+ removingTilesEraserSize: number;
1730
+ removingTilesLayer: number;
1731
+ removingTilesMode: string;
1732
+ tilesToRemove: TileToRemove[];
1733
+ wireIdToRemove?: string;
1734
+ }
1735
+
1736
+ interface NonDismissMessage {
1737
+ description: string;
1738
+ title: string;
1739
+ }
1740
+
1741
+ interface Mood {
1742
+ activeDeviceId: string;
1743
+ vignetteActive: boolean;
1744
+ vignetteStrength: number;
1745
+ }
1746
+
1747
+ interface MobileControls {
1748
+ left: boolean;
1749
+ right: boolean;
1750
+ up: boolean;
1751
+ }
1752
+
1753
+ interface InventorySlot {
1754
+ amount: number;
1755
+ existsBeforeReconnect: boolean;
1756
+ }
1757
+
1758
+ interface AlertFeed {
1759
+ amount: number;
1760
+ itemId: string;
1761
+ }
1762
+
1763
+ interface InteractiveSlot {
1764
+ clipSize: number;
1765
+ count: number;
1766
+ currentClip: number;
1767
+ durability: number;
1768
+ itemId: string;
1769
+ waiting: boolean;
1770
+ waitingEndTime: number;
1771
+ waitingStartTime: number;
1772
+ }
1773
+
1774
+ interface Inventory {
1775
+ activeInteractiveSlot: number;
1776
+ alertFeed?: AlertFeed;
1777
+ alertsFeed: AlertFeed[];
1778
+ currentWaitingEndTime: number;
1779
+ infiniteAmmo: boolean;
1780
+ interactiveSlotErrorMessageTimeouts: Map<string, ReturnType<typeof setTimeout>>;
1781
+ interactiveSlotErrorMessages: Map<string, string>;
1782
+ interactiveSlots: Map<string, InteractiveSlot>;
1783
+ interactiveSlotsOrder: number[];
1784
+ isCurrentWaitingSoundForItem: boolean;
1785
+ lastShotsTimestamps: Map<string, number>;
1786
+ maxSlots: number;
1787
+ slots: Map<string, InventorySlot>;
1788
+ }
1789
+
1790
+ interface InteractiveInfo {
1791
+ action: string;
1792
+ allowedToInteract: boolean;
1793
+ message: string;
1794
+ topHeader?: string;
1795
+ topHeaderColor: string;
1796
+ }
1797
+
1798
+ interface Interactives {
1799
+ deviceId: string;
1800
+ info: InteractiveInfo;
1801
+ }
1802
+
1803
+ interface Health {
1804
+ fragility: number;
1805
+ health: number;
1806
+ lives: number;
1807
+ maxHealth: number;
1808
+ maxShield: number;
1809
+ shield: number;
1810
+ }
1811
+
1812
+ interface EditingPreferences {
1813
+ cameraZoom: number;
1814
+ movementSpeed: number | null;
1815
+ phase: boolean | null;
1816
+ showGrid: boolean | null;
1817
+ topDownControlsActive: boolean;
1818
+ }
1819
+
1820
+ interface CurrentlyEditedDevice {
1821
+ deviceOptionId: string;
1822
+ id: string;
1823
+ }
1824
+
1825
+ interface EditingDevice {
1826
+ currentlyEditedDevice: CurrentlyEditedDevice;
1827
+ currentlyEditedGridId: string;
1828
+ currentlySortedDeviceId: string;
1829
+ screen: string;
1830
+ sortingState: any[];
1831
+ usingMultiselect: boolean;
1832
+ visualEditing: any;
1833
+ }
1834
+
1835
+ interface Editing {
1836
+ device: EditingDevice;
1837
+ preferences: EditingPreferences;
1838
+ wire: {
1839
+ currentlyEditedWireId: string;
1840
+ };
1841
+ }
1842
+
1843
+ interface MeDeviceUI {
1844
+ current: {
1845
+ deviceId: string;
1846
+ props: any;
1847
+ };
1848
+ desiredOpenDeviceId?: string;
1849
+ serverVersionOpenDeviceId: string;
1850
+ }
1851
+
1852
+ interface MeCustomAssets {
1853
+ currentData?: {
1854
+ shapes: Shapes;
1855
+ };
1856
+ currentIcon: string;
1857
+ currentId: string;
1858
+ currentName: string;
1859
+ currentOptionId: string;
1860
+ isUIOpen: boolean;
1861
+ openOptionId: string | null;
1862
+ pendingDeleteId: string | null;
1863
+ showDeleteConfirm: boolean;
1864
+ }
1865
+
1866
+ interface Context {
1867
+ cursorIsOverCharacterId: string;
1868
+ __devicesUnderCursor: string[];
1869
+ __wiresUnderCursor: Set<string>;
1870
+ cursorIsOverDevice: boolean;
1871
+ cursorIsOverWire: boolean;
1872
+ }
1873
+
1874
+ interface ClassDesigner {
1875
+ activeClassDeviceId: string;
1876
+ lastActivatedClassDeviceId: string;
1877
+ lastClassDeviceActivationId: number;
1878
+ }
1879
+
1880
+ interface CinematicMode {
1881
+ charactersVisible: boolean;
1882
+ enabled: boolean;
1883
+ followingMainCharacter: boolean;
1884
+ hidingGUI: boolean;
1885
+ mainCharacterVisible: boolean;
1886
+ nameTagsVisible: boolean;
1887
+ }
1888
+
1889
+ interface AddingWires {
1890
+ hoveringOverSupportedDevice: boolean;
1891
+ pointUnderMouseDeviceId?: string;
1892
+ startDeviceSelected: boolean;
1893
+ }
1894
+
1895
+ interface AddingTerrain {
1896
+ brushSize: number;
1897
+ buildTerrainAsWall: boolean;
1898
+ currentlySelectedTerrain: string;
1899
+ currentlySelectedTerrainDepth: number;
1900
+ }
1901
+
1902
+ interface ExistingDevice {
1903
+ action: string;
1904
+ id: string;
1905
+ shiftX: number;
1906
+ shiftY: number;
1907
+ use: boolean;
1908
+ }
1909
+
1910
+ interface AddingDevices {
1911
+ currentlySelectedProp: string;
1912
+ existingDevice: ExistingDevice;
1913
+ selectedDeviceType: string;
1914
+ }
1915
+
1916
+ interface Adding {
1917
+ devices: AddingDevices;
1918
+ terrain: AddingTerrain;
1919
+ wires: AddingWires;
1920
+ mode: string;
1921
+ }
1922
+
1923
+ interface Me {
1924
+ adding: Adding;
1925
+ cinematicMode: CinematicMode;
1926
+ classDesigner: ClassDesigner;
1927
+ completedInitialPlacement: boolean;
1928
+ context: Context;
1929
+ currentAction: string;
1930
+ customAssets: MeCustomAssets;
1931
+ deviceUI: MeDeviceUI;
1932
+ editing: Editing;
1933
+ gotKicked: boolean;
1934
+ health: Health;
1935
+ interactives: Interactives;
1936
+ inventory: Inventory;
1937
+ isRespawning: boolean;
1938
+ mobileControls: MobileControls;
1939
+ mood: Mood;
1940
+ movementSpeed: number;
1941
+ myTeam: string;
1942
+ nonDismissMessage: NonDismissMessage;
1943
+ phase: boolean;
1944
+ preferences: {
1945
+ startGameWithMode: string;
1946
+ };
1947
+ properties: Map<string, any>;
1948
+ removing: Removing;
1949
+ roleLevel: number;
1950
+ spawnPosition: Vector;
1951
+ spectating: MeSpectating;
1952
+ teleportCount: number;
1953
+ unredeemeedXP: number;
1954
+ xp: XP;
1955
+ zoneDropOverrides: ZoneDropOverrides;
1956
+ }
1957
+
1958
+ interface QueuedTile {
1959
+ timestamp: number;
1960
+ removedBodyIds: string[];
1961
+ }
1962
+
1963
+ interface Tile {
1964
+ collides: boolean;
1965
+ depth: number;
1966
+ terrain: string;
1967
+ x: number;
1968
+ y: number;
1969
+ }
1970
+
1971
+ interface Terrain {
1972
+ currentTerrainUpdateId: number;
1973
+ modifiedHealth: Map<string, number>;
1974
+ queuedTiles: Map<number, QueuedTile>;
1975
+ teamColorTiles: Map<string, string>;
1976
+ tiles: Map<string, Tile>;
1977
+ }
1978
+
1979
+ interface DeviceState {
1980
+ deviceId: string;
1981
+ properties: Map<string, any>;
1982
+ }
1983
+
1984
+ interface CodeGridItem {
1985
+ createdAt: number;
1986
+ existsBeforeReconnect: boolean;
1987
+ json: string;
1988
+ triggerType: string;
1989
+ owner?: string;
1990
+ triggerValue?: string;
1991
+ visitors: string[];
1992
+ }
1993
+
1994
+ interface CodeGrid {
1995
+ existsBeforeReconnect: boolean;
1996
+ items: Map<string, CodeGridItem>;
1997
+ }
1998
+
1999
+ interface CodeGridSchema {
2000
+ allowChannelGrids: boolean;
2001
+ customBlocks: any[];
2002
+ triggers: any[];
2003
+ }
2004
+
2005
+ interface DeviceOption {
2006
+ codeGridSchema: CodeGridSchema;
2007
+ defaultState: any;
2008
+ id: string;
2009
+ optionSchema: {
2010
+ options: any[];
2011
+ };
2012
+ wireConfig: any;
2013
+ }
2014
+
2015
+ interface DeviceData {
2016
+ depth: number;
2017
+ deviceOption: DeviceOption;
2018
+ existsBeforeReconnect: boolean;
2019
+ hooks: any;
2020
+ id: string;
2021
+ isPreview: boolean;
2022
+ layerId: string;
2023
+ name: any;
2024
+ options: Record<string, any>;
2025
+ props: any;
2026
+ x: number;
2027
+ y: number;
2028
+ }
2029
+
2030
+ interface WorldDevices {
2031
+ codeGrids: Map<string, CodeGrid>;
2032
+ devices: Map<string, DeviceData>;
2033
+ states: Map<string, DeviceState>;
2034
+ }
2035
+
2036
+ interface Shapes {
2037
+ circles: number[][];
2038
+ lines: number[][];
2039
+ paths: number[][];
2040
+ rects: number[][];
2041
+ }
2042
+
2043
+ interface CustomAsset {
2044
+ data: {
2045
+ shapes: Shapes;
2046
+ };
2047
+ icon: string;
2048
+ id: string;
2049
+ name: string;
2050
+ optionId: string;
2051
+ }
2052
+
2053
+ interface WorldCustomAssets {
2054
+ customAssets: Map<string, CustomAsset>;
2055
+ isUIOpen: boolean;
2056
+ updateCounter: number;
2057
+ }
2058
+
2059
+ interface World {
2060
+ customAssets: WorldCustomAssets;
2061
+ devices: WorldDevices;
2062
+ height: number;
2063
+ width: number;
2064
+ mapOptionsJSON: string;
2065
+ terrain: Terrain;
2066
+ wires: {
2067
+ wires: Map<any, any>;
2068
+ };
2069
+ }
2070
+
2071
+ interface Stores {
2072
+ activityFeed: ActivityFeed;
2073
+ assignment: Assignment;
2074
+ characters: Characters;
2075
+ editing: EditingStore;
2076
+ gui: GUI;
2077
+ hooks: Hooks;
2078
+ loading: Loading;
2079
+ matchmaker: Matchmaker;
2080
+ me: Me;
2081
+ memorySystem: MemorySystem;
2082
+ network: NetworkStore;
2083
+ phaser: Phaser;
2084
+ scene: SceneStore;
2085
+ session: Session;
2086
+ teams: Teams;
2087
+ world: World;
2088
+ worldOptions: WorldOptions;
2089
+ }
171
2090
  }
172
2091
 
173
2092
  class PluginsApi {
@@ -188,6 +2107,7 @@ declare namespace Gimloader {
188
2107
  needsLib: string[];
189
2108
  optionalLib: string[];
190
2109
  syncEval: string;
2110
+ gamemode: string[];
191
2111
  hasSettings: string;
192
2112
  };
193
2113
  /** Gets the exported values of a plugin, if it has been enabled */
@@ -219,6 +2139,7 @@ declare namespace Gimloader {
219
2139
  needsLib: string[];
220
2140
  optionalLib: string[];
221
2141
  syncEval: string;
2142
+ gamemode: string[];
222
2143
  hasSettings: string;
223
2144
  };
224
2145
  /** Gets the exported values of a library */
@@ -296,12 +2217,12 @@ declare namespace Gimloader {
296
2217
  instead(object: any, method: string, callback: PatcherInsteadCallback): () => void;
297
2218
  }
298
2219
 
299
- type PatcherInsteadCallback = (thisVal: any, args: IArguments) => void;
2220
+ type PatcherAfterCallback = (thisVal: any, args: IArguments, returnVal: any) => any;
300
2221
 
301
2222
  // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
302
2223
  type PatcherBeforeCallback = (thisVal: any, args: IArguments) => boolean | void;
303
2224
 
304
- type PatcherAfterCallback = (thisVal: any, args: IArguments, returnVal: any) => any;
2225
+ type PatcherInsteadCallback = (thisVal: any, args: IArguments) => void;
305
2226
 
306
2227
  class PatcherApi {
307
2228
  /**
@@ -401,22 +2322,24 @@ declare namespace Gimloader {
401
2322
  removeStyles(id: string): void;
402
2323
  }
403
2324
 
404
- class ScopedNetApi extends BaseNetApi {
405
- private readonly id;
406
- constructor(id: string);
2325
+ interface ScopedNetApi extends BaseNetApi {
2326
+ new(id: string, defaultGamemode: string[]): this;
407
2327
  /**
408
- * Runs a callback when the game is loaded, or runs it immediately if the game has already loaded
2328
+ * Runs a callback when the game is loaded, or runs it immediately if the game has already loaded.
2329
+ * If the \@gamemode header is set the callback will only fire if the gamemode matches one of the provided gamemodes.
409
2330
  * @returns A function to cancel waiting for load
410
2331
  */
411
- onLoad(callback: (type: ConnectionType) => void): () => void;
2332
+ onLoad(callback: (type: ConnectionType, gamemode: string) => void, gamemode?: string | string[]): () => void;
412
2333
  }
413
2334
 
414
2335
  type ConnectionType = "None" | "Colyseus" | "Blueboat";
415
2336
 
416
- class BaseNetApi extends EventEmitter2 {
417
- constructor();
2337
+ interface BaseNetApi extends EventEmitter2 {
2338
+ new(): this;
418
2339
  /** Which type of server the client is currently connected to */
419
2340
  get type(): ConnectionType;
2341
+ /** The id of the gamemode the player is currently playing */
2342
+ get gamemode(): string;
420
2343
  /** The room that the client is connected to, or null if there is no connection */
421
2344
  get room(): any;
422
2345
  /** Whether the user is the one hosting the current game */
@@ -425,13 +2348,17 @@ declare namespace Gimloader {
425
2348
  send(channel: string, message: any): void;
426
2349
  }
427
2350
 
428
- class NetApi extends BaseNetApi {
429
- constructor();
2351
+ interface NetApi extends BaseNetApi {
2352
+ new(): this;
430
2353
  /**
431
2354
  * Runs a callback when the game is loaded, or runs it immediately if the game has already loaded
432
2355
  * @returns A function to cancel waiting for load
433
2356
  */
434
- onLoad(id: string, callback: (type: ConnectionType) => void): () => void;
2357
+ onLoad(
2358
+ id: string,
2359
+ callback: (type: ConnectionType, gamemode: string) => void,
2360
+ gamemode?: string | string[],
2361
+ ): () => void;
435
2362
  /** Cancels any calls to {@link onLoad} with the same id */
436
2363
  offLoad(id: string): void;
437
2364
  /**
@@ -444,8 +2371,7 @@ declare namespace Gimloader {
444
2371
  * @hidden
445
2372
  */
446
2373
  get blueboat(): this;
447
- /** @hidden */
448
- private wrappedListeners;
2374
+
449
2375
  /**
450
2376
  * @deprecated use net.on
451
2377
  * @hidden
@@ -643,7 +2569,7 @@ declare namespace Gimloader {
643
2569
  /** Gimkit's internal reactDom instance */
644
2570
  static get ReactDOM(): typeof import("react-dom/client");
645
2571
  /** A variety of Gimkit internal objects available in 2d gamemodes */
646
- static get stores(): any;
2572
+ static get stores(): Stores.Stores;
647
2573
  /**
648
2574
  * Gimkit's notification object, only available when joining or playing a game
649
2575
  *
@@ -712,7 +2638,7 @@ declare namespace Gimloader {
712
2638
  /** Gimkit's internal reactDom instance */
713
2639
  get ReactDOM(): typeof import("react-dom/client");
714
2640
  /** A variety of gimkit internal objects available in 2d gamemodes */
715
- get stores(): any;
2641
+ get stores(): Stores.Stores;
716
2642
  /**
717
2643
  * Gimkit's notification object, only available when joining or playing a game
718
2644
  *
@@ -733,7 +2659,7 @@ declare namespace Gimloader {
733
2659
  declare const api: Gimloader.Api;
734
2660
  declare const GL: typeof Gimloader.Api;
735
2661
  /** @deprecated Use GL.stores */
736
- declare const stores: any;
2662
+ declare const stores: Gimloader.Stores.Stores;
737
2663
  /** @deprecated No longer supported */
738
2664
  declare const platformerPhysics: any;
739
2665
 
@@ -741,7 +2667,7 @@ interface Window {
741
2667
  api: Gimloader.Api;
742
2668
  GL: typeof Gimloader.Api;
743
2669
  /** @deprecated Use GL.stores */
744
- stores: any;
2670
+ stores: Gimloader.Stores.Stores;
745
2671
  /** @deprecated No longer supported */
746
2672
  platformerPhysics: any;
747
2673
  }