@sharpee/world-model 0.9.106 → 0.9.109
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/constants/directions.d.ts +1 -89
- package/constants/directions.d.ts.map +1 -1
- package/constants/directions.js +2 -162
- package/constants/directions.js.map +1 -1
- package/entities/entity-types.d.ts +4 -0
- package/entities/entity-types.d.ts.map +1 -1
- package/entities/entity-types.js +6 -0
- package/entities/entity-types.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +3 -3
- package/traits/combatant/combatantTrait.d.ts +3 -0
- package/traits/combatant/combatantTrait.d.ts.map +1 -1
- package/traits/combatant/combatantTrait.js +2 -0
- package/traits/combatant/combatantTrait.js.map +1 -1
- package/traits/concealment/concealedStateTrait.d.ts +59 -0
- package/traits/concealment/concealedStateTrait.d.ts.map +1 -0
- package/traits/concealment/concealedStateTrait.js +63 -0
- package/traits/concealment/concealedStateTrait.js.map +1 -0
- package/traits/concealment/concealedVisibilityBehavior.d.ts +27 -0
- package/traits/concealment/concealedVisibilityBehavior.d.ts.map +1 -0
- package/traits/concealment/concealedVisibilityBehavior.js +44 -0
- package/traits/concealment/concealedVisibilityBehavior.js.map +1 -0
- package/traits/concealment/concealmentTrait.d.ts +54 -0
- package/traits/concealment/concealmentTrait.d.ts.map +1 -0
- package/traits/concealment/concealmentTrait.js +58 -0
- package/traits/concealment/concealmentTrait.js.map +1 -0
- package/traits/concealment/index.d.ts +7 -0
- package/traits/concealment/index.d.ts.map +1 -0
- package/traits/concealment/index.js +23 -0
- package/traits/concealment/index.js.map +1 -0
- package/traits/implementations.d.ts +3 -1
- package/traits/implementations.d.ts.map +1 -1
- package/traits/implementations.js +13 -2
- package/traits/implementations.js.map +1 -1
- package/traits/index.d.ts +3 -0
- package/traits/index.d.ts.map +1 -1
- package/traits/index.js +4 -0
- package/traits/index.js.map +1 -1
- package/traits/region/index.d.ts +6 -0
- package/traits/region/index.d.ts.map +1 -0
- package/traits/region/index.js +10 -0
- package/traits/region/index.js.map +1 -0
- package/traits/region/regionTrait.d.ts +49 -0
- package/traits/region/regionTrait.d.ts.map +1 -0
- package/traits/region/regionTrait.js +43 -0
- package/traits/region/regionTrait.js.map +1 -0
- package/traits/room/roomBehavior.js +1 -1
- package/traits/room/roomBehavior.js.map +1 -1
- package/traits/room/roomTrait.d.ts +3 -3
- package/traits/room/roomTrait.d.ts.map +1 -1
- package/traits/room/roomTrait.js +2 -2
- package/traits/room/roomTrait.js.map +1 -1
- package/traits/scene/index.d.ts +6 -0
- package/traits/scene/index.d.ts.map +1 -0
- package/traits/scene/index.js +10 -0
- package/traits/scene/index.js.map +1 -0
- package/traits/scene/sceneTrait.d.ts +57 -0
- package/traits/scene/sceneTrait.d.ts.map +1 -0
- package/traits/scene/sceneTrait.js +48 -0
- package/traits/scene/sceneTrait.js.map +1 -0
- package/traits/story-info/storyInfoTrait.d.ts +1 -1
- package/traits/story-info/storyInfoTrait.js +1 -1
- package/traits/trait-types.d.ts +4 -0
- package/traits/trait-types.d.ts.map +1 -1
- package/traits/trait-types.js +10 -1
- package/traits/trait-types.js.map +1 -1
- package/world/AuthorModel.d.ts +11 -3
- package/world/AuthorModel.d.ts.map +1 -1
- package/world/AuthorModel.js +32 -4
- package/world/AuthorModel.js.map +1 -1
- package/world/SpatialIndex.d.ts.map +1 -1
- package/world/SpatialIndex.js +6 -2
- package/world/SpatialIndex.js.map +1 -1
- package/world/WorldModel.d.ts +135 -12
- package/world/WorldModel.d.ts.map +1 -1
- package/world/WorldModel.js +241 -14
- package/world/WorldModel.js.map +1 -1
- package/world/index.d.ts +1 -1
- package/world/index.d.ts.map +1 -1
- package/world/index.js.map +1 -1
package/world/WorldModel.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IFEntity } from '../entities/if-entity';
|
|
2
2
|
import { TraitType } from '../traits/trait-types';
|
|
3
|
-
import { DirectionType
|
|
3
|
+
import { DirectionType } from '../constants/directions';
|
|
4
4
|
import { ISemanticEvent, ISemanticEventSource } from "../../core/index";
|
|
5
5
|
import { IDataStore } from './AuthorModel';
|
|
6
6
|
import { ICapabilityData, ICapabilityRegistration } from './capabilities';
|
|
@@ -10,6 +10,43 @@ import { IScopeRule } from '../scope/scope-rule';
|
|
|
10
10
|
import { EventHandler, EventValidator, EventPreviewer, EventChainHandler, ChainEventOptions } from './WorldEventSystem';
|
|
11
11
|
export type { EventHandler, EventValidator, EventPreviewer, EventChainHandler, ChainEventOptions };
|
|
12
12
|
export { WorldState, WorldConfig, ContentsOptions, WorldChange } from "../../if-domain/index";
|
|
13
|
+
export interface RegionOptions {
|
|
14
|
+
/** Human-readable region name. */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Parent region entity ID for nesting. */
|
|
17
|
+
parentRegionId?: string;
|
|
18
|
+
/** Region-wide ambient sound. */
|
|
19
|
+
ambientSound?: string;
|
|
20
|
+
/** Region-wide ambient smell. */
|
|
21
|
+
ambientSmell?: string;
|
|
22
|
+
/** Whether rooms in this region default to dark. */
|
|
23
|
+
defaultDark?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface SceneOptions {
|
|
26
|
+
/** Human-readable scene name. */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Returns true when the scene should begin. Evaluated each turn when state is 'waiting'. */
|
|
29
|
+
begin: (world: IWorldModel) => boolean;
|
|
30
|
+
/** Returns true when the scene should end. Evaluated each turn when state is 'active'. */
|
|
31
|
+
end: (world: IWorldModel) => boolean;
|
|
32
|
+
/** Whether the scene can activate more than once. Default: false. */
|
|
33
|
+
recurring?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Stored condition closures for a scene (not serializable). */
|
|
36
|
+
export interface SceneConditions {
|
|
37
|
+
begin: (world: IWorldModel) => boolean;
|
|
38
|
+
end: (world: IWorldModel) => boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Result of comparing region hierarchies for two rooms (ADR-149).
|
|
42
|
+
*
|
|
43
|
+
* @param exited - Region IDs exited, innermost first.
|
|
44
|
+
* @param entered - Region IDs entered, outermost first.
|
|
45
|
+
*/
|
|
46
|
+
export interface RegionCrossings {
|
|
47
|
+
exited: string[];
|
|
48
|
+
entered: string[];
|
|
49
|
+
}
|
|
13
50
|
import { ScoreEntry } from './ScoreLedger';
|
|
14
51
|
export { ScoreEntry } from './ScoreLedger';
|
|
15
52
|
export interface IWorldModel {
|
|
@@ -62,6 +99,16 @@ export interface IWorldModel {
|
|
|
62
99
|
isLocked?: boolean;
|
|
63
100
|
keyId?: string;
|
|
64
101
|
}): IFEntity;
|
|
102
|
+
createRegion(id: string, options: RegionOptions): IFEntity;
|
|
103
|
+
assignRoom(roomId: string, regionId: string): void;
|
|
104
|
+
isInRegion(entityId: string, regionId: string): boolean;
|
|
105
|
+
getRegionCrossings(fromRoomId: string, toRoomId: string): RegionCrossings;
|
|
106
|
+
createScene(id: string, options: SceneOptions): IFEntity;
|
|
107
|
+
getSceneConditions(sceneId: string): SceneConditions | undefined;
|
|
108
|
+
getAllSceneConditions(): Map<string, SceneConditions>;
|
|
109
|
+
isSceneActive(sceneId: string): boolean;
|
|
110
|
+
hasSceneEnded(sceneId: string): boolean;
|
|
111
|
+
hasSceneHappened(sceneId: string): boolean;
|
|
65
112
|
awardScore(id: string, points: number, description: string): boolean;
|
|
66
113
|
revokeScore(id: string): boolean;
|
|
67
114
|
hasScore(id: string): boolean;
|
|
@@ -102,7 +149,6 @@ export interface IWorldModel {
|
|
|
102
149
|
removeScopeRule(ruleId: string): boolean;
|
|
103
150
|
evaluateScope(actorId: string, actionId?: string): string[];
|
|
104
151
|
getGrammarVocabularyProvider(): IGrammarVocabularyProvider;
|
|
105
|
-
directions(): DirectionVocabularyRegistry;
|
|
106
152
|
}
|
|
107
153
|
export declare class WorldModel implements IWorldModel {
|
|
108
154
|
private entities;
|
|
@@ -112,6 +158,7 @@ export declare class WorldModel implements IWorldModel {
|
|
|
112
158
|
private config;
|
|
113
159
|
private capabilities;
|
|
114
160
|
private scoreLedger;
|
|
161
|
+
private sceneConditions;
|
|
115
162
|
private idCounters;
|
|
116
163
|
private eventSystem;
|
|
117
164
|
private serializer;
|
|
@@ -119,7 +166,6 @@ export declare class WorldModel implements IWorldModel {
|
|
|
119
166
|
private scopeRegistry;
|
|
120
167
|
private scopeEvaluator;
|
|
121
168
|
private grammarVocabularyProvider;
|
|
122
|
-
private directionVocabularyRegistry;
|
|
123
169
|
constructor(config?: WorldConfig, platformEvents?: ISemanticEventSource);
|
|
124
170
|
private emitPlatformEvent;
|
|
125
171
|
registerCapability(name: string, registration?: Partial<ICapabilityRegistration>): void;
|
|
@@ -184,15 +230,6 @@ export declare class WorldModel implements IWorldModel {
|
|
|
184
230
|
getDataStore(): IDataStore;
|
|
185
231
|
getScopeRegistry(): ScopeRegistry;
|
|
186
232
|
getGrammarVocabularyProvider(): IGrammarVocabularyProvider;
|
|
187
|
-
/**
|
|
188
|
-
* Access the direction vocabulary registry.
|
|
189
|
-
*
|
|
190
|
-
* Stories call this to override direction words from a single point:
|
|
191
|
-
* ```
|
|
192
|
-
* world.directions().useVocabulary('naval');
|
|
193
|
-
* ```
|
|
194
|
-
*/
|
|
195
|
-
directions(): DirectionVocabularyRegistry;
|
|
196
233
|
addScopeRule(rule: IScopeRule): void;
|
|
197
234
|
removeScopeRule(ruleId: string): boolean;
|
|
198
235
|
evaluateScope(actorId: string, actionId?: string): string[];
|
|
@@ -268,5 +305,91 @@ export declare class WorldModel implements IWorldModel {
|
|
|
268
305
|
isLocked?: boolean;
|
|
269
306
|
keyId?: string;
|
|
270
307
|
}): IFEntity;
|
|
308
|
+
/**
|
|
309
|
+
* Creates a region entity with RegionTrait atomically.
|
|
310
|
+
*
|
|
311
|
+
* @param id - Explicit entity ID for the region (e.g., 'reg-underground').
|
|
312
|
+
* Must be unique; throws if already exists.
|
|
313
|
+
* @param options - Region configuration.
|
|
314
|
+
* @returns The created region entity.
|
|
315
|
+
*/
|
|
316
|
+
createRegion(id: string, options: RegionOptions): IFEntity;
|
|
317
|
+
/**
|
|
318
|
+
* Assigns a room to a region by setting RoomTrait.regionId.
|
|
319
|
+
*
|
|
320
|
+
* @param roomId - ID of the room entity.
|
|
321
|
+
* @param regionId - ID of the region entity (must exist and have RegionTrait).
|
|
322
|
+
* @throws If room not found, region not found, or types are wrong.
|
|
323
|
+
*/
|
|
324
|
+
assignRoom(roomId: string, regionId: string): void;
|
|
325
|
+
/**
|
|
326
|
+
* Tests whether an entity (or its containing room) is in a region,
|
|
327
|
+
* traversing the parent region hierarchy.
|
|
328
|
+
*
|
|
329
|
+
* @param entityId - The entity to test. If it's a room, checks its regionId.
|
|
330
|
+
* Otherwise, resolves the entity's containing room first.
|
|
331
|
+
* @param regionId - The region to test membership against.
|
|
332
|
+
* @returns true if the entity is in the region or any child of it.
|
|
333
|
+
*/
|
|
334
|
+
isInRegion(entityId: string, regionId: string): boolean;
|
|
335
|
+
/**
|
|
336
|
+
* Computes which regions are exited and entered when moving between rooms.
|
|
337
|
+
* Exit list is innermost-first; entry list is outermost-first.
|
|
338
|
+
*
|
|
339
|
+
* @param fromRoomId - The source room entity ID.
|
|
340
|
+
* @param toRoomId - The destination room entity ID.
|
|
341
|
+
* @returns Region IDs exited and entered. Both empty if same region or no regions.
|
|
342
|
+
*/
|
|
343
|
+
getRegionCrossings(fromRoomId: string, toRoomId: string): RegionCrossings;
|
|
344
|
+
/**
|
|
345
|
+
* Builds the ancestry chain for a region: [self, parent, grandparent, ...].
|
|
346
|
+
* Returns empty array if regionId is undefined or not found.
|
|
347
|
+
*/
|
|
348
|
+
private getRegionAncestry;
|
|
349
|
+
/**
|
|
350
|
+
* Checks whether a region ancestry chain includes a target region.
|
|
351
|
+
*/
|
|
352
|
+
private regionAncestryIncludes;
|
|
353
|
+
/**
|
|
354
|
+
* Creates a scene entity with SceneTrait and registers condition closures.
|
|
355
|
+
*
|
|
356
|
+
* @param id - Explicit entity ID (e.g., 'scene-flood'). Must be unique.
|
|
357
|
+
* @param options - Scene name, begin/end conditions, recurring flag.
|
|
358
|
+
* @returns The created scene entity.
|
|
359
|
+
*/
|
|
360
|
+
createScene(id: string, options: SceneOptions): IFEntity;
|
|
361
|
+
/**
|
|
362
|
+
* Retrieves the condition closures for a scene.
|
|
363
|
+
* Returns undefined if the scene has no registered conditions
|
|
364
|
+
* (e.g., after save/restore before re-registration).
|
|
365
|
+
*
|
|
366
|
+
* @param sceneId - The scene entity ID.
|
|
367
|
+
*/
|
|
368
|
+
getSceneConditions(sceneId: string): SceneConditions | undefined;
|
|
369
|
+
/**
|
|
370
|
+
* Returns all registered scene conditions. Used by the engine's
|
|
371
|
+
* scene evaluation phase to iterate over scenes each turn.
|
|
372
|
+
*/
|
|
373
|
+
getAllSceneConditions(): Map<string, SceneConditions>;
|
|
374
|
+
/**
|
|
375
|
+
* Returns true if the scene is currently in the 'active' state.
|
|
376
|
+
*
|
|
377
|
+
* @param sceneId - The scene entity ID.
|
|
378
|
+
*/
|
|
379
|
+
isSceneActive(sceneId: string): boolean;
|
|
380
|
+
/**
|
|
381
|
+
* Returns true if the scene has reached the 'ended' state.
|
|
382
|
+
* For recurring scenes, this is true only while in the 'ended' state
|
|
383
|
+
* (resets to 'waiting' when the scene re-activates).
|
|
384
|
+
*
|
|
385
|
+
* @param sceneId - The scene entity ID.
|
|
386
|
+
*/
|
|
387
|
+
hasSceneEnded(sceneId: string): boolean;
|
|
388
|
+
/**
|
|
389
|
+
* Returns true if the scene has ever been active (beganAtTurn is set).
|
|
390
|
+
*
|
|
391
|
+
* @param sceneId - The scene entity ID.
|
|
392
|
+
*/
|
|
393
|
+
hasSceneHappened(sceneId: string): boolean;
|
|
271
394
|
}
|
|
272
395
|
//# sourceMappingURL=WorldModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorldModel.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/WorldModel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorldModel.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/WorldModel.ts"],"names":[],"mappings":"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"}
|
package/world/WorldModel.js
CHANGED
|
@@ -7,6 +7,8 @@ const entity_types_1 = require("../entities/entity-types");
|
|
|
7
7
|
const trait_types_1 = require("../traits/trait-types");
|
|
8
8
|
const room_1 = require("../traits/room");
|
|
9
9
|
const roomBehavior_1 = require("../traits/room/roomBehavior");
|
|
10
|
+
const regionTrait_1 = require("../traits/region/regionTrait");
|
|
11
|
+
const sceneTrait_1 = require("../traits/scene/sceneTrait");
|
|
10
12
|
const door_1 = require("../traits/door");
|
|
11
13
|
const scenery_1 = require("../traits/scenery");
|
|
12
14
|
const identityTrait_1 = require("../traits/identity/identityTrait");
|
|
@@ -48,6 +50,8 @@ class WorldModel {
|
|
|
48
50
|
capabilities = {};
|
|
49
51
|
// Score Ledger (ADR-129)
|
|
50
52
|
scoreLedger = new ScoreLedger_1.ScoreLedger();
|
|
53
|
+
// Scene condition closures (ADR-149) — not serialized
|
|
54
|
+
sceneConditions = new Map();
|
|
51
55
|
// ID generation
|
|
52
56
|
idCounters = new Map();
|
|
53
57
|
// Event system (ADR-086, ADR-094) — delegates to WorldEventSystem
|
|
@@ -60,8 +64,6 @@ class WorldModel {
|
|
|
60
64
|
scopeEvaluator;
|
|
61
65
|
// Vocabulary system (ADR-082)
|
|
62
66
|
grammarVocabularyProvider;
|
|
63
|
-
// Direction vocabulary (ADR-143)
|
|
64
|
-
directionVocabularyRegistry = new directions_1.DirectionVocabularyRegistry();
|
|
65
67
|
constructor(config = {}, platformEvents) {
|
|
66
68
|
this.config = {
|
|
67
69
|
enableSpatialIndex: true,
|
|
@@ -662,18 +664,6 @@ class WorldModel {
|
|
|
662
664
|
getGrammarVocabularyProvider() {
|
|
663
665
|
return this.grammarVocabularyProvider;
|
|
664
666
|
}
|
|
665
|
-
// Direction Vocabulary (ADR-143)
|
|
666
|
-
/**
|
|
667
|
-
* Access the direction vocabulary registry.
|
|
668
|
-
*
|
|
669
|
-
* Stories call this to override direction words from a single point:
|
|
670
|
-
* ```
|
|
671
|
-
* world.directions().useVocabulary('naval');
|
|
672
|
-
* ```
|
|
673
|
-
*/
|
|
674
|
-
directions() {
|
|
675
|
-
return this.directionVocabularyRegistry;
|
|
676
|
-
}
|
|
677
667
|
addScopeRule(rule) {
|
|
678
668
|
this.scopeRegistry.addRule(rule);
|
|
679
669
|
this.emitPlatformEvent('scope_rule_added', {
|
|
@@ -872,6 +862,243 @@ class WorldModel {
|
|
|
872
862
|
this.moveEntity(door.id, opts.room1Id);
|
|
873
863
|
return door;
|
|
874
864
|
}
|
|
865
|
+
// ── Region Management (ADR-149) ──────────────────────────────────
|
|
866
|
+
/**
|
|
867
|
+
* Creates a region entity with RegionTrait atomically.
|
|
868
|
+
*
|
|
869
|
+
* @param id - Explicit entity ID for the region (e.g., 'reg-underground').
|
|
870
|
+
* Must be unique; throws if already exists.
|
|
871
|
+
* @param options - Region configuration.
|
|
872
|
+
* @returns The created region entity.
|
|
873
|
+
*/
|
|
874
|
+
createRegion(id, options) {
|
|
875
|
+
if (this.hasEntity(id)) {
|
|
876
|
+
throw new Error(`createRegion: entity '${id}' already exists`);
|
|
877
|
+
}
|
|
878
|
+
if (options.parentRegionId && !this.hasEntity(options.parentRegionId)) {
|
|
879
|
+
throw new Error(`createRegion: parent region '${options.parentRegionId}' not found`);
|
|
880
|
+
}
|
|
881
|
+
const entity = new if_entity_1.IFEntity(id, entity_types_1.EntityType.REGION, {
|
|
882
|
+
attributes: {
|
|
883
|
+
displayName: options.name,
|
|
884
|
+
name: options.name,
|
|
885
|
+
entityType: entity_types_1.EntityType.REGION,
|
|
886
|
+
},
|
|
887
|
+
});
|
|
888
|
+
entity.add(new regionTrait_1.RegionTrait(options));
|
|
889
|
+
this.entities.set(id, entity);
|
|
890
|
+
return entity;
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* Assigns a room to a region by setting RoomTrait.regionId.
|
|
894
|
+
*
|
|
895
|
+
* @param roomId - ID of the room entity.
|
|
896
|
+
* @param regionId - ID of the region entity (must exist and have RegionTrait).
|
|
897
|
+
* @throws If room not found, region not found, or types are wrong.
|
|
898
|
+
*/
|
|
899
|
+
assignRoom(roomId, regionId) {
|
|
900
|
+
const room = this.getEntity(roomId);
|
|
901
|
+
if (!room) {
|
|
902
|
+
throw new Error(`assignRoom: room '${roomId}' not found`);
|
|
903
|
+
}
|
|
904
|
+
const roomTrait = room.get(trait_types_1.TraitType.ROOM);
|
|
905
|
+
if (!roomTrait) {
|
|
906
|
+
throw new Error(`assignRoom: entity '${roomId}' does not have RoomTrait`);
|
|
907
|
+
}
|
|
908
|
+
const region = this.getEntity(regionId);
|
|
909
|
+
if (!region) {
|
|
910
|
+
throw new Error(`assignRoom: region '${regionId}' not found`);
|
|
911
|
+
}
|
|
912
|
+
if (!region.hasTrait(trait_types_1.TraitType.REGION)) {
|
|
913
|
+
throw new Error(`assignRoom: entity '${regionId}' is not a region`);
|
|
914
|
+
}
|
|
915
|
+
roomTrait.regionId = regionId;
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Tests whether an entity (or its containing room) is in a region,
|
|
919
|
+
* traversing the parent region hierarchy.
|
|
920
|
+
*
|
|
921
|
+
* @param entityId - The entity to test. If it's a room, checks its regionId.
|
|
922
|
+
* Otherwise, resolves the entity's containing room first.
|
|
923
|
+
* @param regionId - The region to test membership against.
|
|
924
|
+
* @returns true if the entity is in the region or any child of it.
|
|
925
|
+
*/
|
|
926
|
+
isInRegion(entityId, regionId) {
|
|
927
|
+
const entity = this.getEntity(entityId);
|
|
928
|
+
if (!entity)
|
|
929
|
+
return false;
|
|
930
|
+
// If the entity is a room, use its regionId directly.
|
|
931
|
+
// Otherwise, resolve the containing room.
|
|
932
|
+
let roomRegionId;
|
|
933
|
+
if (entity.type === entity_types_1.EntityType.ROOM) {
|
|
934
|
+
roomRegionId = entity.get(trait_types_1.TraitType.ROOM)?.regionId;
|
|
935
|
+
}
|
|
936
|
+
else {
|
|
937
|
+
const room = this.getContainingRoom(entityId);
|
|
938
|
+
if (!room)
|
|
939
|
+
return false;
|
|
940
|
+
roomRegionId = room.get(trait_types_1.TraitType.ROOM)?.regionId;
|
|
941
|
+
}
|
|
942
|
+
if (!roomRegionId)
|
|
943
|
+
return false;
|
|
944
|
+
// Walk up the parent chain from the room's region
|
|
945
|
+
return this.regionAncestryIncludes(roomRegionId, regionId);
|
|
946
|
+
}
|
|
947
|
+
/**
|
|
948
|
+
* Computes which regions are exited and entered when moving between rooms.
|
|
949
|
+
* Exit list is innermost-first; entry list is outermost-first.
|
|
950
|
+
*
|
|
951
|
+
* @param fromRoomId - The source room entity ID.
|
|
952
|
+
* @param toRoomId - The destination room entity ID.
|
|
953
|
+
* @returns Region IDs exited and entered. Both empty if same region or no regions.
|
|
954
|
+
*/
|
|
955
|
+
getRegionCrossings(fromRoomId, toRoomId) {
|
|
956
|
+
const fromRoom = this.getEntity(fromRoomId);
|
|
957
|
+
const toRoom = this.getEntity(toRoomId);
|
|
958
|
+
const fromChain = fromRoom
|
|
959
|
+
? this.getRegionAncestry(fromRoom.get(trait_types_1.TraitType.ROOM)?.regionId)
|
|
960
|
+
: [];
|
|
961
|
+
const toChain = toRoom
|
|
962
|
+
? this.getRegionAncestry(toRoom.get(trait_types_1.TraitType.ROOM)?.regionId)
|
|
963
|
+
: [];
|
|
964
|
+
// Convert to sets for fast lookup
|
|
965
|
+
const fromSet = new Set(fromChain);
|
|
966
|
+
const toSet = new Set(toChain);
|
|
967
|
+
// Exited: regions in fromChain but not in toChain (innermost first — natural order)
|
|
968
|
+
const exited = fromChain.filter(id => !toSet.has(id));
|
|
969
|
+
// Entered: regions in toChain but not in fromChain (outermost first — reverse natural order)
|
|
970
|
+
const entered = toChain.filter(id => !fromSet.has(id)).reverse();
|
|
971
|
+
return { exited, entered };
|
|
972
|
+
}
|
|
973
|
+
// ── Private region helpers ───────────────────────────────────────────
|
|
974
|
+
/**
|
|
975
|
+
* Builds the ancestry chain for a region: [self, parent, grandparent, ...].
|
|
976
|
+
* Returns empty array if regionId is undefined or not found.
|
|
977
|
+
*/
|
|
978
|
+
getRegionAncestry(regionId) {
|
|
979
|
+
const chain = [];
|
|
980
|
+
let currentId = regionId;
|
|
981
|
+
const visited = new Set(); // guard against cycles
|
|
982
|
+
while (currentId) {
|
|
983
|
+
if (visited.has(currentId))
|
|
984
|
+
break;
|
|
985
|
+
visited.add(currentId);
|
|
986
|
+
const region = this.getEntity(currentId);
|
|
987
|
+
if (!region)
|
|
988
|
+
break;
|
|
989
|
+
const trait = region.get(trait_types_1.TraitType.REGION);
|
|
990
|
+
if (!trait)
|
|
991
|
+
break;
|
|
992
|
+
chain.push(currentId);
|
|
993
|
+
currentId = trait.parentRegionId;
|
|
994
|
+
}
|
|
995
|
+
return chain;
|
|
996
|
+
}
|
|
997
|
+
/**
|
|
998
|
+
* Checks whether a region ancestry chain includes a target region.
|
|
999
|
+
*/
|
|
1000
|
+
regionAncestryIncludes(startRegionId, targetRegionId) {
|
|
1001
|
+
let currentId = startRegionId;
|
|
1002
|
+
const visited = new Set();
|
|
1003
|
+
while (currentId) {
|
|
1004
|
+
if (currentId === targetRegionId)
|
|
1005
|
+
return true;
|
|
1006
|
+
if (visited.has(currentId))
|
|
1007
|
+
return false;
|
|
1008
|
+
visited.add(currentId);
|
|
1009
|
+
const region = this.getEntity(currentId);
|
|
1010
|
+
if (!region)
|
|
1011
|
+
return false;
|
|
1012
|
+
const trait = region.get(trait_types_1.TraitType.REGION);
|
|
1013
|
+
if (!trait)
|
|
1014
|
+
return false;
|
|
1015
|
+
currentId = trait.parentRegionId;
|
|
1016
|
+
}
|
|
1017
|
+
return false;
|
|
1018
|
+
}
|
|
1019
|
+
// ── Scene Management (ADR-149) ───────────────────────────────────
|
|
1020
|
+
/**
|
|
1021
|
+
* Creates a scene entity with SceneTrait and registers condition closures.
|
|
1022
|
+
*
|
|
1023
|
+
* @param id - Explicit entity ID (e.g., 'scene-flood'). Must be unique.
|
|
1024
|
+
* @param options - Scene name, begin/end conditions, recurring flag.
|
|
1025
|
+
* @returns The created scene entity.
|
|
1026
|
+
*/
|
|
1027
|
+
createScene(id, options) {
|
|
1028
|
+
if (this.hasEntity(id)) {
|
|
1029
|
+
throw new Error(`createScene: entity '${id}' already exists`);
|
|
1030
|
+
}
|
|
1031
|
+
const entity = new if_entity_1.IFEntity(id, entity_types_1.EntityType.SCENE, {
|
|
1032
|
+
attributes: {
|
|
1033
|
+
displayName: options.name,
|
|
1034
|
+
name: options.name,
|
|
1035
|
+
entityType: entity_types_1.EntityType.SCENE,
|
|
1036
|
+
},
|
|
1037
|
+
});
|
|
1038
|
+
entity.add(new sceneTrait_1.SceneTrait({
|
|
1039
|
+
name: options.name,
|
|
1040
|
+
recurring: options.recurring,
|
|
1041
|
+
}));
|
|
1042
|
+
this.entities.set(id, entity);
|
|
1043
|
+
// Store condition closures separately (not serializable)
|
|
1044
|
+
this.sceneConditions.set(id, {
|
|
1045
|
+
begin: options.begin,
|
|
1046
|
+
end: options.end,
|
|
1047
|
+
});
|
|
1048
|
+
return entity;
|
|
1049
|
+
}
|
|
1050
|
+
/**
|
|
1051
|
+
* Retrieves the condition closures for a scene.
|
|
1052
|
+
* Returns undefined if the scene has no registered conditions
|
|
1053
|
+
* (e.g., after save/restore before re-registration).
|
|
1054
|
+
*
|
|
1055
|
+
* @param sceneId - The scene entity ID.
|
|
1056
|
+
*/
|
|
1057
|
+
getSceneConditions(sceneId) {
|
|
1058
|
+
return this.sceneConditions.get(sceneId);
|
|
1059
|
+
}
|
|
1060
|
+
/**
|
|
1061
|
+
* Returns all registered scene conditions. Used by the engine's
|
|
1062
|
+
* scene evaluation phase to iterate over scenes each turn.
|
|
1063
|
+
*/
|
|
1064
|
+
getAllSceneConditions() {
|
|
1065
|
+
return this.sceneConditions;
|
|
1066
|
+
}
|
|
1067
|
+
/**
|
|
1068
|
+
* Returns true if the scene is currently in the 'active' state.
|
|
1069
|
+
*
|
|
1070
|
+
* @param sceneId - The scene entity ID.
|
|
1071
|
+
*/
|
|
1072
|
+
isSceneActive(sceneId) {
|
|
1073
|
+
const entity = this.getEntity(sceneId);
|
|
1074
|
+
if (!entity)
|
|
1075
|
+
return false;
|
|
1076
|
+
return entity.get(trait_types_1.TraitType.SCENE)?.state === 'active';
|
|
1077
|
+
}
|
|
1078
|
+
/**
|
|
1079
|
+
* Returns true if the scene has reached the 'ended' state.
|
|
1080
|
+
* For recurring scenes, this is true only while in the 'ended' state
|
|
1081
|
+
* (resets to 'waiting' when the scene re-activates).
|
|
1082
|
+
*
|
|
1083
|
+
* @param sceneId - The scene entity ID.
|
|
1084
|
+
*/
|
|
1085
|
+
hasSceneEnded(sceneId) {
|
|
1086
|
+
const entity = this.getEntity(sceneId);
|
|
1087
|
+
if (!entity)
|
|
1088
|
+
return false;
|
|
1089
|
+
return entity.get(trait_types_1.TraitType.SCENE)?.state === 'ended';
|
|
1090
|
+
}
|
|
1091
|
+
/**
|
|
1092
|
+
* Returns true if the scene has ever been active (beganAtTurn is set).
|
|
1093
|
+
*
|
|
1094
|
+
* @param sceneId - The scene entity ID.
|
|
1095
|
+
*/
|
|
1096
|
+
hasSceneHappened(sceneId) {
|
|
1097
|
+
const entity = this.getEntity(sceneId);
|
|
1098
|
+
if (!entity)
|
|
1099
|
+
return false;
|
|
1100
|
+
return entity.get(trait_types_1.TraitType.SCENE)?.beganAtTurn !== undefined;
|
|
1101
|
+
}
|
|
875
1102
|
}
|
|
876
1103
|
exports.WorldModel = WorldModel;
|
|
877
1104
|
//# sourceMappingURL=WorldModel.js.map
|