quake2ts 0.0.570 → 0.0.572

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.
@@ -2,7 +2,7 @@ import * as vitest from 'vitest';
2
2
  import { Mock } from 'vitest';
3
3
  import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, NetDriver, UserCommand } from '@quake2ts/shared';
4
4
  export { intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
5
- import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, GameExports } from '@quake2ts/game';
5
+ import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, GameExports } from '@quake2ts/game';
6
6
  import { NetworkTransport, Server, ServerStatic, Client, ClientState } from '@quake2ts/server';
7
7
  import { ImageData } from '@napi-rs/canvas';
8
8
  import { LaunchOptions, BrowserContextOptions, Browser, BrowserContext, Page } from 'playwright';
@@ -197,6 +197,37 @@ declare const mockMonsterAttacks: {
197
197
  fireBFG: Mock<any, any>;
198
198
  };
199
199
 
200
+ /**
201
+ * Creates a mock player inventory with default values suitable for testing.
202
+ * Can be customized with overrides.
203
+ */
204
+ declare function createMockInventory(overrides?: Partial<PlayerInventory>): PlayerInventory;
205
+ /**
206
+ * Generic factory for any item type.
207
+ * Attempts to find a predefined item by ID first, then applies overrides.
208
+ */
209
+ declare function createMockItem(id: string, overrides?: Partial<BaseItem>): BaseItem;
210
+ /**
211
+ * Creates a mock WeaponItem
212
+ */
213
+ declare function createMockWeaponItem(weaponId: WeaponId, overrides?: Partial<WeaponItem>): WeaponItem;
214
+ /**
215
+ * Creates a mock HealthItem
216
+ */
217
+ declare function createMockHealthItem(amount: number, overrides?: Partial<HealthItem>): HealthItem;
218
+ /**
219
+ * Creates a mock ArmorItem
220
+ */
221
+ declare function createMockArmorItem(amount: number, overrides?: Partial<ArmorItem>): ArmorItem;
222
+ /**
223
+ * Creates a mock AmmoItem
224
+ */
225
+ declare function createMockAmmoItem(ammoItemId: AmmoItemId, overrides?: Partial<BaseItem>): BaseItem;
226
+ /**
227
+ * Creates a mock PowerupItem
228
+ */
229
+ declare function createMockPowerupItem(id: string, duration: number, overrides?: Partial<PowerupItem>): PowerupItem;
230
+
200
231
  interface GameState {
201
232
  levelName: string;
202
233
  time: number;
@@ -778,4 +809,4 @@ interface VisualScenario {
778
809
  */
779
810
  declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
780
811
 
781
- export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
812
+ export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockImage, createMockImageData, createMockIndexedDB, createMockInventory, createMockItem, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockPowerupItem, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
@@ -2,7 +2,7 @@ import * as vitest from 'vitest';
2
2
  import { Mock } from 'vitest';
3
3
  import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, NetDriver, UserCommand } from '@quake2ts/shared';
4
4
  export { intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
5
- import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, GameExports } from '@quake2ts/game';
5
+ import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, GameExports } from '@quake2ts/game';
6
6
  import { NetworkTransport, Server, ServerStatic, Client, ClientState } from '@quake2ts/server';
7
7
  import { ImageData } from '@napi-rs/canvas';
8
8
  import { LaunchOptions, BrowserContextOptions, Browser, BrowserContext, Page } from 'playwright';
@@ -197,6 +197,37 @@ declare const mockMonsterAttacks: {
197
197
  fireBFG: Mock<any, any>;
198
198
  };
199
199
 
