quake2ts 0.0.49 → 0.0.50

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 (29) hide show
  1. package/apps/viewer/dist/browser/index.global.js +1 -1
  2. package/apps/viewer/dist/browser/index.global.js.map +1 -1
  3. package/apps/viewer/dist/cjs/index.cjs +33 -15
  4. package/apps/viewer/dist/cjs/index.cjs.map +1 -1
  5. package/apps/viewer/dist/esm/index.js +33 -15
  6. package/apps/viewer/dist/esm/index.js.map +1 -1
  7. package/apps/viewer/dist/tsconfig.tsbuildinfo +1 -1
  8. package/package.json +1 -1
  9. package/packages/game/dist/browser/index.global.js +1 -1
  10. package/packages/game/dist/browser/index.global.js.map +1 -1
  11. package/packages/game/dist/cjs/index.cjs +458 -390
  12. package/packages/game/dist/cjs/index.cjs.map +1 -1
  13. package/packages/game/dist/esm/index.js +454 -390
  14. package/packages/game/dist/esm/index.js.map +1 -1
  15. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  16. package/packages/game/dist/types/entities/callbacks.d.ts +6 -0
  17. package/packages/game/dist/types/entities/callbacks.d.ts.map +1 -0
  18. package/packages/game/dist/types/entities/index.d.ts +1 -0
  19. package/packages/game/dist/types/entities/index.d.ts.map +1 -1
  20. package/packages/game/dist/types/entities/system.d.ts +5 -3
  21. package/packages/game/dist/types/entities/system.d.ts.map +1 -1
  22. package/packages/game/dist/types/inventory/playerInventory.d.ts +10 -0
  23. package/packages/game/dist/types/inventory/playerInventory.d.ts.map +1 -1
  24. package/packages/game/dist/types/save/save.d.ts +7 -2
  25. package/packages/game/dist/types/save/save.d.ts.map +1 -1
  26. package/packages/game/dist/types/save/tests/callbacks.test.d.ts +2 -0
  27. package/packages/game/dist/types/save/tests/callbacks.test.d.ts.map +1 -0
  28. package/packages/game/dist/types/save/tests/playerInventory.test.d.ts +2 -0
  29. package/packages/game/dist/types/save/tests/playerInventory.test.d.ts.map +1 -0
@@ -1820,7 +1820,7 @@ function boundsIntersect(a, b) {
1820
1820
  return !(a.min.x > b.max.x || a.max.x < b.min.x || a.min.y > b.max.y || a.max.y < b.min.y || a.min.z > b.max.z || a.max.z < b.min.z);
1821
1821
  }
1822
1822
  var SERIALIZABLE_FIELDS = ENTITY_FIELD_METADATA.filter(
1823
- (field) => field.save
1823
+ (field) => field.save || field.type === "callback"
1824
1824
  );
1825
1825
  var DESCRIPTORS = new Map(SERIALIZABLE_FIELDS.map((descriptor) => [descriptor.name, descriptor]));
