quake2ts 0.0.567 → 0.0.569

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.
@@ -1,4 +1,4 @@
1
- export { Entity, type DieCallback, type EntityFieldDescriptor, type EntityFieldType, type PainCallback, type ThinkCallback, type TouchCallback, type UseCallback, type MonsterInfo, type MonsterMove, type MonsterFrame, MoveType, Solid, ServerFlags, DeadFlag, ENTITY_FIELD_METADATA, } from './entity.js';
1
+ export { Entity, type DieCallback, type EntityFieldDescriptor, type EntityFieldType, type PainCallback, type ThinkCallback, type TouchCallback, type UseCallback, type MonsterInfo, type MonsterMove, type MonsterFrame, type MonsterAction, type AIAction, MoveType, Solid, ServerFlags, DeadFlag, EntityFlags, EntityEffects, MuzzleFlash, ENTITY_FIELD_METADATA, } from './entity.js';
2
2
  export { EntitySystem, type EntitySystemSnapshot, type SerializedEntityState, type SerializedTargetAwareness, type LevelState } from './system.js';
3
3
  export { type EntityPoolSnapshot } from './pool.js';
4
4
  export { type ThinkScheduleEntry } from './thinkScheduler.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAQ,EACR,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,KAAK,yBAAyB,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACnJ,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,WAAW,EACX,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,KAAK,yBAAyB,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACnJ,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