200
+ /**
201
+ * Creates a mock player inventory with default values suitable for testing.
202
+ * Can be customized with overrides.
203
+ */
204
+ declare function createMockInventory(overrides?: Partial<PlayerInventory>): PlayerInventory;
205
+ /**
206
+ * Generic factory for any item type.
207
+ * Attempts to find a predefined item by ID first, then applies overrides.
208
+ */
209
+ declare function createMockItem(id: string, overrides?: Partial<BaseItem>): BaseItem;
210
+ /**
211
+ * Creates a mock WeaponItem
212
+ */
213
+ declare function createMockWeaponItem(weaponId: WeaponId, overrides?: Partial<WeaponItem>): WeaponItem;
214
+ /**
215
+ * Creates a mock HealthItem
216
+ */
217
+ declare function createMockHealthItem(amount: number, overrides?: Partial<HealthItem>): HealthItem;
218
+ /**
219
+ * Creates a mock ArmorItem
220
+ */
221
+ declare function createMockArmorItem(amount: number, overrides?: Partial<ArmorItem>): ArmorItem;
222
+ /**
223
+ * Creates a mock AmmoItem
224
+ */
225
+ declare function createMockAmmoItem(ammoItemId: AmmoItemId, overrides?: Partial<BaseItem>): BaseItem;
226
+ /**
227
+ * Creates a mock PowerupItem
228
+ */
229
+ declare function createMockPowerupItem(id: string, duration: number, overrides?: Partial<PowerupItem>): PowerupItem;
230
+
200
231
  interface GameState {
201
232
  levelName: string;
202
233
  time: number;
@@ -778,4 +809,4 @@ interface VisualScenario {
778
809
  */
779
810
  declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
780
811
 
781
- export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
812
+ export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockImage, createMockImageData, createMockIndexedDB, createMockInventory, createMockItem, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockPowerupItem, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
@@ -565,6 +565,103 @@ var mockMonsterAttacks = {
565
565
  fireBFG: vi4.fn()
566
566
  };
567
567
 
568
+ // src/game/mocks/items.ts
569
+ import {
570
+ createPlayerInventory
571
+ } from "@quake2ts/game";
572
+ import {
573
+ WEAPON_ITEMS,
574
+ HEALTH_ITEMS,
575
+ ARMOR_ITEMS,
576
+ POWERUP_ITEMS,
577
+ POWER_ARMOR_ITEMS,
578
+ KEY_ITEMS,
579
+ FLAG_ITEMS,
580
+ getAmmoItemDefinition
581
+ } from "@quake2ts/game";
582
+ function createMockInventory(overrides = {}) {
583
+ const defaultInventory = createPlayerInventory();
584
+ const inventory = {
585
+ ...defaultInventory,
586
+ ...overrides
587
+ };
588
+ return inventory;
589
+ }
590
+ function createMockItem(id, overrides = {}) {
591
+ let base;
592
+ base = WEAPON_ITEMS[id] || HEALTH_ITEMS[id] || ARMOR_ITEMS[id] || POWERUP_ITEMS[id] || POWER_ARMOR_ITEMS[id] || KEY_ITEMS[id] || FLAG_ITEMS[id];
593
+ if (!base) {
594
+ base = {
595
+ id,
596
+ name: `Mock Item ${id}`
597
+ };
598
+ }
599
+ return {
600
+ ...base,
601
+ ...overrides
602
+ };
603
+ }
604
+ function createMockWeaponItem(weaponId, overrides = {}) {
605
+ const found = Object.values(WEAPON_ITEMS).find((w) => w.weaponId === weaponId);
606
+ const base = found ? { ...found } : {
607
+ type: "weapon",
608
+ id: `weapon_${weaponId}`,
609
+ name: `Mock Weapon ${weaponId}`,
610
+ weaponId,
611
+ ammoType: null,
612
+ initialAmmo: 0,
613
+ pickupAmmo: 0,
614
+ fireRate: 1
615
+ };
616
+ return { ...base, ...overrides };
617
+ }
618
+ function createMockHealthItem(amount, overrides = {}) {
619
+ return {
620
+ type: "health",
621
+ id: "item_health_mock",
622
+ name: "Mock Health",
623
+ amount,
624
+ max: 100,
625
+ ...overrides
626
+ };
627
+ }
628
+ function createMockArmorItem(amount, overrides = {}) {
629
+ return {
630
+ type: "armor",
631
+ id: "item_armor_mock",
632
+ name: "Mock Armor",
633
+ amount,
634
+ ...overrides
635
+ };
636
+ }
637
+ function createMockAmmoItem(ammoItemId, overrides = {}) {
638
+ const def = getAmmoItemDefinition(ammoItemId);
639
+ if (!def) {
640
+ throw new Error(`Unknown ammo item id: ${ammoItemId}`);
641
+ }
642
+ const base = {
643
+ id: def.id,
644
+ name: `Mock Ammo ${def.id}`
645
+ };
646
+ return {
647
+ ...base,
648
+ ...overrides
649
+ };
650
+ }
651
+ function createMockPowerupItem(id, duration, overrides = {}) {
652
+ const found = POWERUP_ITEMS[id];
653
+ const base = found ? { ...found } : {
654
+ type: "powerup",
655
+ id,
656
+ name: `Mock Powerup ${id}`,
657
+ timer: duration
658
+ };
659
+ if (duration !== void 0 && !found) {
660
+ base.timer = duration;
661
+ }
662
+ return { ...base, ...overrides };
663
+ }
664
+
568
665
  // src/game/mocks.ts
569
666
  import { vi as vi5 } from "vitest";
570
667
  function createMockGameState(overrides) {
@@ -2273,6 +2370,8 @@ export {
2273
2370
  createGameStateSnapshotFactory,
2274
2371
  createItemEntityFactory,
2275
2372
  createMockAI,
2373
+ createMockAmmoItem,
2374
+ createMockArmorItem,
2276
2375
  createMockAudioContext,
2277
2376
  createMockCanvas,
2278
2377
  createMockCanvasContext2D,
@@ -2286,15 +2385,19 @@ export {
2286
2385
  createMockGameExports,
2287
2386
  createMockGameState,
2288
2387
  createMockHandshake,
2388
+ createMockHealthItem,
2289
2389
  createMockImage,
2290
2390
  createMockImageData,
2291
2391
  createMockIndexedDB,
2392
+ createMockInventory,
2393
+ createMockItem,
2292
2394
  createMockLocalStorage,
2293
2395
  createMockMonsterAI,
2294
2396
  createMockMonsterMove,
2295
2397
  createMockNetDriver,
2296
2398
  createMockNetworkAddress,
2297
2399
  createMockPerformance,
2400
+ createMockPowerupItem,
2298
2401
  createMockRAF,
2299
2402
  createMockRConClient,
2300
2403
  createMockServer,
@@ -2307,6 +2410,7 @@ export {
2307
2410
  createMockUDPSocket,
2308
2411
  createMockUserInfo,
2309
2412
  createMockWeapon,
2413
+ createMockWeaponItem,
2310
2414
  createMockWebGL2Context,
2311
2415
  createMonsterEntityFactory,
2312
2416
  createMultiplayerTestScenario,