quake2ts 0.0.7 → 0.0.39
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/README.md +425 -0
- 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 +2097 -295
- package/apps/viewer/dist/cjs/index.cjs.map +1 -1
- package/apps/viewer/dist/esm/index.js +2097 -295
- package/apps/viewer/dist/esm/index.js.map +1 -1
- package/apps/viewer/dist/tsconfig.tsbuildinfo +1 -1
- package/apps/viewer/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +1 -1
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +1200 -13
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +1186 -12
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/index.d.ts +14 -6
- package/packages/client/dist/types/index.d.ts.map +1 -1
- package/packages/client/dist/types/input/bindings.d.ts +18 -0
- package/packages/client/dist/types/input/bindings.d.ts.map +1 -0
- package/packages/client/dist/types/input/command-buffer.d.ts +15 -0
- package/packages/client/dist/types/input/command-buffer.d.ts.map +1 -0
- package/packages/client/dist/types/input/controller.d.ts +125 -0
- package/packages/client/dist/types/input/controller.d.ts.map +1 -0
- package/packages/client/dist/types/prediction.d.ts +38 -0
- package/packages/client/dist/types/prediction.d.ts.map +1 -0
- package/packages/client/dist/types/view-effects.d.ts +41 -0
- package/packages/client/dist/types/view-effects.d.ts.map +1 -0
- package/packages/engine/dist/browser/index.global.js +257 -1
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +2408 -2
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +2340 -2
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/assets/animation.d.ts +33 -0
- package/packages/engine/dist/types/assets/animation.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/audio.d.ts +21 -0
- package/packages/engine/dist/types/assets/audio.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/bsp.d.ts +1 -1
- package/packages/engine/dist/types/assets/bsp.d.ts.map +1 -1
- package/packages/engine/dist/types/assets/ingestion.d.ts +31 -0
- package/packages/engine/dist/types/assets/ingestion.d.ts.map +1 -1
- package/packages/engine/dist/types/assets/manager.d.ts +43 -0
- package/packages/engine/dist/types/assets/manager.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/md3.d.ts +69 -0
- package/packages/engine/dist/types/assets/md3.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/ogg.d.ts +12 -0
- package/packages/engine/dist/types/assets/ogg.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/pakIndexStore.d.ts +19 -0
- package/packages/engine/dist/types/assets/pakIndexStore.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/pakValidation.d.ts +28 -0
- package/packages/engine/dist/types/assets/pakValidation.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/pcx.d.ts +13 -0
- package/packages/engine/dist/types/assets/pcx.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/texture.d.ts +29 -0
- package/packages/engine/dist/types/assets/texture.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/wal.d.ts +21 -0
- package/packages/engine/dist/types/assets/wal.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/wav.d.ts +11 -0
- package/packages/engine/dist/types/assets/wav.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/api.d.ts +29 -0
- package/packages/engine/dist/types/audio/api.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/channels.d.ts +15 -0
- package/packages/engine/dist/types/audio/channels.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/constants.d.ts +24 -0
- package/packages/engine/dist/types/audio/constants.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/context.d.ts +67 -0
- package/packages/engine/dist/types/audio/context.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/music.d.ts +42 -0
- package/packages/engine/dist/types/audio/music.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/precache.d.ts +28 -0
- package/packages/engine/dist/types/audio/precache.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/registry.d.ts +13 -0
- package/packages/engine/dist/types/audio/registry.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/spatialization.d.ts +14 -0
- package/packages/engine/dist/types/audio/spatialization.d.ts.map +1 -0
- package/packages/engine/dist/types/audio/system.d.ts +101 -0
- package/packages/engine/dist/types/audio/system.d.ts.map +1 -0
- package/packages/engine/dist/types/configstrings.d.ts +1 -0
- package/packages/engine/dist/types/configstrings.d.ts.map +1 -1
- package/packages/engine/dist/types/index.d.ts +26 -1
- package/packages/engine/dist/types/index.d.ts.map +1 -1
- package/packages/engine/dist/types/render/bspPipeline.d.ts +42 -0
- package/packages/engine/dist/types/render/bspPipeline.d.ts.map +1 -0
- package/packages/engine/dist/types/render/bspTraversal.d.ts +11 -0
- package/packages/engine/dist/types/render/bspTraversal.d.ts.map +1 -0
- package/packages/engine/dist/types/render/culling.d.ts +8 -0
- package/packages/engine/dist/types/render/culling.d.ts.map +1 -0
- package/packages/engine/dist/types/render/md2Pipeline.d.ts +51 -0
- package/packages/engine/dist/types/render/md2Pipeline.d.ts.map +1 -0
- package/packages/engine/dist/types/render/resources.d.ts +10 -0
- package/packages/engine/dist/types/render/resources.d.ts.map +1 -1
- package/packages/engine/dist/types/render/skybox.d.ts +26 -0
- package/packages/engine/dist/types/render/skybox.d.ts.map +1 -0
- 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 +2926 -116
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +2863 -115
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/ai/constants.d.ts +13 -0
- package/packages/game/dist/types/ai/constants.d.ts.map +1 -0
- package/packages/game/dist/types/ai/index.d.ts +4 -0
- package/packages/game/dist/types/ai/index.d.ts.map +1 -0
- package/packages/game/dist/types/ai/movement.d.ts +20 -0
- package/packages/game/dist/types/ai/movement.d.ts.map +1 -0
- package/packages/game/dist/types/ai/perception.d.ts +21 -0
- package/packages/game/dist/types/ai/perception.d.ts.map +1 -0
- package/packages/game/dist/types/checksum.d.ts +3 -0
- package/packages/game/dist/types/checksum.d.ts.map +1 -0
- package/packages/game/dist/types/combat/armor.d.ts +39 -0
- package/packages/game/dist/types/combat/armor.d.ts.map +1 -0
- package/packages/game/dist/types/combat/damage.d.ts +52 -0
- package/packages/game/dist/types/combat/damage.d.ts.map +1 -0
- package/packages/game/dist/types/combat/damageFlags.d.ts +15 -0
- package/packages/game/dist/types/combat/damageFlags.d.ts.map +1 -0
- package/packages/game/dist/types/combat/damageMods.d.ts +79 -0
- package/packages/game/dist/types/combat/damageMods.d.ts.map +1 -0
- package/packages/game/dist/types/combat/index.d.ts +6 -0
- package/packages/game/dist/types/combat/index.d.ts.map +1 -0
- package/packages/game/dist/types/combat/specialDamage.d.ts +88 -0
- package/packages/game/dist/types/combat/specialDamage.d.ts.map +1 -0
- package/packages/game/dist/types/entities/entity.d.ts +46 -2
- package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
- package/packages/game/dist/types/entities/index.d.ts +6 -2
- package/packages/game/dist/types/entities/index.d.ts.map +1 -1
- package/packages/game/dist/types/entities/pool.d.ts +9 -0
- package/packages/game/dist/types/entities/pool.d.ts.map +1 -1
- package/packages/game/dist/types/entities/spawn.d.ts +27 -0
- package/packages/game/dist/types/entities/spawn.d.ts.map +1 -0
- package/packages/game/dist/types/entities/system.d.ts +32 -1
- package/packages/game/dist/types/entities/system.d.ts.map +1 -1
- package/packages/game/dist/types/entities/thinkScheduler.d.ts +6 -0
- package/packages/game/dist/types/entities/thinkScheduler.d.ts.map +1 -1
- package/packages/game/dist/types/entities/triggers.d.ts +3 -0
- package/packages/game/dist/types/entities/triggers.d.ts.map +1 -0
- package/packages/game/dist/types/entities/utils.d.ts +4 -0
- package/packages/game/dist/types/entities/utils.d.ts.map +1 -0
- package/packages/game/dist/types/index.d.ts +5 -0
- package/packages/game/dist/types/index.d.ts.map +1 -1
- package/packages/game/dist/types/inventory/ammo.d.ts +17 -0
- package/packages/game/dist/types/inventory/ammo.d.ts.map +1 -0
- package/packages/game/dist/types/inventory/index.d.ts +2 -0
- package/packages/game/dist/types/inventory/index.d.ts.map +1 -0
- package/packages/game/dist/types/level.d.ts +1 -0
- package/packages/game/dist/types/level.d.ts.map +1 -1
- package/packages/game/dist/types/save/index.d.ts +4 -0
- package/packages/game/dist/types/save/index.d.ts.map +1 -0
- package/packages/game/dist/types/save/rerelease.d.ts +25 -0
- package/packages/game/dist/types/save/rerelease.d.ts.map +1 -0
- package/packages/game/dist/types/save/save.d.ts +49 -0
- package/packages/game/dist/types/save/save.d.ts.map +1 -0
- package/packages/game/dist/types/save/storage.d.ts +37 -0
- package/packages/game/dist/types/save/storage.d.ts.map +1 -0
- package/packages/shared/dist/browser/index.global.js +1 -1
- package/packages/shared/dist/browser/index.global.js.map +1 -1
- package/packages/shared/dist/cjs/index.cjs +638 -9
- package/packages/shared/dist/cjs/index.cjs.map +1 -1
- package/packages/shared/dist/esm/index.js +616 -9
- package/packages/shared/dist/esm/index.js.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/bsp/collision.d.ts +56 -0
- package/packages/shared/dist/types/bsp/collision.d.ts.map +1 -1
- package/packages/shared/dist/types/bsp/contents.d.ts +1 -0
- package/packages/shared/dist/types/bsp/contents.d.ts.map +1 -1
- package/packages/shared/dist/types/index.d.ts +2 -0
- package/packages/shared/dist/types/index.d.ts.map +1 -1
- package/packages/shared/dist/types/math/random.d.ts +11 -0
- package/packages/shared/dist/types/math/random.d.ts.map +1 -1
- package/packages/shared/dist/types/protocol/contracts.d.ts +17 -0
- package/packages/shared/dist/types/protocol/contracts.d.ts.map +1 -0
- package/packages/shared/dist/types/protocol/usercmd.d.ts +30 -0
- package/packages/shared/dist/types/protocol/usercmd.d.ts.map +1 -0
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -17,6 +17,25 @@ export declare enum Solid {
|
|
|
17
17
|
BoundingBox = 2,
|
|
18
18
|
Bsp = 3
|
|
19
19
|
}
|
|
20
|
+
export declare enum ServerFlags {
|
|
21
|
+
None = 0,
|
|
22
|
+
NoClient = 1,
|
|
23
|
+
DeadMonster = 2,
|
|
24
|
+
Monster = 4,
|
|
25
|
+
Player = 8,
|
|
26
|
+
Bot = 16,
|
|
27
|
+
NoBots = 32,
|
|
28
|
+
Respawning = 64,
|
|
29
|
+
Projectile = 128,
|
|
30
|
+
Instanced = 256,
|
|
31
|
+
Door = 512,
|
|
32
|
+
NoCull = 1024,
|
|
33
|
+
Hull = 2048
|
|
34
|
+
}
|
|
35
|
+
export declare enum EntityFlags {
|
|
36
|
+
Fly = 1,
|
|
37
|
+
Swim = 2
|
|
38
|
+
}
|
|
20
39
|
export declare enum DeadFlag {
|
|
21
40
|
Alive = 0,
|
|
22
41
|
Dying = 1,
|
|
@@ -25,15 +44,18 @@ export declare enum DeadFlag {
|
|
|
25
44
|
}
|
|
26
45
|
export type ThinkCallback = (self: Entity) => void;
|
|
27
46
|
export type TouchCallback = (self: Entity, other: Entity | null) => void;
|
|
28
|
-
export type UseCallback = (self: Entity, other: Entity | null) => void;
|
|
47
|
+
export type UseCallback = (self: Entity, other: Entity | null, activator?: Entity | null) => void;
|
|
29
48
|
export type PainCallback = (self: Entity, other: Entity | null, kick: number, damage: number) => void;
|
|
30
49
|
export type DieCallback = (self: Entity, inflictor: Entity | null, attacker: Entity | null, damage: number) => void;
|
|
31
|
-
export type EntityFieldType = 'int' | 'float' | 'string' | 'vec3' | 'boolean' | 'entity' | 'callback';
|
|
50
|
+
export type EntityFieldType = 'int' | 'float' | 'string' | 'vec3' | 'boolean' | 'entity' | 'inventory' | 'callback';
|
|
32
51
|
export interface EntityFieldDescriptor<K extends keyof Entity = keyof Entity> {
|
|
33
52
|
readonly name: K;
|
|
34
53
|
readonly type: EntityFieldType;
|
|
35
54
|
readonly save: boolean;
|
|
36
55
|
}
|
|
56
|
+
export interface MonsterInfo {
|
|
57
|
+
aiflags: number;
|
|
58
|
+
}
|
|
37
59
|
export declare class Entity {
|
|
38
60
|
readonly index: number;
|
|
39
61
|
inUse: boolean;
|
|
@@ -44,19 +66,26 @@ export declare class Entity {
|
|
|
44
66
|
spawnflags: number;
|
|
45
67
|
target?: string;
|
|
46
68
|
targetname?: string;
|
|
69
|
+
killtarget?: string;
|
|
47
70
|
team?: string;
|
|
48
71
|
message?: string;
|
|
72
|
+
pathtarget?: string;
|
|
73
|
+
model?: string;
|
|
74
|
+
item?: string;
|
|
75
|
+
inventory: Record<string, number>;
|
|
49
76
|
origin: Vec3;
|
|
50
77
|
old_origin: Vec3;
|
|
51
78
|
velocity: Vec3;
|
|
52
79
|
avelocity: Vec3;
|
|
53
80
|
angles: Vec3;
|
|
81
|
+
viewheight: number;
|
|
54
82
|
mins: Vec3;
|
|
55
83
|
maxs: Vec3;
|
|
56
84
|
size: Vec3;
|
|
57
85
|
mass: number;
|
|
58
86
|
gravity: number;
|
|
59
87
|
movetype: MoveType;
|
|
88
|
+
movedir: Vec3;
|
|
60
89
|
modelindex: number;
|
|
61
90
|
frame: number;
|
|
62
91
|
skin: number;
|
|
@@ -66,12 +95,25 @@ export declare class Entity {
|
|
|
66
95
|
max_health: number;
|
|
67
96
|
takedamage: boolean;
|
|
68
97
|
dmg: number;
|
|
98
|
+
speed: number;
|
|
69
99
|
deadflag: DeadFlag;
|
|
100
|
+
count: number;
|
|
101
|
+
wait: number;
|
|
102
|
+
delay: number;
|
|
103
|
+
timestamp: number;
|
|
104
|
+
sounds: number;
|
|
105
|
+
noise_index: number;
|
|
106
|
+
fly_sound_debounce_time: number;
|
|
70
107
|
enemy: Entity | null;
|
|
71
108
|
movetarget: Entity | null;
|
|
109
|
+
target_ent: Entity | null;
|
|
72
110
|
goalentity: Entity | null;
|
|
73
111
|
ideal_yaw: number;
|
|
74
112
|
yaw_speed: number;
|
|
113
|
+
search_time: number;
|
|
114
|
+
attack_finished_time: number;
|
|
115
|
+
pain_finished_time: number;
|
|
116
|
+
trail_time: number;
|
|
75
117
|
groundentity: Entity | null;
|
|
76
118
|
groundentity_linkcount: number;
|
|
77
119
|
waterlevel: number;
|
|
@@ -82,9 +124,11 @@ export declare class Entity {
|
|
|
82
124
|
use?: UseCallback;
|
|
83
125
|
pain?: PainCallback;
|
|
84
126
|
die?: DieCallback;
|
|
127
|
+
activator: Entity | null;
|
|
85
128
|
solid: Solid;
|
|
86
129
|
flags: number;
|
|
87
130
|
svflags: number;
|
|
131
|
+
monsterinfo: MonsterInfo;
|
|
88
132
|
constructor(index: number);
|
|
89
133
|
reset(): void;
|
|
90
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/entities/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,IAAI;IACR,GAAG,IAAI;IACP,IAAI,IAAI;IACR,UAAU,IAAI;IACd,MAAM,IAAI;CACX;AAED,oBAAY,KAAK;IACf,GAAG,IAAI;IACP,OAAO,IAAI;IACX,WAAW,IAAI;IACf,GAAG,IAAI;CACR;AAED,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,IAAI,IAAI;IACR,WAAW,IAAI;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AACzE,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/entities/entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
export { Entity, type DieCallback, type EntityFieldDescriptor, type EntityFieldType, type PainCallback, type ThinkCallback, type TouchCallback, type UseCallback, MoveType, Solid, DeadFlag, ENTITY_FIELD_METADATA, } from './entity.js';
|
|
2
|
-
export { EntitySystem } from './system.js';
|
|
1
|
+
export { Entity, type DieCallback, type EntityFieldDescriptor, type EntityFieldType, type PainCallback, type ThinkCallback, type TouchCallback, type UseCallback, type MonsterInfo, MoveType, Solid, ServerFlags, DeadFlag, ENTITY_FIELD_METADATA, } from './entity.js';
|
|
2
|
+
export { EntitySystem, type EntitySystemSnapshot, type SerializedEntityState } from './system.js';
|
|
3
|
+
export { type EntityPoolSnapshot } from './pool.js';
|
|
4
|
+
export { type ThinkScheduleEntry } from './thinkScheduler.js';
|
|
5
|
+
export { applyEntityKeyValues, createDefaultSpawnRegistry, parseEntityLump, registerDefaultSpawns, spawnEntitiesFromText, spawnEntityFromDictionary, SpawnRegistry, type ParsedEntity, type SpawnOptions, type SpawnContext, type SpawnFunction, } from './spawn.js';
|
|
6
|
+
export { isZeroVector, setMovedir } from './utils.js';
|
|
3
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAQ,EACR,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { Entity } from './entity.js';
|
|
2
|
+
export interface EntityPoolSnapshot {
|
|
3
|
+
readonly capacity: number;
|
|
4
|
+
readonly activeOrder: readonly number[];
|
|
5
|
+
readonly freeList: readonly number[];
|
|
6
|
+
readonly pendingFree: readonly number[];
|
|
7
|
+
}
|
|
2
8
|
export declare class EntityPool implements Iterable<Entity> {
|
|
3
9
|
private readonly entities;
|
|
4
10
|
private readonly freeList;
|
|
@@ -11,7 +17,10 @@ export declare class EntityPool implements Iterable<Entity> {
|
|
|
11
17
|
[Symbol.iterator](): Iterator<Entity>;
|
|
12
18
|
spawn(): Entity;
|
|
13
19
|
deferFree(entity: Entity): void;
|
|
20
|
+
freeImmediate(entity: Entity): void;
|
|
14
21
|
flushFreeList(): void;
|
|
22
|
+
createSnapshot(): EntityPoolSnapshot;
|
|
23
|
+
restore(snapshot: EntityPoolSnapshot): void;
|
|
15
24
|
private link;
|
|
16
25
|
private unlink;
|
|
17
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/entities/pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC,qBAAa,UAAW,YAAW,QAAQ,CAAC,MAAM,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,UAAU,CAAuB;gBAE7B,WAAW,SAAa;IAoBpC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;IAcrC,KAAK,IAAI,MAAM;IAaf,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAe/B,aAAa,IAAI,IAAI;IAcrB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,MAAM;CAcf"}
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/entities/pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,qBAAa,UAAW,YAAW,QAAQ,CAAC,MAAM,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,UAAU,CAAuB;gBAE7B,WAAW,SAAa;IAoBpC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;IAcrC,KAAK,IAAI,MAAM;IAaf,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAe/B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAcnC,aAAa,IAAI,IAAI;IAcrB,cAAc,IAAI,kBAAkB;IAUpC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IA+D3C,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,MAAM;CAcf"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Entity } from './entity.js';
|
|
2
|
+
import type { EntitySystem } from './system.js';
|
|
3
|
+
export type ParsedEntity = Record<string, string>;
|
|
4
|
+
export declare function applyEntityKeyValues(entity: Entity, values: ParsedEntity): void;
|
|
5
|
+
export declare function parseEntityLump(text: string): ParsedEntity[];
|
|
6
|
+
export interface SpawnContext {
|
|
7
|
+
readonly keyValues: ParsedEntity;
|
|
8
|
+
readonly entities: EntitySystem;
|
|
9
|
+
warn(message: string): void;
|
|
10
|
+
free(entity: Entity): void;
|
|
11
|
+
}
|
|
12
|
+
export type SpawnFunction = (entity: Entity, context: SpawnContext) => void;
|
|
13
|
+
export declare class SpawnRegistry {
|
|
14
|
+
private readonly registry;
|
|
15
|
+
register(classname: string, spawn: SpawnFunction): void;
|
|
16
|
+
get(classname: string): SpawnFunction | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface SpawnOptions {
|
|
19
|
+
readonly registry: SpawnRegistry;
|
|
20
|
+
readonly entities: EntitySystem;
|
|
21
|
+
readonly onWarning?: (message: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare function spawnEntityFromDictionary(dictionary: ParsedEntity, options: SpawnOptions): Entity | null;
|
|
24
|
+
export declare function spawnEntitiesFromText(text: string, options: SpawnOptions): Entity[];
|
|
25
|
+
export declare function registerDefaultSpawns(registry: SpawnRegistry): void;
|
|
26
|
+
export declare function createDefaultSpawnRegistry(): SpawnRegistry;
|
|
27
|
+
//# sourceMappingURL=spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/entities/spawn.ts"],"names":[],"mappings":"AACA,OAAO,EAAqD,MAAM,EAAmB,MAAM,aAAa,CAAC;AAEzG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAwClD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA0B/E;AA2CD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAyC5D;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAE5E,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAE7D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAIvD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;CAGlD;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAuCxG;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAYnF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAgCnE;AAED,wBAAgB,0BAA0B,IAAI,aAAa,CAI1D"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
import { Entity } from './entity.js';
|
|
1
|
+
import { ENTITY_FIELD_METADATA, Entity } from './entity.js';
|
|
2
|
+
import { type EntityPoolSnapshot } from './pool.js';
|
|
3
|
+
import { type ThinkScheduleEntry } from './thinkScheduler.js';
|
|
4
|
+
type SerializableVec3 = readonly [number, number, number];
|
|
5
|
+
type SerializableInventory = Record<string, number>;
|
|
6
|
+
type SerializableEntityFieldValue = number | string | boolean | null | SerializableVec3 | SerializableInventory;
|
|
7
|
+
type SerializableFieldName = Exclude<(typeof ENTITY_FIELD_METADATA)[number]['name'], 'think' | 'touch' | 'use' | 'pain' | 'die' | 'index'>;
|
|
8
|
+
export interface SerializedEntityState {
|
|
9
|
+
readonly index: number;
|
|
10
|
+
readonly fields: Partial<Record<SerializableFieldName, SerializableEntityFieldValue>>;
|
|
11
|
+
}
|
|
12
|
+
export interface EntitySystemSnapshot {
|
|
13
|
+
readonly timeSeconds: number;
|
|
14
|
+
readonly pool: EntityPoolSnapshot;
|
|
15
|
+
readonly entities: SerializedEntityState[];
|
|
16
|
+
readonly thinks: ThinkScheduleEntry[];
|
|
17
|
+
}
|
|
2
18
|
export declare class EntitySystem {
|
|
3
19
|
private readonly pool;
|
|
4
20
|
private readonly thinkScheduler;
|
|
21
|
+
private readonly targetNameIndex;
|
|
22
|
+
private readonly random;
|
|
5
23
|
private currentTimeSeconds;
|
|
6
24
|
constructor(maxEntities?: number);
|
|
7
25
|
get world(): Entity;
|
|
@@ -10,9 +28,22 @@ export declare class EntitySystem {
|
|
|
10
28
|
forEachEntity(callback: (entity: Entity) => void): void;
|
|
11
29
|
spawn(): Entity;
|
|
12
30
|
free(entity: Entity): void;
|
|
31
|
+
freeImmediate(entity: Entity): void;
|
|
13
32
|
scheduleThink(entity: Entity, nextThinkSeconds: number): void;
|
|
14
33
|
beginFrame(timeSeconds: number): void;
|
|
34
|
+
finalizeSpawn(entity: Entity): void;
|
|
35
|
+
findByClassname(classname: string): Entity[];
|
|
36
|
+
findByTargetName(targetname: string): Entity[];
|
|
37
|
+
pickTarget(targetname: string | undefined): Entity | null;
|
|
38
|
+
killBox(entity: Entity): void;
|
|
39
|
+
useTargets(entity: Entity, activator?: Entity | null): void;
|
|
15
40
|
runFrame(): void;
|
|
41
|
+
createSnapshot(): EntitySystemSnapshot;
|
|
42
|
+
restore(snapshot: EntitySystemSnapshot): void;
|
|
16
43
|
private runTouches;
|
|
44
|
+
private registerTarget;
|
|
45
|
+
private unregisterTarget;
|
|
46
|
+
private useTargetsImmediate;
|
|
17
47
|
}
|
|
48
|
+
export {};
|
|
18
49
|
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/entities/system.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/entities/system.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,qBAAqB,EACrB,MAAM,EAIP,MAAM,aAAa,CAAC;AACrB,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAiC9E,KAAK,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE1D,KAAK,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,KAAK,4BAA4B,GAC7B,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,gBAAgB,GAChB,qBAAqB,CAAC;AAE1B,KAAK,qBAAqB,GAAG,OAAO,CAClC,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAC9C,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CACrD,CAAC;AAQF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,CAAC,CAAC;CACvF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;CACvC;AAoCD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,kBAAkB,CAAK;gBAEnB,WAAW,CAAC,EAAE,MAAM;IAKhC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAMvD,KAAK,IAAI,MAAM;IAIf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM1B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMnC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAI7D,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIrC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOnC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAU5C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAQ9C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI;IAYzD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAqB7B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;IAkBjE,QAAQ,IAAI,IAAI;IAMhB,cAAc,IAAI,oBAAoB;IAmCtC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IA2D7C,OAAO,CAAC,UAAU;IAsClB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;CAmB5B"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type { Entity } from './entity.js';
|
|
2
|
+
export interface ThinkScheduleEntry {
|
|
3
|
+
readonly time: number;
|
|
4
|
+
readonly entityIndex: number;
|
|
5
|
+
}
|
|
2
6
|
export declare class ThinkScheduler {
|
|
3
7
|
private readonly queue;
|
|
4
8
|
schedule(entity: Entity, timeSeconds: number): void;
|
|
5
9
|
cancel(entity: Entity): void;
|
|
10
|
+
snapshot(): ThinkScheduleEntry[];
|
|
11
|
+
restore(entries: ThinkScheduleEntry[], resolver: (index: number) => Entity | undefined): void;
|
|
6
12
|
runDueThinks(currentTimeSeconds: number): void;
|
|
7
13
|
}
|
|
8
14
|
//# sourceMappingURL=thinkScheduler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinkScheduler.d.ts","sourceRoot":"","sources":["../../../src/entities/thinkScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAO1C,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAE9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAMnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAW5B,YAAY,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;CAsB/C"}
|
|
1
|
+
{"version":3,"file":"thinkScheduler.d.ts","sourceRoot":"","sources":["../../../src/entities/thinkScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAO1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAE9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAMnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAW5B,QAAQ,IAAI,kBAAkB,EAAE;IAIhC,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI;IAW7F,YAAY,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;CAsB/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../../src/entities/triggers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4mBhD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAanE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entities/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAY7C,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAElD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAQ7C"}
|
|
@@ -3,6 +3,7 @@ import type { Vec3 } from '@quake2ts/shared';
|
|
|
3
3
|
import { EntitySystem } from './entities/index.js';
|
|
4
4
|
import { type LevelFrameState } from './level.js';
|
|
5
5
|
export * from './entities/index.js';
|
|
6
|
+
export * from './ai/index.js';
|
|
6
7
|
export interface GameCreateOptions {
|
|
7
8
|
gravity: Vec3;
|
|
8
9
|
}
|
|
@@ -20,6 +21,10 @@ export interface GameExports extends GameSimulation<GameStateSnapshot> {
|
|
|
20
21
|
spawnWorld(): void;
|
|
21
22
|
readonly entities: EntitySystem;
|
|
22
23
|
}
|
|
24
|
+
export { hashGameState } from './checksum.js';
|
|
25
|
+
export * from './save/index.js';
|
|
26
|
+
export * from './combat/index.js';
|
|
27
|
+
export * from './inventory/index.js';
|
|
23
28
|
export declare function createGame(engine: {
|
|
24
29
|
trace(start: Vec3, end: Vec3): unknown;
|
|
25
30
|
}, options: GameCreateOptions): GameExports;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,cAAc,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAI9B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;KACjC,CAAC;CACH;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IACpE,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AAErC,wBAAgB,UAAU,CACxB,MAAM,EAAE;IAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAA;CAAE,EAClD,OAAO,EAAE,iBAAiB,GACzB,WAAW,CAsEb"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum AmmoType {
|
|
2
|
+
Bullets = 0,
|
|
3
|
+
Shells = 1,
|
|
4
|
+
Rockets = 2,
|
|
5
|
+
Grenades = 3,
|
|
6
|
+
Cells = 4,
|
|
7
|
+
Slugs = 5
|
|
8
|
+
}
|
|
9
|
+
export declare const AMMO_TYPE_COUNT: number;
|
|
10
|
+
export type AmmoCaps = readonly number[];
|
|
11
|
+
/**
|
|
12
|
+
* Mirrors the rerelease defaults in p_client.cpp where max ammo counts are
|
|
13
|
+
* seeded to 50, then overridden for select types (bullets/shells/cells).
|
|
14
|
+
*/
|
|
15
|
+
export declare function createBaseAmmoCaps(): number[];
|
|
16
|
+
export declare function clampAmmoCounts(counts: readonly number[], caps: AmmoCaps): number[];
|
|
17
|
+
//# sourceMappingURL=ammo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ammo.d.ts","sourceRoot":"","sources":["../../../src/inventory/ammo.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,MAAM,IAAA;IACN,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE,MAAM,MAAM,QAAQ,GAAG,SAAS,MAAM,EAAE,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAM7C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAYnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inventory/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../src/level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AASD,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA+B;IAE5C,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAUhC,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe;IAWhD,IAAI,OAAO,IAAI,eAAe,CAE7B;
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../src/level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AASD,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA+B;IAE5C,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAUhC,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe;IAWhD,IAAI,OAAO,IAAI,eAAe,CAE7B;IAED,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;CAGtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/save/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type JsonObject = Record<string, unknown>;
|
|
2
|
+
export interface RereleaseGameSave {
|
|
3
|
+
readonly saveVersion: number;
|
|
4
|
+
readonly game: JsonObject & {
|
|
5
|
+
readonly maxclients?: number;
|
|
6
|
+
};
|
|
7
|
+
readonly clients: readonly JsonObject[];
|
|
8
|
+
}
|
|
9
|
+
export interface RereleaseLevelSave {
|
|
10
|
+
readonly saveVersion: number;
|
|
11
|
+
readonly level: JsonObject;
|
|
12
|
+
readonly entities: ReadonlyMap<number, JsonObject>;
|
|
13
|
+
}
|
|
14
|
+
export type RereleaseSave = RereleaseGameSave | RereleaseLevelSave;
|
|
15
|
+
export interface RereleaseSaveSummary {
|
|
16
|
+
readonly version: number;
|
|
17
|
+
readonly kind: 'game' | 'level';
|
|
18
|
+
readonly maxClients?: number;
|
|
19
|
+
readonly clientCount?: number;
|
|
20
|
+
readonly entityCount?: number;
|
|
21
|
+
readonly highestEntityIndex?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function parseRereleaseSave(raw: unknown): RereleaseSave;
|
|
24
|
+
export declare function summarizeRereleaseSave(raw: unknown): RereleaseSaveSummary;
|
|
25
|
+
//# sourceMappingURL=rerelease.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rerelease.d.ts","sourceRoot":"","sources":["../../../src/save/rerelease.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpD;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAmCD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CA0B9D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,CAyBzE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { CvarRegistry } from '@quake2ts/engine';
|
|
2
|
+
import { CvarFlags, type RandomGeneratorState } from '@quake2ts/shared';
|
|
3
|
+
import type { RandomGenerator as RandomGeneratorType } from '@quake2ts/shared';
|
|
4
|
+
import type { EntitySystem, EntitySystemSnapshot } from '../entities/index.js';
|
|
5
|
+
import type { LevelClock, LevelFrameState } from '../level.js';
|
|
6
|
+
export declare const SAVE_FORMAT_VERSION = 1;
|
|
7
|
+
export interface CvarSaveEntry {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly value: string;
|
|
10
|
+
readonly flags: CvarFlags;
|
|
11
|
+
}
|
|
12
|
+
export interface GameSaveFile {
|
|
13
|
+
readonly version: number;
|
|
14
|
+
readonly timestamp: number;
|
|
15
|
+
readonly map: string;
|
|
16
|
+
readonly difficulty: number;
|
|
17
|
+
readonly playtimeSeconds: number;
|
|
18
|
+
readonly gameState: Record<string, unknown>;
|
|
19
|
+
readonly level: LevelFrameState;
|
|
20
|
+
readonly rng: RandomGeneratorState;
|
|
21
|
+
readonly entities: EntitySystemSnapshot;
|
|
22
|
+
readonly cvars: readonly CvarSaveEntry[];
|
|
23
|
+
readonly configstrings: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
export interface SaveCreationOptions {
|
|
26
|
+
readonly map: string;
|
|
27
|
+
readonly difficulty: number;
|
|
28
|
+
readonly playtimeSeconds: number;
|
|
29
|
+
readonly levelState: LevelFrameState;
|
|
30
|
+
readonly entitySystem: EntitySystem;
|
|
31
|
+
readonly rngState: RandomGeneratorState;
|
|
32
|
+
readonly configstrings?: readonly string[];
|
|
33
|
+
readonly cvars?: CvarRegistry;
|
|
34
|
+
readonly gameState?: Record<string, unknown>;
|
|
35
|
+
readonly timestamp?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface SaveApplyTargets {
|
|
38
|
+
readonly levelClock: LevelClock;
|
|
39
|
+
readonly entitySystem: EntitySystem;
|
|
40
|
+
readonly rng: RandomGeneratorType;
|
|
41
|
+
readonly cvars?: CvarRegistry;
|
|
42
|
+
}
|
|
43
|
+
export interface ParseSaveOptions {
|
|
44
|
+
readonly allowNewerVersion?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare function createSaveFile(options: SaveCreationOptions): GameSaveFile;
|
|
47
|
+
export declare function parseSaveFile(serialized: unknown, options?: ParseSaveOptions): GameSaveFile;
|
|
48
|
+
export declare function applySaveFile(save: GameSaveFile, targets: SaveApplyTargets): void;
|
|
49
|
+
//# sourceMappingURL=save.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/save/save.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAmB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,IAAI,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAyB,MAAM,sBAAsB,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE/D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAmPD,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA2BzE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB,GAAG,YAAY,CA2B/F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAKjF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type GameSaveFile, type ParseSaveOptions } from './save.js';
|
|
2
|
+
export interface SaveSlotMetadata {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly map: string;
|
|
6
|
+
readonly difficulty: number;
|
|
7
|
+
readonly playtimeSeconds: number;
|
|
8
|
+
readonly timestamp: number;
|
|
9
|
+
readonly version: number;
|
|
10
|
+
readonly bytes: number;
|
|
11
|
+
}
|
|
12
|
+
type IndexedDbFactory = {
|
|
13
|
+
open(name: string, version?: number): unknown;
|
|
14
|
+
};
|
|
15
|
+
export interface SaveStorageOptions {
|
|
16
|
+
readonly dbName?: string;
|
|
17
|
+
readonly storeName?: string;
|
|
18
|
+
readonly indexedDB?: IndexedDbFactory | null;
|
|
19
|
+
}
|
|
20
|
+
export interface SaveWriteOptions {
|
|
21
|
+
readonly name?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class SaveStorage {
|
|
24
|
+
private static readonly DEFAULT_DB_NAME;
|
|
25
|
+
private static readonly DEFAULT_STORE;
|
|
26
|
+
private static readonly QUICK_SLOT;
|
|
27
|
+
private readonly adapter;
|
|
28
|
+
constructor(options?: SaveStorageOptions);
|
|
29
|
+
save(slotId: string, save: GameSaveFile, options?: SaveWriteOptions): Promise<SaveSlotMetadata>;
|
|
30
|
+
load(slotId: string, options?: ParseSaveOptions): Promise<GameSaveFile>;
|
|
31
|
+
delete(slotId: string): Promise<boolean>;
|
|
32
|
+
list(): Promise<SaveSlotMetadata[]>;
|
|
33
|
+
quickSave(save: GameSaveFile): Promise<SaveSlotMetadata>;
|
|
34
|
+
quickLoad(options?: ParseSaveOptions): Promise<GameSaveFile>;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/save/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AA0ED,KAAK,gBAAgB,GAAG;IAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAyE1E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAoB;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAW;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAe;IAEjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,OAAO,GAAE,kBAAuB;IAWtC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBnG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAS3E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxC,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQnC,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIxD,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;CAGvE"}
|