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.
- package/apps/viewer/dist/browser/index.global.js +1 -1
- package/apps/viewer/dist/browser/index.global.js.map +1 -1
- package/apps/viewer/dist/cjs/index.cjs +33 -15
- package/apps/viewer/dist/cjs/index.cjs.map +1 -1
- package/apps/viewer/dist/esm/index.js +33 -15
- package/apps/viewer/dist/esm/index.js.map +1 -1
- package/apps/viewer/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/packages/game/dist/browser/index.global.js +1 -1
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +458 -390
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +454 -390
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/callbacks.d.ts +6 -0
- package/packages/game/dist/types/entities/callbacks.d.ts.map +1 -0
- package/packages/game/dist/types/entities/index.d.ts +1 -0
- package/packages/game/dist/types/entities/index.d.ts.map +1 -1
- package/packages/game/dist/types/entities/system.d.ts +5 -3
- package/packages/game/dist/types/entities/system.d.ts.map +1 -1
- package/packages/game/dist/types/inventory/playerInventory.d.ts +10 -0
- package/packages/game/dist/types/inventory/playerInventory.d.ts.map +1 -1
- package/packages/game/dist/types/save/save.d.ts +7 -2
- package/packages/game/dist/types/save/save.d.ts.map +1 -1
- package/packages/game/dist/types/save/tests/callbacks.test.d.ts +2 -0
- package/packages/game/dist/types/save/tests/callbacks.test.d.ts.map +1 -0
- package/packages/game/dist/types/save/tests/playerInventory.test.d.ts +2 -0
- 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
|
|
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;
|