@@ -41,16 +41,21 @@ __export(index_exports, {
41
41
  compareScreenshots: () => compareScreenshots,
42
42
  createBinaryStreamMock: () => createBinaryStreamMock,
43
43
  createBinaryWriterMock: () => createBinaryWriterMock,
44
+ createCombatTestContext: () => createCombatTestContext,
44
45
  createControlledTimer: () => createControlledTimer,
45
46
  createCustomNetworkCondition: () => createCustomNetworkCondition,
46
47
  createDeltaSnapshot: () => createDeltaSnapshot,
47
48
  createEntity: () => createEntity,
49
+ createEntityFactory: () => createEntityFactory,
48
50
  createEntityStateFactory: () => createEntityStateFactory,
49
51
  createGameStateSnapshotFactory: () => createGameStateSnapshotFactory,
52
+ createItemEntityFactory: () => createItemEntityFactory,
53
+ createMockAI: () => createMockAI,
50
54
  createMockAudioContext: () => createMockAudioContext,
51
55
  createMockCanvas: () => createMockCanvas,
52
56
  createMockCanvasContext2D: () => createMockCanvasContext2D,
53
57
  createMockConnection: () => createMockConnection,
58
+ createMockDamageInfo: () => createMockDamageInfo,
54
59
  createMockEngine: () => createMockEngine,
55
60
  createMockGPUAdapter: () => createMockGPUAdapter,
56
61
  createMockGPUCanvasContext: () => createMockGPUCanvasContext,
@@ -62,6 +67,9 @@ __export(index_exports, {
62
67
  createMockImageData: () => createMockImageData,
63
68
  createMockIndexedDB: () => createMockIndexedDB,
64
69
  createMockLocalStorage: () => createMockLocalStorage,
70
+ createMockMonsterAI: () => createMockMonsterAI,
71
+ createMockMonsterMove: () => createMockMonsterMove,
72
+ createMockNetDriver: () => createMockNetDriver,
65
73
  createMockNetworkAddress: () => createMockNetworkAddress,
66
74
  createMockPerformance: () => createMockPerformance,
67
75
  createMockRAF: () => createMockRAF,
@@ -75,15 +83,21 @@ __export(index_exports, {
75
83
  createMockTransport: () => createMockTransport,
76
84
  createMockUDPSocket: () => createMockUDPSocket,
77
85
  createMockUserInfo: () => createMockUserInfo,
86
+ createMockWeapon: () => createMockWeapon,
78
87
  createMockWebGL2Context: () => createMockWebGL2Context,
88
+ createMonsterEntityFactory: () => createMonsterEntityFactory,
79
89
  createMultiplayerTestScenario: () => createMultiplayerTestScenario,
80
90
  createNetChanMock: () => createNetChanMock,
91
+ createPhysicsTestContext: () => createPhysicsTestContext,
92
+ createPlayerEntityFactory: () => createPlayerEntityFactory,
81
93
  createPlayerStateFactory: () => createPlayerStateFactory,
82
94
  createPlaywrightTestClient: () => createPlaywrightTestClient,
95
+ createProjectileEntityFactory: () => createProjectileEntityFactory,
83
96
  createServerSnapshot: () => createServerSnapshot,
84
- createSpawnContext: () => createSpawnContext,
97
+ createSpawnTestContext: () => createSpawnTestContext,
85
98
  createStorageTestScenario: () => createStorageTestScenario,
86
99
  createTestContext: () => createTestContext,
100
+ createTriggerEntityFactory: () => createTriggerEntityFactory,
87
101
  createVisualTestScenario: () => createVisualTestScenario,
88
102
  intersects: () => import_shared3.intersects,
89
103
  ladderTrace: () => import_shared3.ladderTrace,
@@ -94,6 +108,7 @@ __export(index_exports, {
94
108
  makeLeafModel: () => makeLeafModel,
95
109
  makeNode: () => makeNode,
96
110
  makePlane: () => makePlane,
111
+ mockMonsterAttacks: () => mockMonsterAttacks,
97
112
  serializeUserInfo: () => serializeUserInfo,
98
113
  setupBrowserEnvironment: () => setupBrowserEnvironment,
99
114
  setupMockAudioContext: () => setupMockAudioContext,
@@ -267,6 +282,7 @@ function makeBrushFromMinsMaxs(mins, maxs, contents = import_shared.CONTENTS_SOL
267
282
  }
268
283
 
269
284
  // src/game/factories.ts
285
+ var import_game = require("@quake2ts/game");
270
286
  var createPlayerStateFactory = (overrides) => ({
271
287
  pm_type: 0,
272
288
  pm_time: 0,
@@ -349,10 +365,77 @@ var createGameStateSnapshotFactory = (overrides) => ({
349
365
  pm_type: 0,
350
366
  ...overrides
351
367
  });
368
+ function createEntityFactory(overrides = {}) {
369
+ const ent = new import_game.Entity(1);
370
+ Object.assign(ent, {
371
+ classname: "info_null",
372
+ health: 0,
373
+ max_health: 0,
374
+ takedamage: false,
375
+ deadflag: import_game.DeadFlag.Alive,
376
+ solid: import_game.Solid.Not,
377
+ movetype: import_game.MoveType.None,
378
+ flags: 0,
379
+ svflags: 0,
380
+ ...overrides
381
+ });
382
+ return ent;
383
+ }
384
+ function createPlayerEntityFactory(overrides = {}) {
385
+ return createEntityFactory({
386
+ classname: "player",
387
+ health: 100,
388
+ max_health: 100,
389
+ takedamage: true,
390
+ solid: import_game.Solid.BoundingBox,
391
+ movetype: import_game.MoveType.Walk,
392
+ svflags: import_game.ServerFlags.Player,
393
+ viewheight: 22,
394
+ ...overrides
395
+ });
396
+ }
397
+ function createMonsterEntityFactory(classname, overrides = {}) {
398
+ return createEntityFactory({
399
+ classname,
400
+ health: 100,
401
+ max_health: 100,
402
+ takedamage: true,
403
+ solid: import_game.Solid.BoundingBox,
404
+ movetype: import_game.MoveType.Step,
405
+ svflags: import_game.ServerFlags.Monster,
406
+ deadflag: import_game.DeadFlag.Alive,
407
+ ...overrides
408
+ });
409
+ }
410
+ function createItemEntityFactory(classname, overrides = {}) {
411
+ return createEntityFactory({
412
+ classname,
413
+ solid: import_game.Solid.Trigger,
414
+ movetype: import_game.MoveType.Toss,
415
+ ...overrides
416
+ });
417
+ }
418
+ function createProjectileEntityFactory(classname, overrides = {}) {
419
+ return createEntityFactory({
420
+ classname,
421
+ solid: import_game.Solid.Bsp,
422
+ movetype: import_game.MoveType.FlyMissile,
423
+ svflags: import_game.ServerFlags.Projectile,
424
+ ...overrides
425
+ });
426
+ }
427
+ function createTriggerEntityFactory(classname, overrides = {}) {
428
+ return createEntityFactory({
429
+ classname,
430
+ solid: import_game.Solid.Trigger,
431
+ movetype: import_game.MoveType.None,
432
+ ...overrides
433
+ });
434
+ }
352
435
 
353
436
  // src/game/helpers.ts
354
437
  var import_vitest2 = require("vitest");
355
- var import_game = require("@quake2ts/game");
438
+ var import_game2 = require("@quake2ts/game");
356
439
  var import_shared2 = require("@quake2ts/shared");
357
440
  var import_shared3 = require("@quake2ts/shared");
358
441
  var createMockEngine = () => ({
@@ -362,8 +445,8 @@ var createMockEngine = () => ({
362
445
  centerprintf: import_vitest2.vi.fn()
363
446
  });
364
447
  var createMockGame = (seed = 12345) => {
365
- const spawnRegistry = new import_game.SpawnRegistry();
366
- const hooks = new import_game.ScriptHookRegistry();
448
+ const spawnRegistry = new import_game2.SpawnRegistry();
449
+ const hooks = new import_game2.ScriptHookRegistry();
367
450
  const game = {
368
451
  random: (0, import_shared2.createRandomGenerator)({ seed }),
369
452
  registerEntitySpawn: import_vitest2.vi.fn((classname, spawnFunc) => {
@@ -405,7 +488,7 @@ function createTestContext(options) {
405
488
  const hooks = game.hooks;
406
489
  const entities = {
407
490
  spawn: import_vitest2.vi.fn(() => {
408
- const ent = new import_game.Entity(entityList.length + 1);
491
+ const ent = new import_game2.Entity(entityList.length + 1);
409
492
  entityList.push(ent);
410
493
  hooks.onEntitySpawn(ent);
411
494
  return ent;
@@ -484,7 +567,7 @@ function createTestContext(options) {
484
567
  deathmatch: false,
485
568
  coop: false,
486
569
  activeCount: entityList.length,
487
- world: entityList.find((e) => e.classname === "worldspawn") || new import_game.Entity(0)
570
+ world: entityList.find((e) => e.classname === "worldspawn") || new import_game2.Entity(0)
488
571
  // ... other EntitySystem properties would go here
489
572
  };
490
573
  return {
@@ -501,13 +584,113 @@ function createTestContext(options) {
501
584
  precacheImage: import_vitest2.vi.fn()
502
585
  };
503
586
  }
504
- function createSpawnContext() {
587
+ function createSpawnTestContext(mapName) {
588
+ const ctx = createTestContext();
589
+ if (mapName) {
590
+ ctx.game.spawnWorld();
591
+ }
592
+ return ctx;
593
+ }
594
+ function createCombatTestContext() {
595
+ return createTestContext();
596
+ }
597
+ function createPhysicsTestContext() {
505
598
  return createTestContext();
506
599
  }
507
600
  function createEntity() {
508
- return new import_game.Entity(1);
601
+ return new import_game2.Entity(1);
602
+ }
603
+
604
+ // src/game/mocks/ai.ts
605
+ var import_vitest3 = require("vitest");
606
+ function createMockAI(overrides = {}) {
607
+ return {
608
+ checkAttack: import_vitest3.vi.fn(() => false),
609
+ findTarget: import_vitest3.vi.fn(() => null),
610
+ visible: import_vitest3.vi.fn(() => true),
611
+ infront: import_vitest3.vi.fn(() => true),
612
+ ...overrides
613
+ };
614
+ }
615
+ function createMockMonsterAI(overrides = {}) {
616
+ return {
617
+ stand: import_vitest3.vi.fn(),
618
+ walk: import_vitest3.vi.fn(),
619
+ run: import_vitest3.vi.fn(),
620
+ dodge: import_vitest3.vi.fn(),
621
+ attack: import_vitest3.vi.fn(),
622
+ melee: import_vitest3.vi.fn(),
623
+ sight: import_vitest3.vi.fn(),
624
+ idle: import_vitest3.vi.fn(),
625
+ ...overrides
626
+ };
627
+ }
628
+ function createMockMonsterMove(first, last, think, action) {
629
+ const frames = [];
630
+ for (let i = first; i <= last; i++) {
631
+ frames.push({
632
+ ai: action,
633
+ dist: 0,
634
+ think
635
+ });
636
+ }
637
+ return {
638
+ firstframe: first,
639
+ lastframe: last,
640
+ frames,
641
+ endfunc: null
642
+ };
509
643
  }
510
644
 
645
+ // src/game/mocks/combat.ts
646
+ var import_vitest4 = require("vitest");
647
+ var import_game3 = require("@quake2ts/game");
648
+ function createMockDamageInfo(overrides = {}) {
649
+ return {
650
+ damage: 10,
651
+ mod: import_game3.DamageMod.UNKNOWN,
652
+ knockback: 0,
653
+ attacker: null,
654
+ inflictor: null,
655
+ dir: null,
656
+ point: null,
657
+ ...overrides
658
+ };
659
+ }
660
+ var WEAPON_NAMES = {
661
+ "weapon_blaster": "Blaster",
662
+ "weapon_shotgun": "Shotgun",
663
+ "weapon_supershotgun": "Super Shotgun",
664
+ "weapon_machinegun": "Machinegun",
665
+ "weapon_chaingun": "Chaingun",
666
+ "weapon_grenadelauncher": "Grenade Launcher",
667
+ "weapon_rocketlauncher": "Rocket Launcher",
668
+ "weapon_hyperblaster": "HyperBlaster",
669
+ "weapon_railgun": "Railgun",
670
+ "weapon_bfg": "BFG10K"
671
+ };
672
+ function createMockWeapon(name = "Mock Weapon") {
673
+ const displayName = WEAPON_NAMES[name] || name;
674
+ return {
675
+ name: displayName,
676
+ ammoType: "bullets",
677
+ ammoUse: 1,
678
+ selection: import_vitest4.vi.fn(),
679
+ think: import_vitest4.vi.fn(),
680
+ command: import_vitest4.vi.fn()
681
+ };
682
+ }
683
+ var mockMonsterAttacks = {
684
+ fireBlaster: import_vitest4.vi.fn(),
685
+ fireRocket: import_vitest4.vi.fn(),
686
+ fireGrenade: import_vitest4.vi.fn(),
687
+ fireHeat: import_vitest4.vi.fn(),
688
+ fireBullet: import_vitest4.vi.fn(),
689
+ fireShotgun: import_vitest4.vi.fn(),
690
+ fireRailgun: import_vitest4.vi.fn(),
691
+ fireBFG: import_vitest4.vi.fn()
692
+ };
693
+
511
694
  // src/game/mocks.ts
512
695
  function createMockGameState(overrides) {
513
696
  return {
@@ -520,7 +703,7 @@ function createMockGameState(overrides) {
520
703
  }
521
704
 
522
705
  // src/server/mocks/transport.ts
523
- var import_vitest3 = require("vitest");
706
+ var import_vitest5 = require("vitest");
524
707
  var MockTransport = class {
525
708
  constructor() {
526
709
  this.address = "127.0.0.1";
@@ -528,11 +711,11 @@ var MockTransport = class {
528
711
  this.sentMessages = [];
529
712
  this.receivedMessages = [];
530
713
  this.listening = false;
531
- this.listenSpy = import_vitest3.vi.fn().mockImplementation(async (port) => {
714
+ this.listenSpy = import_vitest5.vi.fn().mockImplementation(async (port) => {
532
715
  this.port = port;
533
716
  this.listening = true;
534
717
  });
535
- this.closeSpy = import_vitest3.vi.fn().mockImplementation(() => {
718
+ this.closeSpy = import_vitest5.vi.fn().mockImplementation(() => {
536
719
  this.listening = false;
537
720
  });
538
721
  }
@@ -588,11 +771,11 @@ var MockTransport = class {
588
771
  };
589
772
  function createMockUDPSocket(overrides) {
590
773
  const socket = {
591
- send: import_vitest3.vi.fn(),
592
- on: import_vitest3.vi.fn(),
593
- close: import_vitest3.vi.fn(),
594
- bind: import_vitest3.vi.fn(),
595
- address: import_vitest3.vi.fn().mockReturnValue({ address: "127.0.0.1", family: "IPv4", port: 0 }),
774
+ send: import_vitest5.vi.fn(),
775
+ on: import_vitest5.vi.fn(),
776
+ close: import_vitest5.vi.fn(),
777
+ bind: import_vitest5.vi.fn(),
778
+ address: import_vitest5.vi.fn().mockReturnValue({ address: "127.0.0.1", family: "IPv4", port: 0 }),
596
779
  ...overrides
597
780
  };
598
781
  return socket;
@@ -607,11 +790,23 @@ function createMockTransport(address = "127.0.0.1", port = 27910, overrides) {
607
790
  Object.assign(transport, overrides);
608
791
  return transport;
609
792
  }
793
+ function createMockNetDriver(overrides) {
794
+ return {
795
+ connect: import_vitest5.vi.fn().mockResolvedValue(void 0),
796
+ disconnect: import_vitest5.vi.fn(),
797
+ send: import_vitest5.vi.fn(),
798
+ onMessage: import_vitest5.vi.fn(),
799
+ onClose: import_vitest5.vi.fn(),
800
+ onError: import_vitest5.vi.fn(),
801
+ isConnected: import_vitest5.vi.fn().mockReturnValue(true),
802
+ ...overrides
803
+ };
804
+ }
610
805
 
611
806
  // src/server/mocks/state.ts
612
807
  var import_server = require("@quake2ts/server");
613
808
  var import_shared4 = require("@quake2ts/shared");
614
- var import_vitest4 = require("vitest");
809
+ var import_vitest6 = require("vitest");
615
810
  function createMockServerState(overrides) {
616
811
  return {
617
812
  state: import_server.ServerState.Game,
@@ -641,15 +836,7 @@ function createMockServerStatic(maxClients = 16, overrides) {
641
836
  };
642
837
  }
643
838
  function createMockServerClient(clientNum, overrides) {
644
- const mockNet = {
645
- connect: import_vitest4.vi.fn(),
646
- disconnect: import_vitest4.vi.fn(),
647
- send: import_vitest4.vi.fn(),
648
- onMessage: import_vitest4.vi.fn(),
649
- onClose: import_vitest4.vi.fn(),
650
- onError: import_vitest4.vi.fn(),
651
- isConnected: import_vitest4.vi.fn().mockReturnValue(true)
652
- };
839
+ const mockNet = createMockNetDriver();
653
840
  return {
654
841
  index: clientNum,
655
842
  state: import_server.ClientState.Connected,
@@ -661,13 +848,13 @@ function createMockServerClient(clientNum, overrides) {
661
848
  incomingSequence: 0,
662
849
  outgoingSequence: 0,
663
850
  lastReceived: 0,
664
- process: import_vitest4.vi.fn(),
665
- transmit: import_vitest4.vi.fn(),
666
- writeReliableByte: import_vitest4.vi.fn(),
667
- writeReliableShort: import_vitest4.vi.fn(),
668
- writeReliableLong: import_vitest4.vi.fn(),
669
- writeReliableString: import_vitest4.vi.fn(),
670
- writeReliableData: import_vitest4.vi.fn()
851
+ process: import_vitest6.vi.fn(),
852
+ transmit: import_vitest6.vi.fn(),
853
+ writeReliableByte: import_vitest6.vi.fn(),
854
+ writeReliableShort: import_vitest6.vi.fn(),
855
+ writeReliableLong: import_vitest6.vi.fn(),
856
+ writeReliableString: import_vitest6.vi.fn(),
857
+ writeReliableData: import_vitest6.vi.fn()
671
858
  },
672
859
  // Cast as any because NetChan might be complex to fully mock here
673
860
  userInfo: "",
@@ -709,13 +896,13 @@ function createMockServerClient(clientNum, overrides) {
709
896
  }
710
897
  function createMockServer(overrides) {
711
898
  return {
712
- start: import_vitest4.vi.fn().mockResolvedValue(void 0),
713
- stop: import_vitest4.vi.fn(),
714
- multicast: import_vitest4.vi.fn(),
715
- unicast: import_vitest4.vi.fn(),
716
- configstring: import_vitest4.vi.fn(),
717
- kickPlayer: import_vitest4.vi.fn(),
718
- changeMap: import_vitest4.vi.fn().mockResolvedValue(void 0),
899
+ start: import_vitest6.vi.fn().mockResolvedValue(void 0),
900
+ stop: import_vitest6.vi.fn(),
901
+ multicast: import_vitest6.vi.fn(),
902
+ unicast: import_vitest6.vi.fn(),
903
+ configstring: import_vitest6.vi.fn(),
904
+ kickPlayer: import_vitest6.vi.fn(),
905
+ changeMap: import_vitest6.vi.fn().mockResolvedValue(void 0),
719
906
  ...overrides
720
907
  };
721
908
  }
@@ -777,19 +964,19 @@ async function simulateHandshake(client, server) {
777
964
  }
778
965
 
779
966
  // src/server/mocks/commands.ts
780
- var import_vitest5 = require("vitest");
967
+ var import_vitest7 = require("vitest");
781
968
  function createMockServerConsole(overrides) {
782
969
  const outputBuffer = [];
783
970
  const commandBuffer = [];
784
971
  return {
785
- exec: import_vitest5.vi.fn((cmd) => {
972
+ exec: import_vitest7.vi.fn((cmd) => {
786
973
  commandBuffer.push(cmd);
787
974
  return `Executed: ${cmd}`;
788
975
  }),
789
- print: import_vitest5.vi.fn((text) => {
976
+ print: import_vitest7.vi.fn((text) => {
790
977
  outputBuffer.push(text);
791
978
  }),
792
- broadcast: import_vitest5.vi.fn((text) => {
979
+ broadcast: import_vitest7.vi.fn((text) => {
793
980
  outputBuffer.push(`Broadcast: ${text}`);
794
981
  }),
795
982
  commandBuffer,
@@ -802,13 +989,13 @@ function createMockRConClient(password = "") {
802
989
  connected: false,
803
990
  lastCommand: "",
804
991
  lastResponse: "",
805
- connect: import_vitest5.vi.fn(async (address, port, pwd) => {
992
+ connect: import_vitest7.vi.fn(async (address, port, pwd) => {
806
993
  return pwd === password;
807
994
  }),
808
- sendCommand: import_vitest5.vi.fn(async (cmd) => {
995
+ sendCommand: import_vitest7.vi.fn(async (cmd) => {
809
996
  return `RCON Response for: ${cmd}`;
810
997
  }),
811
- disconnect: import_vitest5.vi.fn()
998
+ disconnect: import_vitest7.vi.fn()
812
999
  };
813
1000
  }
814
1001
  function simulateServerCommand(server, command) {
@@ -1451,10 +1638,10 @@ function createMockImage(width, height, src) {
1451
1638
  }
1452
1639
 
1453
1640
  // src/engine/mocks/webgpu.ts
1454
- var import_vitest6 = require("vitest");
1641
+ var import_vitest8 = require("vitest");
1455
1642
  function createMockGPUAdapter() {
1456
1643
  return {
1457
- requestDevice: import_vitest6.vi.fn().mockResolvedValue(createMockGPUDevice()),
1644
+ requestDevice: import_vitest8.vi.fn().mockResolvedValue(createMockGPUDevice()),
1458
1645
  features: /* @__PURE__ */ new Set(),
1459
1646
  limits: {}
1460
1647
  };
@@ -1464,40 +1651,40 @@ function createMockGPUDevice() {
1464
1651
  features: /* @__PURE__ */ new Set(),
1465
1652
  limits: {},
1466
1653
  queue: {
1467
- submit: import_vitest6.vi.fn(),
1468
- writeBuffer: import_vitest6.vi.fn(),
1469
- writeTexture: import_vitest6.vi.fn(),
1470
- copyExternalImageToTexture: import_vitest6.vi.fn()
1471
- },
1472
- createCommandEncoder: import_vitest6.vi.fn().mockReturnValue({
1473
- beginRenderPass: import_vitest6.vi.fn().mockReturnValue({
1474
- setPipeline: import_vitest6.vi.fn(),
1475
- draw: import_vitest6.vi.fn(),
1476
- end: import_vitest6.vi.fn()
1654
+ submit: import_vitest8.vi.fn(),
1655
+ writeBuffer: import_vitest8.vi.fn(),
1656
+ writeTexture: import_vitest8.vi.fn(),
1657
+ copyExternalImageToTexture: import_vitest8.vi.fn()
1658
+ },
1659
+ createCommandEncoder: import_vitest8.vi.fn().mockReturnValue({
1660
+ beginRenderPass: import_vitest8.vi.fn().mockReturnValue({
1661
+ setPipeline: import_vitest8.vi.fn(),
1662
+ draw: import_vitest8.vi.fn(),
1663
+ end: import_vitest8.vi.fn()
1477
1664
  }),
1478
- finish: import_vitest6.vi.fn()
1665
+ finish: import_vitest8.vi.fn()
1479
1666
  }),
1480
- createRenderPipeline: import_vitest6.vi.fn(),
1481
- createShaderModule: import_vitest6.vi.fn(),
1482
- createBindGroup: import_vitest6.vi.fn(),
1483
- createBindGroupLayout: import_vitest6.vi.fn(),
1484
- createBuffer: import_vitest6.vi.fn(),
1485
- createTexture: import_vitest6.vi.fn(),
1486
- createSampler: import_vitest6.vi.fn()
1667
+ createRenderPipeline: import_vitest8.vi.fn(),
1668
+ createShaderModule: import_vitest8.vi.fn(),
1669
+ createBindGroup: import_vitest8.vi.fn(),
1670
+ createBindGroupLayout: import_vitest8.vi.fn(),
1671
+ createBuffer: import_vitest8.vi.fn(),
1672
+ createTexture: import_vitest8.vi.fn(),
1673
+ createSampler: import_vitest8.vi.fn()
1487
1674
  };
1488
1675
  }
1489
1676
  function createMockGPUCanvasContext() {
1490
1677
  return {
1491
- configure: import_vitest6.vi.fn(),
1492
- unconfigure: import_vitest6.vi.fn(),
1493
- getCurrentTexture: import_vitest6.vi.fn()
1678
+ configure: import_vitest8.vi.fn(),
1679
+ unconfigure: import_vitest8.vi.fn(),
1680
+ getCurrentTexture: import_vitest8.vi.fn()
1494
1681
  };
1495
1682
  }
1496
1683
  function setupWebGPUMocks() {
1497
1684
  const mockAdapter = createMockGPUAdapter();
1498
1685
  const mockGpu = {
1499
- requestAdapter: import_vitest6.vi.fn().mockResolvedValue(mockAdapter),
1500
- getPreferredCanvasFormat: import_vitest6.vi.fn().mockReturnValue("bgra8unorm")
1686
+ requestAdapter: import_vitest8.vi.fn().mockResolvedValue(mockAdapter),
1687
+ getPreferredCanvasFormat: import_vitest8.vi.fn().mockReturnValue("bgra8unorm")
1501
1688
  };
1502
1689
  Object.defineProperty(global.navigator, "gpu", {
1503
1690
  value: mockGpu,
@@ -2114,16 +2301,21 @@ function createVisualTestScenario(page, sceneName) {
2114
2301
  compareScreenshots,
2115
2302
  createBinaryStreamMock,
2116
2303
  createBinaryWriterMock,
2304
+ createCombatTestContext,
2117
2305
  createControlledTimer,
2118
2306
  createCustomNetworkCondition,
2119
2307
  createDeltaSnapshot,
2120
2308
  createEntity,
2309
+ createEntityFactory,
2121
2310
  createEntityStateFactory,
2122
2311
  createGameStateSnapshotFactory,
2312
+ createItemEntityFactory,
2313
+ createMockAI,
2123
2314
  createMockAudioContext,
2124
2315
  createMockCanvas,
2125
2316
  createMockCanvasContext2D,
2126
2317
  createMockConnection,
2318
+ createMockDamageInfo,
2127
2319
  createMockEngine,
2128
2320
  createMockGPUAdapter,
2129
2321
  createMockGPUCanvasContext,
@@ -2135,6 +2327,9 @@ function createVisualTestScenario(page, sceneName) {
2135
2327
  createMockImageData,
2136
2328
  createMockIndexedDB,
2137
2329
  createMockLocalStorage,
2330
+ createMockMonsterAI,
2331
+ createMockMonsterMove,
2332
+ createMockNetDriver,
2138
2333
  createMockNetworkAddress,
2139
2334
  createMockPerformance,
2140
2335
  createMockRAF,
@@ -2148,15 +2343,21 @@ function createVisualTestScenario(page, sceneName) {
2148
2343
  createMockTransport,
2149
2344
  createMockUDPSocket,
2150
2345
  createMockUserInfo,
2346
+ createMockWeapon,
2151
2347
  createMockWebGL2Context,
2348
+ createMonsterEntityFactory,
2152
2349
  createMultiplayerTestScenario,
2153
2350
  createNetChanMock,
2351
+ createPhysicsTestContext,
2352
+ createPlayerEntityFactory,
2154
2353
  createPlayerStateFactory,
2155
2354
  createPlaywrightTestClient,
2355
+ createProjectileEntityFactory,
2156
2356
  createServerSnapshot,
2157
- createSpawnContext,
2357
+ createSpawnTestContext,
2158
2358
  createStorageTestScenario,
2159
2359
  createTestContext,
2360
+ createTriggerEntityFactory,
2160
2361
  createVisualTestScenario,
2161
2362
  intersects,
2162
2363
  ladderTrace,
@@ -2167,6 +2368,7 @@ function createVisualTestScenario(page, sceneName) {
2167
2368
  makeLeafModel,
2168
2369
  makeNode,
2169
2370
  makePlane,
2371
+ mockMonsterAttacks,
2170
2372
  serializeUserInfo,
2171
2373
  setupBrowserEnvironment,
2172
2374
  setupMockAudioContext,