1826
1826
  function serializeVec3(vec) {
@@ -1851,12 +1851,18 @@ function deserializeInventory(value) {
1851
1851
  return parsed;
1852
1852
  }
1853
1853
  var EntitySystem = class {
1854
- constructor(maxEntities) {
1854
+ constructor(maxEntities, callbackRegistry) {
1855
1855
  this.targetNameIndex = /* @__PURE__ */ new Map();
1856
1856
  this.random = createRandomGenerator();
1857
1857
  this.currentTimeSeconds = 0;
1858
1858
  this.pool = new EntityPool(maxEntities);
1859
1859
  this.thinkScheduler = new ThinkScheduler();
1860
+ this.callbackToName = /* @__PURE__ */ new Map();
1861
+ if (callbackRegistry) {
1862
+ for (const [name, fn] of callbackRegistry.entries()) {
1863
+ this.callbackToName.set(fn, name);
1864
+ }
1865
+ }
1860
1866
  }
1861
1867
  get world() {
1862
1868
  return this.pool.world;
@@ -1981,6 +1987,9 @@ var EntitySystem = class {
1981
1987
  case "inventory":
1982
1988
  fields[descriptor.name] = serializeInventory(value);
1983
1989
  break;
1990
+ case "callback":
1991
+ fields[descriptor.name] = value ? this.callbackToName.get(value) ?? null : null;
1992
+ break;
1984
1993
  default:
1985
1994
  fields[descriptor.name] = value ?? null;
1986
1995
  break;
@@ -1998,7 +2007,7 @@ var EntitySystem = class {
1998
2007
  thinks: this.thinkScheduler.snapshot()
1999
2008
  };
2000
2009
  }
2001
- restore(snapshot) {
2010
+ restore(snapshot, callbackRegistry) {
2002
2011
  this.currentTimeSeconds = snapshot.timeSeconds;
2003
2012
  this.pool.restore(snapshot.pool);
2004
2013
  const indexToEntity = /* @__PURE__ */ new Map();
@@ -2033,6 +2042,14 @@ var EntitySystem = class {
2033
2042
  case "boolean":
2034
2043
  assignField(entity, name, Boolean(value));
2035
2044
  break;
2045
+ case "callback":
2046
+ if (value) {
2047
+ const callback = callbackRegistry?.get(value);
2048
+ if (callback) {
2049
+ assignField(entity, name, callback);
2050
+ }
2051
+ }
2052
+ break;
2036
2053
  default:
2037
2054
  assignField(entity, name, value);
2038
2055
  break;
@@ -2311,7 +2328,17 @@ var LevelClock = class {
2311
2328
  var FL_NOTARGET = 1 << 5;
2312
2329
  var FL_NOVISIBLE = 1 << 24;
2313
2330
  var SPAWNFLAG_MONSTER_AMBUSH = 1 << 0;
2314
- var SAVE_FORMAT_VERSION = 1;
2331
+ var AmmoType = /* @__PURE__ */ ((AmmoType3) => {
2332
+ AmmoType3[AmmoType3["Bullets"] = 0] = "Bullets";
2333
+ AmmoType3[AmmoType3["Shells"] = 1] = "Shells";
2334
+ AmmoType3[AmmoType3["Rockets"] = 2] = "Rockets";
2335
+ AmmoType3[AmmoType3["Grenades"] = 3] = "Grenades";
2336
+ AmmoType3[AmmoType3["Cells"] = 4] = "Cells";
2337
+ AmmoType3[AmmoType3["Slugs"] = 5] = "Slugs";
2338
+ return AmmoType3;
2339
+ })(AmmoType || {});
2340
+ var AMMO_TYPE_COUNT = Object.keys(AmmoType).length / 2;
2341
+ var SAVE_FORMAT_VERSION = 2;
2315
2342
  var MIN_SUPPORTED_VERSION = 1;
2316
2343
  function ensureObject(value, label) {
2317
2344
  if (!value || typeof value !== "object" || Array.isArray(value)) {
@@ -2513,7 +2540,8 @@ function parseSaveFile(serialized, options = {}) {
2513
2540
  rng: parseRngState(save.rng),
2514
2541
  entities: parseEntitySnapshot(save.entities),
2515
2542
  cvars: parseCvars(save.cvars),
2516
- configstrings: parseConfigstrings(save.configstrings)
2543
+ configstrings: parseConfigstrings(save.configstrings),
2544
+ player: save.player ? save.player : void 0
2517
2545
  };
2518
2546
  }
2519
2547
  var SERIALIZABLE_FIELD_NAMES = new Set(
@@ -2682,16 +2710,6 @@ var _SaveStorage = class _SaveStorage2 {
2682
2710
  _SaveStorage.DEFAULT_DB_NAME = "quake2ts-saves";
2683
2711
  _SaveStorage.DEFAULT_STORE = "saves";
2684
2712
  _SaveStorage.QUICK_SLOT = "quicksave";
2685
- var AmmoType = /* @__PURE__ */ ((AmmoType3) => {
2686
- AmmoType3[AmmoType3["Bullets"] = 0] = "Bullets";
2687
- AmmoType3[AmmoType3["Shells"] = 1] = "Shells";
2688
- AmmoType3[AmmoType3["Rockets"] = 2] = "Rockets";
2689
- AmmoType3[AmmoType3["Grenades"] = 3] = "Grenades";
2690
- AmmoType3[AmmoType3["Cells"] = 4] = "Cells";
2691
- AmmoType3[AmmoType3["Slugs"] = 5] = "Slugs";
2692
- return AmmoType3;
2693
- })(AmmoType || {});
2694
- var AMMO_TYPE_COUNT = Object.keys(AmmoType).length / 2;
2695
2713
  var ZERO_VEC322 = { x: 0, y: 0, z: 0 };
2696
2714
  function createGame(engine, options) {
2697
2715
  const gravity = options.gravity;