quake2ts 0.0.569 → 0.0.570
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/package.json +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/demo/optimalClipFinder.d.ts +35 -0
- package/packages/engine/dist/types/demo/optimalClipFinder.d.ts.map +1 -0
- package/packages/engine/dist/types/demo/types.d.ts +9 -0
- package/packages/engine/dist/types/demo/types.d.ts.map +1 -1
- package/packages/test-utils/dist/index.cjs +153 -62
- package/packages/test-utils/dist/index.cjs.map +1 -1
- package/packages/test-utils/dist/index.d.cts +6 -2
- package/packages/test-utils/dist/index.d.ts +6 -2
- package/packages/test-utils/dist/index.js +152 -62
- package/packages/test-utils/dist/index.js.map +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { VisibilityTimeline } from '../assets/visibilityAnalyzer.js';
|
|
2
|
+
import { Offset } from './types.js';
|
|
3
|
+
import { DemoAnalyzer } from './analyzer.js';
|
|
4
|
+
export interface OptimalWindow {
|
|
5
|
+
start: Offset;
|
|
6
|
+
end: Offset;
|
|
7
|
+
resourceCount: number;
|
|
8
|
+
resources: Set<string>;
|
|
9
|
+
score: number;
|
|
10
|
+
}
|
|
11
|
+
export type ScoringMode = 'count' | 'size' | 'locality' | 'hybrid' | 'action';
|
|
12
|
+
export interface OptimizationCriteria {
|
|
13
|
+
durationRange?: [number, number];
|
|
14
|
+
maxResources?: number;
|
|
15
|
+
scoringMode?: ScoringMode;
|
|
16
|
+
resourceSizes?: Map<string, number>;
|
|
17
|
+
topN?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface OptimizationOptions extends OptimizationCriteria {
|
|
20
|
+
analyzer?: DemoAnalyzer;
|
|
21
|
+
demoBuffer?: ArrayBuffer;
|
|
22
|
+
searchStart?: number;
|
|
23
|
+
searchEnd?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class OptimalClipFinder {
|
|
26
|
+
findOptimalWindows(timeline: VisibilityTimeline, criteria: OptimizationOptions): Promise<OptimalWindow[]>;
|
|
27
|
+
findMinimalWindow(timeline: VisibilityTimeline, duration: number, options?: OptimizationOptions): OptimalWindow;
|
|
28
|
+
findMinimalWindowInRange(timeline: VisibilityTimeline, duration: number, searchStart?: Offset, searchEnd?: Offset): OptimalWindow;
|
|
29
|
+
private estimateTime;
|
|
30
|
+
private scanTimeline;
|
|
31
|
+
private calculateActionScore;
|
|
32
|
+
private addResources;
|
|
33
|
+
private removeResources;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=optimalClipFinder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimalClipFinder.d.ts","sourceRoot":"","sources":["../../../src/demo/optimalClipFinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,MAAM,EAA2B,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9E,MAAM,WAAW,oBAAoB;IACjC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC7D,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,iBAAiB;IAEb,kBAAkB,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,mBAAmB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC;IAyDpB,iBAAiB,CACpB,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAClC,aAAa;IAST,wBAAwB,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACnB,aAAa;IAUhB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IA6FpB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;CAY1B"}
|
|
@@ -24,4 +24,13 @@ export interface RecorderSnapshot {
|
|
|
24
24
|
readonly fov: number;
|
|
25
25
|
readonly blend: [number, number, number, number];
|
|
26
26
|
}
|
|
27
|
+
export type FrameOffset = {
|
|
28
|
+
type: 'frame';
|
|
29
|
+
frame: number;
|
|
30
|
+
};
|
|
31
|
+
export type TimeOffset = {
|
|
32
|
+
type: 'time';
|
|
33
|
+
seconds: number;
|
|
34
|
+
};
|
|
35
|
+
export type Offset = FrameOffset | TimeOffset;
|
|
27
36
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/demo/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACpD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/demo/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACpD;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -61,6 +61,7 @@ __export(index_exports, {
|
|
|
61
61
|
createMockGPUCanvasContext: () => createMockGPUCanvasContext,
|
|
62
62
|
createMockGPUDevice: () => createMockGPUDevice,
|
|
63
63
|
createMockGame: () => createMockGame,
|
|
64
|
+
createMockGameExports: () => createMockGameExports,
|
|
64
65
|
createMockGameState: () => createMockGameState,
|
|
65
66
|
createMockHandshake: () => createMockHandshake,
|
|
66
67
|
createMockImage: () => createMockImage,
|
|
@@ -692,6 +693,7 @@ var mockMonsterAttacks = {
|
|
|
692
693
|
};
|
|
693
694
|
|
|
694
695
|
// src/game/mocks.ts
|
|
696
|
+
var import_vitest5 = require("vitest");
|
|
695
697
|
function createMockGameState(overrides) {
|
|
696
698
|
return {
|
|
697
699
|
levelName: "test_level",
|
|
@@ -701,9 +703,97 @@ function createMockGameState(overrides) {
|
|
|
701
703
|
...overrides
|
|
702
704
|
};
|
|
703
705
|
}
|
|
706
|
+
function createMockGameExports(overrides) {
|
|
707
|
+
return {
|
|
708
|
+
init: import_vitest5.vi.fn(),
|
|
709
|
+
shutdown: import_vitest5.vi.fn(),
|
|
710
|
+
spawnWorld: import_vitest5.vi.fn(),
|
|
711
|
+
frame: import_vitest5.vi.fn().mockReturnValue({ state: {} }),
|
|
712
|
+
clientConnect: import_vitest5.vi.fn().mockReturnValue(true),
|
|
713
|
+
clientBegin: import_vitest5.vi.fn().mockReturnValue({ index: 1, origin: { x: 0, y: 0, z: 0 } }),
|
|
714
|
+
clientDisconnect: import_vitest5.vi.fn(),
|
|
715
|
+
clientThink: import_vitest5.vi.fn(),
|
|
716
|
+
// clientUserInfoChanged is not in GameExports
|
|
717
|
+
// clientCommand is not in GameExports (it's serverCommand?) No, clientCommand might be missing from interface but present in impl or legacy.
|
|
718
|
+
// Checking GameExports interface in src/index.ts:
|
|
719
|
+
/*
|
|
720
|
+
clientConnect(ent: Entity | null, userInfo: string): string | true;
|
|
721
|
+
clientBegin(client: PlayerClient): Entity;
|
|
722
|
+
clientDisconnect(ent: Entity): void;
|
|
723
|
+
clientThink(ent: Entity, cmd: UserCommand): void;
|
|
724
|
+
respawn(ent: Entity): void;
|
|
725
|
+
...
|
|
726
|
+
configstring(index: number, value: string): void;
|
|
727
|
+
serverCommand(cmd: string): void;
|
|
728
|
+
*/
|
|
729
|
+
respawn: import_vitest5.vi.fn(),
|
|
730
|
+
entities: {
|
|
731
|
+
getByIndex: import_vitest5.vi.fn(),
|
|
732
|
+
forEachEntity: import_vitest5.vi.fn(),
|
|
733
|
+
findByRadius: import_vitest5.vi.fn(),
|
|
734
|
+
find: import_vitest5.vi.fn(),
|
|
735
|
+
checkAnyCollision: import_vitest5.vi.fn(),
|
|
736
|
+
trace: import_vitest5.vi.fn(),
|
|
737
|
+
pointcontents: import_vitest5.vi.fn(),
|
|
738
|
+
link: import_vitest5.vi.fn(),
|
|
739
|
+
// linkentity mapped to link in EntitySystem? No, linkentity in imports, link/unlink in System.
|
|
740
|
+
unlink: import_vitest5.vi.fn(),
|
|
741
|
+
spawn: import_vitest5.vi.fn(),
|
|
742
|
+
free: import_vitest5.vi.fn(),
|
|
743
|
+
activeCount: 0,
|
|
744
|
+
world: { classname: "worldspawn" }
|
|
745
|
+
},
|
|
746
|
+
multicast: import_vitest5.vi.fn(),
|
|
747
|
+
unicast: import_vitest5.vi.fn(),
|
|
748
|
+
configstring: import_vitest5.vi.fn(),
|
|
749
|
+
serverCommand: import_vitest5.vi.fn(),
|
|
750
|
+
sound: import_vitest5.vi.fn(),
|
|
751
|
+
soundIndex: import_vitest5.vi.fn(),
|
|
752
|
+
centerprintf: import_vitest5.vi.fn(),
|
|
753
|
+
trace: import_vitest5.vi.fn(),
|
|
754
|
+
time: 0,
|
|
755
|
+
deathmatch: false,
|
|
756
|
+
skill: 1,
|
|
757
|
+
rogue: false,
|
|
758
|
+
xatrix: false,
|
|
759
|
+
coop: false,
|
|
760
|
+
friendlyFire: false,
|
|
761
|
+
random: {
|
|
762
|
+
next: import_vitest5.vi.fn(),
|
|
763
|
+
nextFloat: import_vitest5.vi.fn(),
|
|
764
|
+
range: import_vitest5.vi.fn(),
|
|
765
|
+
crandom: import_vitest5.vi.fn(),
|
|
766
|
+
getState: import_vitest5.vi.fn(),
|
|
767
|
+
setState: import_vitest5.vi.fn()
|
|
768
|
+
},
|
|
769
|
+
createSave: import_vitest5.vi.fn(),
|
|
770
|
+
loadSave: import_vitest5.vi.fn(),
|
|
771
|
+
serialize: import_vitest5.vi.fn(),
|
|
772
|
+
loadState: import_vitest5.vi.fn(),
|
|
773
|
+
setGodMode: import_vitest5.vi.fn(),
|
|
774
|
+
setNoclip: import_vitest5.vi.fn(),
|
|
775
|
+
setNotarget: import_vitest5.vi.fn(),
|
|
776
|
+
giveItem: import_vitest5.vi.fn(),
|
|
777
|
+
damage: import_vitest5.vi.fn(),
|
|
778
|
+
teleport: import_vitest5.vi.fn(),
|
|
779
|
+
registerHooks: import_vitest5.vi.fn(),
|
|
780
|
+
hooks: {
|
|
781
|
+
onMapLoad: import_vitest5.vi.fn(),
|
|
782
|
+
onMapUnload: import_vitest5.vi.fn(),
|
|
783
|
+
onPlayerSpawn: import_vitest5.vi.fn(),
|
|
784
|
+
onPlayerDeath: import_vitest5.vi.fn(),
|
|
785
|
+
register: import_vitest5.vi.fn()
|
|
786
|
+
},
|
|
787
|
+
setSpectator: import_vitest5.vi.fn(),
|
|
788
|
+
registerEntitySpawn: import_vitest5.vi.fn(),
|
|
789
|
+
unregisterEntitySpawn: import_vitest5.vi.fn(),
|
|
790
|
+
getCustomEntities: import_vitest5.vi.fn(),
|
|
791
|
+
...overrides
|
|
792
|
+
};
|
|
793
|
+
}
|
|
704
794
|
|
|
705
795
|
// src/server/mocks/transport.ts
|
|
706
|
-
var
|
|
796
|
+
var import_vitest6 = require("vitest");
|
|
707
797
|
var MockTransport = class {
|
|
708
798
|
constructor() {
|
|
709
799
|
this.address = "127.0.0.1";
|
|
@@ -711,11 +801,11 @@ var MockTransport = class {
|
|
|
711
801
|
this.sentMessages = [];
|
|
712
802
|
this.receivedMessages = [];
|
|
713
803
|
this.listening = false;
|
|
714
|
-
this.listenSpy =
|
|
804
|
+
this.listenSpy = import_vitest6.vi.fn().mockImplementation(async (port) => {
|
|
715
805
|
this.port = port;
|
|
716
806
|
this.listening = true;
|
|
717
807
|
});
|
|
718
|
-
this.closeSpy =
|
|
808
|
+
this.closeSpy = import_vitest6.vi.fn().mockImplementation(() => {
|
|
719
809
|
this.listening = false;
|
|
720
810
|
});
|
|
721
811
|
}
|
|
@@ -771,11 +861,11 @@ var MockTransport = class {
|
|
|
771
861
|
};
|
|
772
862
|
function createMockUDPSocket(overrides) {
|
|
773
863
|
const socket = {
|
|
774
|
-
send:
|
|
775
|
-
on:
|
|
776
|
-
close:
|
|
777
|
-
bind:
|
|
778
|
-
address:
|
|
864
|
+
send: import_vitest6.vi.fn(),
|
|
865
|
+
on: import_vitest6.vi.fn(),
|
|
866
|
+
close: import_vitest6.vi.fn(),
|
|
867
|
+
bind: import_vitest6.vi.fn(),
|
|
868
|
+
address: import_vitest6.vi.fn().mockReturnValue({ address: "127.0.0.1", family: "IPv4", port: 0 }),
|
|
779
869
|
...overrides
|
|
780
870
|
};
|
|
781
871
|
return socket;
|
|
@@ -792,13 +882,13 @@ function createMockTransport(address = "127.0.0.1", port = 27910, overrides) {
|
|
|
792
882
|
}
|
|
793
883
|
function createMockNetDriver(overrides) {
|
|
794
884
|
return {
|
|
795
|
-
connect:
|
|
796
|
-
disconnect:
|
|
797
|
-
send:
|
|
798
|
-
onMessage:
|
|
799
|
-
onClose:
|
|
800
|
-
onError:
|
|
801
|
-
isConnected:
|
|
885
|
+
connect: import_vitest6.vi.fn().mockResolvedValue(void 0),
|
|
886
|
+
disconnect: import_vitest6.vi.fn(),
|
|
887
|
+
send: import_vitest6.vi.fn(),
|
|
888
|
+
onMessage: import_vitest6.vi.fn(),
|
|
889
|
+
onClose: import_vitest6.vi.fn(),
|
|
890
|
+
onError: import_vitest6.vi.fn(),
|
|
891
|
+
isConnected: import_vitest6.vi.fn().mockReturnValue(true),
|
|
802
892
|
...overrides
|
|
803
893
|
};
|
|
804
894
|
}
|
|
@@ -806,7 +896,7 @@ function createMockNetDriver(overrides) {
|
|
|
806
896
|
// src/server/mocks/state.ts
|
|
807
897
|
var import_server = require("@quake2ts/server");
|
|
808
898
|
var import_shared4 = require("@quake2ts/shared");
|
|
809
|
-
var
|
|
899
|
+
var import_vitest7 = require("vitest");
|
|
810
900
|
function createMockServerState(overrides) {
|
|
811
901
|
return {
|
|
812
902
|
state: import_server.ServerState.Game,
|
|
@@ -848,13 +938,13 @@ function createMockServerClient(clientNum, overrides) {
|
|
|
848
938
|
incomingSequence: 0,
|
|
849
939
|
outgoingSequence: 0,
|
|
850
940
|
lastReceived: 0,
|
|
851
|
-
process:
|
|
852
|
-
transmit:
|
|
853
|
-
writeReliableByte:
|
|
854
|
-
writeReliableShort:
|
|
855
|
-
writeReliableLong:
|
|
856
|
-
writeReliableString:
|
|
857
|
-
writeReliableData:
|
|
941
|
+
process: import_vitest7.vi.fn(),
|
|
942
|
+
transmit: import_vitest7.vi.fn(),
|
|
943
|
+
writeReliableByte: import_vitest7.vi.fn(),
|
|
944
|
+
writeReliableShort: import_vitest7.vi.fn(),
|
|
945
|
+
writeReliableLong: import_vitest7.vi.fn(),
|
|
946
|
+
writeReliableString: import_vitest7.vi.fn(),
|
|
947
|
+
writeReliableData: import_vitest7.vi.fn()
|
|
858
948
|
},
|
|
859
949
|
// Cast as any because NetChan might be complex to fully mock here
|
|
860
950
|
userInfo: "",
|
|
@@ -896,13 +986,13 @@ function createMockServerClient(clientNum, overrides) {
|
|
|
896
986
|
}
|
|
897
987
|
function createMockServer(overrides) {
|
|
898
988
|
return {
|
|
899
|
-
start:
|
|
900
|
-
stop:
|
|
901
|
-
multicast:
|
|
902
|
-
unicast:
|
|
903
|
-
configstring:
|
|
904
|
-
kickPlayer:
|
|
905
|
-
changeMap:
|
|
989
|
+
start: import_vitest7.vi.fn().mockResolvedValue(void 0),
|
|
990
|
+
stop: import_vitest7.vi.fn(),
|
|
991
|
+
multicast: import_vitest7.vi.fn(),
|
|
992
|
+
unicast: import_vitest7.vi.fn(),
|
|
993
|
+
configstring: import_vitest7.vi.fn(),
|
|
994
|
+
kickPlayer: import_vitest7.vi.fn(),
|
|
995
|
+
changeMap: import_vitest7.vi.fn().mockResolvedValue(void 0),
|
|
906
996
|
...overrides
|
|
907
997
|
};
|
|
908
998
|
}
|
|
@@ -964,19 +1054,19 @@ async function simulateHandshake(client, server) {
|
|
|
964
1054
|
}
|
|
965
1055
|
|
|
966
1056
|
// src/server/mocks/commands.ts
|
|
967
|
-
var
|
|
1057
|
+
var import_vitest8 = require("vitest");
|
|
968
1058
|
function createMockServerConsole(overrides) {
|
|
969
1059
|
const outputBuffer = [];
|
|
970
1060
|
const commandBuffer = [];
|
|
971
1061
|
return {
|
|
972
|
-
exec:
|
|
1062
|
+
exec: import_vitest8.vi.fn((cmd) => {
|
|
973
1063
|
commandBuffer.push(cmd);
|
|
974
1064
|
return `Executed: ${cmd}`;
|
|
975
1065
|
}),
|
|
976
|
-
print:
|
|
1066
|
+
print: import_vitest8.vi.fn((text) => {
|
|
977
1067
|
outputBuffer.push(text);
|
|
978
1068
|
}),
|
|
979
|
-
broadcast:
|
|
1069
|
+
broadcast: import_vitest8.vi.fn((text) => {
|
|
980
1070
|
outputBuffer.push(`Broadcast: ${text}`);
|
|
981
1071
|
}),
|
|
982
1072
|
commandBuffer,
|
|
@@ -989,13 +1079,13 @@ function createMockRConClient(password = "") {
|
|
|
989
1079
|
connected: false,
|
|
990
1080
|
lastCommand: "",
|
|
991
1081
|
lastResponse: "",
|
|
992
|
-
connect:
|
|
1082
|
+
connect: import_vitest8.vi.fn(async (address, port, pwd) => {
|
|
993
1083
|
return pwd === password;
|
|
994
1084
|
}),
|
|
995
|
-
sendCommand:
|
|
1085
|
+
sendCommand: import_vitest8.vi.fn(async (cmd) => {
|
|
996
1086
|
return `RCON Response for: ${cmd}`;
|
|
997
1087
|
}),
|
|
998
|
-
disconnect:
|
|
1088
|
+
disconnect: import_vitest8.vi.fn()
|
|
999
1089
|
};
|
|
1000
1090
|
}
|
|
1001
1091
|
function simulateServerCommand(server, command) {
|
|
@@ -1638,10 +1728,10 @@ function createMockImage(width, height, src) {
|
|
|
1638
1728
|
}
|
|
1639
1729
|
|
|
1640
1730
|
// src/engine/mocks/webgpu.ts
|
|
1641
|
-
var
|
|
1731
|
+
var import_vitest9 = require("vitest");
|
|
1642
1732
|
function createMockGPUAdapter() {
|
|
1643
1733
|
return {
|
|
1644
|
-
requestDevice:
|
|
1734
|
+
requestDevice: import_vitest9.vi.fn().mockResolvedValue(createMockGPUDevice()),
|
|
1645
1735
|
features: /* @__PURE__ */ new Set(),
|
|
1646
1736
|
limits: {}
|
|
1647
1737
|
};
|
|
@@ -1651,40 +1741,40 @@ function createMockGPUDevice() {
|
|
|
1651
1741
|
features: /* @__PURE__ */ new Set(),
|
|
1652
1742
|
limits: {},
|
|
1653
1743
|
queue: {
|
|
1654
|
-
submit:
|
|
1655
|
-
writeBuffer:
|
|
1656
|
-
writeTexture:
|
|
1657
|
-
copyExternalImageToTexture:
|
|
1658
|
-
},
|
|
1659
|
-
createCommandEncoder:
|
|
1660
|
-
beginRenderPass:
|
|
1661
|
-
setPipeline:
|
|
1662
|
-
draw:
|
|
1663
|
-
end:
|
|
1744
|
+
submit: import_vitest9.vi.fn(),
|
|
1745
|
+
writeBuffer: import_vitest9.vi.fn(),
|
|
1746
|
+
writeTexture: import_vitest9.vi.fn(),
|
|
1747
|
+
copyExternalImageToTexture: import_vitest9.vi.fn()
|
|
1748
|
+
},
|
|
1749
|
+
createCommandEncoder: import_vitest9.vi.fn().mockReturnValue({
|
|
1750
|
+
beginRenderPass: import_vitest9.vi.fn().mockReturnValue({
|
|
1751
|
+
setPipeline: import_vitest9.vi.fn(),
|
|
1752
|
+
draw: import_vitest9.vi.fn(),
|
|
1753
|
+
end: import_vitest9.vi.fn()
|
|
1664
1754
|
}),
|
|
1665
|
-
finish:
|
|
1755
|
+
finish: import_vitest9.vi.fn()
|
|
1666
1756
|
}),
|
|
1667
|
-
createRenderPipeline:
|
|
1668
|
-
createShaderModule:
|
|
1669
|
-
createBindGroup:
|
|
1670
|
-
createBindGroupLayout:
|
|
1671
|
-
createBuffer:
|
|
1672
|
-
createTexture:
|
|
1673
|
-
createSampler:
|
|
1757
|
+
createRenderPipeline: import_vitest9.vi.fn(),
|
|
1758
|
+
createShaderModule: import_vitest9.vi.fn(),
|
|
1759
|
+
createBindGroup: import_vitest9.vi.fn(),
|
|
1760
|
+
createBindGroupLayout: import_vitest9.vi.fn(),
|
|
1761
|
+
createBuffer: import_vitest9.vi.fn(),
|
|
1762
|
+
createTexture: import_vitest9.vi.fn(),
|
|
1763
|
+
createSampler: import_vitest9.vi.fn()
|
|
1674
1764
|
};
|
|
1675
1765
|
}
|
|
1676
1766
|
function createMockGPUCanvasContext() {
|
|
1677
1767
|
return {
|
|
1678
|
-
configure:
|
|
1679
|
-
unconfigure:
|
|
1680
|
-
getCurrentTexture:
|
|
1768
|
+
configure: import_vitest9.vi.fn(),
|
|
1769
|
+
unconfigure: import_vitest9.vi.fn(),
|
|
1770
|
+
getCurrentTexture: import_vitest9.vi.fn()
|
|
1681
1771
|
};
|
|
1682
1772
|
}
|
|
1683
1773
|
function setupWebGPUMocks() {
|
|
1684
1774
|
const mockAdapter = createMockGPUAdapter();
|
|
1685
1775
|
const mockGpu = {
|
|
1686
|
-
requestAdapter:
|
|
1687
|
-
getPreferredCanvasFormat:
|
|
1776
|
+
requestAdapter: import_vitest9.vi.fn().mockResolvedValue(mockAdapter),
|
|
1777
|
+
getPreferredCanvasFormat: import_vitest9.vi.fn().mockReturnValue("bgra8unorm")
|
|
1688
1778
|
};
|
|
1689
1779
|
Object.defineProperty(global.navigator, "gpu", {
|
|
1690
1780
|
value: mockGpu,
|
|
@@ -2321,6 +2411,7 @@ function createVisualTestScenario(page, sceneName) {
|
|
|
2321
2411
|
createMockGPUCanvasContext,
|
|
2322
2412
|
createMockGPUDevice,
|
|
2323
2413
|
createMockGame,
|
|
2414
|
+
createMockGameExports,
|
|
2324
2415
|
createMockGameState,
|
|
2325
2416
|
createMockHandshake,
|
|
2326
2417
|
createMockImage,
|