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
@@ -1846,7 +1846,7 @@ function boundsIntersect(a, b) {
1846
1846
  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);
1847
1847
  }
1848
1848
  var SERIALIZABLE_FIELDS = ENTITY_FIELD_METADATA.filter(
1849
- (field) => field.save
1849
+ (field) => field.save || field.type === "callback"
1850
1850
  );
1851
1851
  var DESCRIPTORS = new Map(SERIALIZABLE_FIELDS.map((descriptor) => [descriptor.name, descriptor]));
1852
1852
  function serializeVec3(vec) {
@@ -1877,12 +1877,18 @@ function deserializeInventory(value) {
1877
1877
  return parsed;
1878
1878
  }
1879
1879
  var EntitySystem = class {
1880
- constructor(maxEntities) {
1880
+ constructor(maxEntities, callbackRegistry) {
1881
1881
  this.targetNameIndex = /* @__PURE__ */ new Map();
1882
1882
  this.random = createRandomGenerator();
1883
1883
  this.currentTimeSeconds = 0;
1884
1884
  this.pool = new EntityPool(maxEntities);
1885
1885
  this.thinkScheduler = new ThinkScheduler();
1886
+ this.callbackToName = /* @__PURE__ */ new Map();
1887
+ if (callbackRegistry) {
1888
+ for (const [name, fn] of callbackRegistry.entries()) {
1889
+ this.callbackToName.set(fn, name);
1890
+ }
1891
+ }
1886
1892
  }
1887
1893
  get world() {
1888
1894
  return this.pool.world;
@@ -2007,6 +2013,9 @@ var EntitySystem = class {
2007
2013
  case "inventory":
2008
2014
  fields[descriptor.name] = serializeInventory(value);
2009
2015
  break;
2016
+ case "callback":
2017
+ fields[descriptor.name] = value ? this.callbackToName.get(value) ?? null : null;
2018
+ break;
2010
2019
  default:
2011
2020
  fields[descriptor.name] = value ?? null;
2012
2021
  break;
@@ -2024,7 +2033,7 @@ var EntitySystem = class {
2024
2033
  thinks: this.thinkScheduler.snapshot()
2025
2034
  };
2026
2035
  }
2027
- restore(snapshot) {
2036
+ restore(snapshot, callbackRegistry) {
2028
2037
  this.currentTimeSeconds = snapshot.timeSeconds;
2029
2038
  this.pool.restore(snapshot.pool);
2030
2039
  const indexToEntity = /* @__PURE__ */ new Map();
@@ -2059,6 +2068,14 @@ var EntitySystem = class {
2059
2068
  case "boolean":
2060
2069
  assignField(entity, name, Boolean(value));
2061
2070
  break;
2071
+ case "callback":
2072
+ if (value) {
2073
+ const callback = callbackRegistry?.get(value);
2074
+ if (callback) {
2075
+ assignField(entity, name, callback);
2076
+ }
2077
+ }
2078
+ break;
2062
2079
  default:
2063
2080
  assignField(entity, name, value);
2064
2081
  break;
@@ -2337,7 +2354,17 @@ var LevelClock = class {
2337
2354
  var FL_NOTARGET = 1 << 5;
2338
2355
  var FL_NOVISIBLE = 1 << 24;
2339
2356
  var SPAWNFLAG_MONSTER_AMBUSH = 1 << 0;
2340
- var SAVE_FORMAT_VERSION = 1;
2357
+ var AmmoType = /* @__PURE__ */ ((AmmoType3) => {
2358
+ AmmoType3[AmmoType3["Bullets"] = 0] = "Bullets";
2359
+ AmmoType3[AmmoType3["Shells"] = 1] = "Shells";
2360
+ AmmoType3[AmmoType3["Rockets"] = 2] = "Rockets";
2361
+ AmmoType3[AmmoType3["Grenades"] = 3] = "Grenades";
2362
+ AmmoType3[AmmoType3["Cells"] = 4] = "Cells";
2363
+ AmmoType3[AmmoType3["Slugs"] = 5] = "Slugs";
2364
+ return AmmoType3;
2365
+ })(AmmoType || {});
2366
+ var AMMO_TYPE_COUNT = Object.keys(AmmoType).length / 2;
2367
+ var SAVE_FORMAT_VERSION = 2;
2341
2368
  var MIN_SUPPORTED_VERSION = 1;
2342
2369
  function ensureObject(value, label) {
2343
2370
  if (!value || typeof value !== "object" || Array.isArray(value)) {
@@ -2539,7 +2566,8 @@ function parseSaveFile(serialized, options = {}) {
2539
2566
  rng: parseRngState(save.rng),
2540
2567
  entities: parseEntitySnapshot(save.entities),
2541
2568
  cvars: parseCvars(save.cvars),
2542
- configstrings: parseConfigstrings(save.configstrings)
2569
+ configstrings: parseConfigstrings(save.configstrings),
2570
+ player: save.player ? save.player : void 0
2543
2571
  };
2544
2572
  }
2545
2573
  var SERIALIZABLE_FIELD_NAMES = new Set(
@@ -2708,16 +2736,6 @@ var _SaveStorage = class _SaveStorage2 {
2708
2736
  _SaveStorage.DEFAULT_DB_NAME = "quake2ts-saves";
2709
2737
  _SaveStorage.DEFAULT_STORE = "saves";
2710
2738
  _SaveStorage.QUICK_SLOT = "quicksave";
2711
- var AmmoType = /* @__PURE__ */ ((AmmoType3) => {
2712
- AmmoType3[AmmoType3["Bullets"] = 0] = "Bullets";
2713
- AmmoType3[AmmoType3["Shells"] = 1] = "Shells";
2714
- AmmoType3[AmmoType3["Rockets"] = 2] = "Rockets";
2715
- AmmoType3[AmmoType3["Grenades"] = 3] = "Grenades";
2716
- AmmoType3[AmmoType3["Cells"] = 4] = "Cells";
2717
- AmmoType3[AmmoType3["Slugs"] = 5] = "Slugs";
2718
- return AmmoType3;
2719
- })(AmmoType || {});
2720
- var AMMO_TYPE_COUNT = Object.keys(AmmoType).length / 2;
2721
2739
  var ZERO_VEC322 = { x: 0, y: 0, z: 0 };
2722
2740
  function createGame(engine, options) {
2723
2741
  const gravity = options.gravity;