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
|
@@ -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
|
|
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;
|