@sharpee/world-model 0.9.60-beta
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 +61 -0
- package/dist/behaviors/attack.d.ts +52 -0
- package/dist/behaviors/attack.d.ts.map +1 -0
- package/dist/behaviors/attack.js +161 -0
- package/dist/behaviors/attack.js.map +1 -0
- package/dist/behaviors/behavior.d.ts +67 -0
- package/dist/behaviors/behavior.d.ts.map +1 -0
- package/dist/behaviors/behavior.js +80 -0
- package/dist/behaviors/behavior.js.map +1 -0
- package/dist/behaviors/index.d.ts +21 -0
- package/dist/behaviors/index.d.ts.map +1 -0
- package/dist/behaviors/index.js +39 -0
- package/dist/behaviors/index.js.map +1 -0
- package/dist/capabilities/capability-behavior.d.ts +112 -0
- package/dist/capabilities/capability-behavior.d.ts.map +1 -0
- package/dist/capabilities/capability-behavior.js +9 -0
- package/dist/capabilities/capability-behavior.js.map +1 -0
- package/dist/capabilities/capability-defaults.d.ts +67 -0
- package/dist/capabilities/capability-defaults.d.ts.map +1 -0
- package/dist/capabilities/capability-defaults.js +81 -0
- package/dist/capabilities/capability-defaults.js.map +1 -0
- package/dist/capabilities/capability-helpers.d.ts +76 -0
- package/dist/capabilities/capability-helpers.d.ts.map +1 -0
- package/dist/capabilities/capability-helpers.js +112 -0
- package/dist/capabilities/capability-helpers.js.map +1 -0
- package/dist/capabilities/capability-registry.d.ts +115 -0
- package/dist/capabilities/capability-registry.d.ts.map +1 -0
- package/dist/capabilities/capability-registry.js +136 -0
- package/dist/capabilities/capability-registry.js.map +1 -0
- package/dist/capabilities/entity-builder.d.ts +79 -0
- package/dist/capabilities/entity-builder.d.ts.map +1 -0
- package/dist/capabilities/entity-builder.js +116 -0
- package/dist/capabilities/entity-builder.js.map +1 -0
- package/dist/capabilities/index.d.ts +13 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +40 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/types.d.ts +35 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +16 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/commands/command-types.d.ts +30 -0
- package/dist/commands/command-types.d.ts.map +1 -0
- package/dist/commands/command-types.js +6 -0
- package/dist/commands/command-types.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +23 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/parsed-command.d.ts +204 -0
- package/dist/commands/parsed-command.d.ts.map +1 -0
- package/dist/commands/parsed-command.js +25 -0
- package/dist/commands/parsed-command.js.map +1 -0
- package/dist/commands/validated-command.d.ts +52 -0
- package/dist/commands/validated-command.d.ts.map +1 -0
- package/dist/commands/validated-command.js +8 -0
- package/dist/commands/validated-command.js.map +1 -0
- package/dist/constants/action-failures.d.ts +54 -0
- package/dist/constants/action-failures.d.ts.map +1 -0
- package/dist/constants/action-failures.js +68 -0
- package/dist/constants/action-failures.js.map +1 -0
- package/dist/constants/directions.d.ts +32 -0
- package/dist/constants/directions.d.ts.map +1 -0
- package/dist/constants/directions.js +53 -0
- package/dist/constants/directions.js.map +1 -0
- package/dist/constants/if-events.d.ts +5 -0
- package/dist/constants/if-events.d.ts.map +1 -0
- package/dist/constants/if-events.js +10 -0
- package/dist/constants/if-events.js.map +1 -0
- package/dist/constants/index.d.ts +9 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +25 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/entities/entity-store.d.ts +66 -0
- package/dist/entities/entity-store.d.ts.map +1 -0
- package/dist/entities/entity-store.js +116 -0
- package/dist/entities/entity-store.js.map +1 -0
- package/dist/entities/entity-types.d.ts +40 -0
- package/dist/entities/entity-types.d.ts.map +1 -0
- package/dist/entities/entity-types.js +56 -0
- package/dist/entities/entity-types.js.map +1 -0
- package/dist/entities/if-entity.d.ts +259 -0
- package/dist/entities/if-entity.d.ts.map +1 -0
- package/dist/entities/if-entity.js +498 -0
- package/dist/entities/if-entity.js.map +1 -0
- package/dist/entities/index.d.ts +5 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +13 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/events/types.d.ts +45 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +9 -0
- package/dist/events/types.js.map +1 -0
- package/dist/examples/event-handler-registration.d.ts +14 -0
- package/dist/examples/event-handler-registration.d.ts.map +1 -0
- package/dist/examples/event-handler-registration.js +158 -0
- package/dist/examples/event-handler-registration.js.map +1 -0
- package/dist/extensions/base-extension.d.ts +69 -0
- package/dist/extensions/base-extension.d.ts.map +1 -0
- package/dist/extensions/base-extension.js +83 -0
- package/dist/extensions/base-extension.js.map +1 -0
- package/dist/extensions/index.d.ts +11 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +39 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/loader.d.ts +52 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +177 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/extensions/manager.d.ts +68 -0
- package/dist/extensions/manager.d.ts.map +1 -0
- package/dist/extensions/manager.js +164 -0
- package/dist/extensions/manager.js.map +1 -0
- package/dist/extensions/registry.d.ts +100 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +193 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +226 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +28 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/command-executor.d.ts +17 -0
- package/dist/interfaces/command-executor.d.ts.map +1 -0
- package/dist/interfaces/command-executor.js +6 -0
- package/dist/interfaces/command-executor.js.map +1 -0
- package/dist/interfaces/command-processor.d.ts +17 -0
- package/dist/interfaces/command-processor.d.ts.map +1 -0
- package/dist/interfaces/command-processor.js +6 -0
- package/dist/interfaces/command-processor.js.map +1 -0
- package/dist/interfaces/command-validator.d.ts +17 -0
- package/dist/interfaces/command-validator.d.ts.map +1 -0
- package/dist/interfaces/command-validator.js +6 -0
- package/dist/interfaces/command-validator.js.map +1 -0
- package/dist/interfaces/index.d.ts +8 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +24 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/language-provider.d.ts +86 -0
- package/dist/interfaces/language-provider.d.ts.map +1 -0
- package/dist/interfaces/language-provider.js +14 -0
- package/dist/interfaces/language-provider.js.map +1 -0
- package/dist/interfaces/parser.d.ts +16 -0
- package/dist/interfaces/parser.d.ts.map +1 -0
- package/dist/interfaces/parser.js +6 -0
- package/dist/interfaces/parser.js.map +1 -0
- package/dist/scope/index.d.ts +8 -0
- package/dist/scope/index.d.ts.map +1 -0
- package/dist/scope/index.js +24 -0
- package/dist/scope/index.js.map +1 -0
- package/dist/scope/scope-evaluator.d.ts +58 -0
- package/dist/scope/scope-evaluator.d.ts.map +1 -0
- package/dist/scope/scope-evaluator.js +207 -0
- package/dist/scope/scope-evaluator.js.map +1 -0
- package/dist/scope/scope-registry.d.ts +59 -0
- package/dist/scope/scope-registry.d.ts.map +1 -0
- package/dist/scope/scope-registry.js +182 -0
- package/dist/scope/scope-registry.js.map +1 -0
- package/dist/scope/scope-rule.d.ts +86 -0
- package/dist/scope/scope-rule.d.ts.map +1 -0
- package/dist/scope/scope-rule.js +7 -0
- package/dist/scope/scope-rule.js.map +1 -0
- package/dist/services/ScopeService.d.ts +8 -0
- package/dist/services/ScopeService.d.ts.map +1 -0
- package/dist/services/ScopeService.js +19 -0
- package/dist/services/ScopeService.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -0
- package/dist/test-structure.d.ts +3 -0
- package/dist/test-structure.d.ts.map +1 -0
- package/dist/test-structure.js +26 -0
- package/dist/test-structure.js.map +1 -0
- package/dist/traits/actor/actorBehavior.d.ts +121 -0
- package/dist/traits/actor/actorBehavior.d.ts.map +1 -0
- package/dist/traits/actor/actorBehavior.js +288 -0
- package/dist/traits/actor/actorBehavior.js.map +1 -0
- package/dist/traits/actor/actorTrait.d.ts +158 -0
- package/dist/traits/actor/actorTrait.d.ts.map +1 -0
- package/dist/traits/actor/actorTrait.js +152 -0
- package/dist/traits/actor/actorTrait.js.map +1 -0
- package/dist/traits/actor/index.d.ts +3 -0
- package/dist/traits/actor/index.d.ts.map +1 -0
- package/dist/traits/actor/index.js +11 -0
- package/dist/traits/actor/index.js.map +1 -0
- package/dist/traits/all-traits.d.ts +95 -0
- package/dist/traits/all-traits.d.ts.map +1 -0
- package/dist/traits/all-traits.js +178 -0
- package/dist/traits/all-traits.js.map +1 -0
- package/dist/traits/attached/attachedTrait.d.ts +61 -0
- package/dist/traits/attached/attachedTrait.d.ts.map +1 -0
- package/dist/traits/attached/attachedTrait.js +36 -0
- package/dist/traits/attached/attachedTrait.js.map +1 -0
- package/dist/traits/attached/index.d.ts +2 -0
- package/dist/traits/attached/index.d.ts.map +1 -0
- package/dist/traits/attached/index.js +18 -0
- package/dist/traits/attached/index.js.map +1 -0
- package/dist/traits/breakable/breakableBehavior.d.ts +43 -0
- package/dist/traits/breakable/breakableBehavior.d.ts.map +1 -0
- package/dist/traits/breakable/breakableBehavior.js +70 -0
- package/dist/traits/breakable/breakableBehavior.js.map +1 -0
- package/dist/traits/breakable/breakableTrait.d.ts +22 -0
- package/dist/traits/breakable/breakableTrait.d.ts.map +1 -0
- package/dist/traits/breakable/breakableTrait.js +25 -0
- package/dist/traits/breakable/breakableTrait.js.map +1 -0
- package/dist/traits/breakable/index.d.ts +3 -0
- package/dist/traits/breakable/index.d.ts.map +1 -0
- package/dist/traits/breakable/index.js +8 -0
- package/dist/traits/breakable/index.js.map +1 -0
- package/dist/traits/button/buttonTrait.d.ts +53 -0
- package/dist/traits/button/buttonTrait.d.ts.map +1 -0
- package/dist/traits/button/buttonTrait.js +36 -0
- package/dist/traits/button/buttonTrait.js.map +1 -0
- package/dist/traits/button/index.d.ts +2 -0
- package/dist/traits/button/index.d.ts.map +1 -0
- package/dist/traits/button/index.js +18 -0
- package/dist/traits/button/index.js.map +1 -0
- package/dist/traits/climbable/climbableBehavior.d.ts +37 -0
- package/dist/traits/climbable/climbableBehavior.d.ts.map +1 -0
- package/dist/traits/climbable/climbableBehavior.js +70 -0
- package/dist/traits/climbable/climbableBehavior.js.map +1 -0
- package/dist/traits/climbable/climbableTrait.d.ts +31 -0
- package/dist/traits/climbable/climbableTrait.d.ts.map +1 -0
- package/dist/traits/climbable/climbableTrait.js +47 -0
- package/dist/traits/climbable/climbableTrait.js.map +1 -0
- package/dist/traits/climbable/index.d.ts +6 -0
- package/dist/traits/climbable/index.d.ts.map +1 -0
- package/dist/traits/climbable/index.js +22 -0
- package/dist/traits/climbable/index.js.map +1 -0
- package/dist/traits/clothing/clothingTrait.d.ts +58 -0
- package/dist/traits/clothing/clothingTrait.d.ts.map +1 -0
- package/dist/traits/clothing/clothingTrait.js +78 -0
- package/dist/traits/clothing/clothingTrait.js.map +1 -0
- package/dist/traits/clothing/index.d.ts +2 -0
- package/dist/traits/clothing/index.d.ts.map +1 -0
- package/dist/traits/clothing/index.js +19 -0
- package/dist/traits/clothing/index.js.map +1 -0
- package/dist/traits/combatant/combatantBehavior.d.ts +70 -0
- package/dist/traits/combatant/combatantBehavior.d.ts.map +1 -0
- package/dist/traits/combatant/combatantBehavior.js +155 -0
- package/dist/traits/combatant/combatantBehavior.js.map +1 -0
- package/dist/traits/combatant/combatantTrait.d.ts +98 -0
- package/dist/traits/combatant/combatantTrait.d.ts.map +1 -0
- package/dist/traits/combatant/combatantTrait.js +122 -0
- package/dist/traits/combatant/combatantTrait.js.map +1 -0
- package/dist/traits/combatant/index.d.ts +3 -0
- package/dist/traits/combatant/index.d.ts.map +1 -0
- package/dist/traits/combatant/index.js +8 -0
- package/dist/traits/combatant/index.js.map +1 -0
- package/dist/traits/container/container-utils.d.ts +39 -0
- package/dist/traits/container/container-utils.d.ts.map +1 -0
- package/dist/traits/container/container-utils.js +72 -0
- package/dist/traits/container/container-utils.js.map +1 -0
- package/dist/traits/container/containerBehavior.d.ts +94 -0
- package/dist/traits/container/containerBehavior.d.ts.map +1 -0
- package/dist/traits/container/containerBehavior.js +256 -0
- package/dist/traits/container/containerBehavior.js.map +1 -0
- package/dist/traits/container/containerTrait.d.ts +30 -0
- package/dist/traits/container/containerTrait.d.ts.map +1 -0
- package/dist/traits/container/containerTrait.js +45 -0
- package/dist/traits/container/containerTrait.js.map +1 -0
- package/dist/traits/container/index.d.ts +4 -0
- package/dist/traits/container/index.d.ts.map +1 -0
- package/dist/traits/container/index.js +14 -0
- package/dist/traits/container/index.js.map +1 -0
- package/dist/traits/destructible/destructibleBehavior.d.ts +57 -0
- package/dist/traits/destructible/destructibleBehavior.d.ts.map +1 -0
- package/dist/traits/destructible/destructibleBehavior.js +145 -0
- package/dist/traits/destructible/destructibleBehavior.js.map +1 -0
- package/dist/traits/destructible/destructibleTrait.d.ts +49 -0
- package/dist/traits/destructible/destructibleTrait.d.ts.map +1 -0
- package/dist/traits/destructible/destructibleTrait.js +43 -0
- package/dist/traits/destructible/destructibleTrait.js.map +1 -0
- package/dist/traits/destructible/index.d.ts +3 -0
- package/dist/traits/destructible/index.d.ts.map +1 -0
- package/dist/traits/destructible/index.js +8 -0
- package/dist/traits/destructible/index.js.map +1 -0
- package/dist/traits/door/doorBehavior.d.ts +42 -0
- package/dist/traits/door/doorBehavior.d.ts.map +1 -0
- package/dist/traits/door/doorBehavior.js +76 -0
- package/dist/traits/door/doorBehavior.js.map +1 -0
- package/dist/traits/door/doorTrait.d.ts +19 -0
- package/dist/traits/door/doorTrait.d.ts.map +1 -0
- package/dist/traits/door/doorTrait.js +33 -0
- package/dist/traits/door/doorTrait.js.map +1 -0
- package/dist/traits/door/index.d.ts +3 -0
- package/dist/traits/door/index.d.ts.map +1 -0
- package/dist/traits/door/index.js +9 -0
- package/dist/traits/door/index.js.map +1 -0
- package/dist/traits/edible/edibleBehavior.d.ts +63 -0
- package/dist/traits/edible/edibleBehavior.d.ts.map +1 -0
- package/dist/traits/edible/edibleBehavior.js +157 -0
- package/dist/traits/edible/edibleBehavior.js.map +1 -0
- package/dist/traits/edible/edibleTrait.d.ts +57 -0
- package/dist/traits/edible/edibleTrait.d.ts.map +1 -0
- package/dist/traits/edible/edibleTrait.js +51 -0
- package/dist/traits/edible/edibleTrait.js.map +1 -0
- package/dist/traits/edible/index.d.ts +3 -0
- package/dist/traits/edible/index.d.ts.map +1 -0
- package/dist/traits/edible/index.js +20 -0
- package/dist/traits/edible/index.js.map +1 -0
- package/dist/traits/enterable/enterableTrait.d.ts +33 -0
- package/dist/traits/enterable/enterableTrait.d.ts.map +1 -0
- package/dist/traits/enterable/enterableTrait.js +38 -0
- package/dist/traits/enterable/enterableTrait.js.map +1 -0
- package/dist/traits/enterable/index.d.ts +5 -0
- package/dist/traits/enterable/index.d.ts.map +1 -0
- package/dist/traits/enterable/index.js +21 -0
- package/dist/traits/enterable/index.js.map +1 -0
- package/dist/traits/equipped/equippedTrait.d.ts +46 -0
- package/dist/traits/equipped/equippedTrait.d.ts.map +1 -0
- package/dist/traits/equipped/equippedTrait.js +34 -0
- package/dist/traits/equipped/equippedTrait.js.map +1 -0
- package/dist/traits/equipped/index.d.ts +2 -0
- package/dist/traits/equipped/index.d.ts.map +1 -0
- package/dist/traits/equipped/index.js +6 -0
- package/dist/traits/equipped/index.js.map +1 -0
- package/dist/traits/exit/exitBehavior.d.ts +51 -0
- package/dist/traits/exit/exitBehavior.d.ts.map +1 -0
- package/dist/traits/exit/exitBehavior.js +231 -0
- package/dist/traits/exit/exitBehavior.js.map +1 -0
- package/dist/traits/exit/exitTrait.d.ts +41 -0
- package/dist/traits/exit/exitTrait.d.ts.map +1 -0
- package/dist/traits/exit/exitTrait.js +75 -0
- package/dist/traits/exit/exitTrait.js.map +1 -0
- package/dist/traits/exit/index.d.ts +3 -0
- package/dist/traits/exit/index.d.ts.map +1 -0
- package/dist/traits/exit/index.js +9 -0
- package/dist/traits/exit/index.js.map +1 -0
- package/dist/traits/identity/identityBehavior.d.ts +64 -0
- package/dist/traits/identity/identityBehavior.d.ts.map +1 -0
- package/dist/traits/identity/identityBehavior.js +154 -0
- package/dist/traits/identity/identityBehavior.js.map +1 -0
- package/dist/traits/identity/identityTrait.d.ts +70 -0
- package/dist/traits/identity/identityTrait.d.ts.map +1 -0
- package/dist/traits/identity/identityTrait.js +79 -0
- package/dist/traits/identity/identityTrait.js.map +1 -0
- package/dist/traits/identity/index.d.ts +3 -0
- package/dist/traits/identity/index.d.ts.map +1 -0
- package/dist/traits/identity/index.js +20 -0
- package/dist/traits/identity/index.js.map +1 -0
- package/dist/traits/implementations.d.ts +51 -0
- package/dist/traits/implementations.d.ts.map +1 -0
- package/dist/traits/implementations.js +145 -0
- package/dist/traits/implementations.js.map +1 -0
- package/dist/traits/index.d.ts +36 -0
- package/dist/traits/index.d.ts.map +1 -0
- package/dist/traits/index.js +62 -0
- package/dist/traits/index.js.map +1 -0
- package/dist/traits/light-source/index.d.ts +3 -0
- package/dist/traits/light-source/index.d.ts.map +1 -0
- package/dist/traits/light-source/index.js +9 -0
- package/dist/traits/light-source/index.js.map +1 -0
- package/dist/traits/light-source/lightSourceBehavior.d.ts +57 -0
- package/dist/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
- package/dist/traits/light-source/lightSourceBehavior.js +135 -0
- package/dist/traits/light-source/lightSourceBehavior.js.map +1 -0
- package/dist/traits/light-source/lightSourceTrait.d.ts +28 -0
- package/dist/traits/light-source/lightSourceTrait.d.ts.map +1 -0
- package/dist/traits/light-source/lightSourceTrait.js +37 -0
- package/dist/traits/light-source/lightSourceTrait.js.map +1 -0
- package/dist/traits/lockable/index.d.ts +3 -0
- package/dist/traits/lockable/index.d.ts.map +1 -0
- package/dist/traits/lockable/index.js +20 -0
- package/dist/traits/lockable/index.js.map +1 -0
- package/dist/traits/lockable/lockableBehavior.d.ts +88 -0
- package/dist/traits/lockable/lockableBehavior.d.ts.map +1 -0
- package/dist/traits/lockable/lockableBehavior.js +196 -0
- package/dist/traits/lockable/lockableBehavior.js.map +1 -0
- package/dist/traits/lockable/lockableTrait.d.ts +59 -0
- package/dist/traits/lockable/lockableTrait.d.ts.map +1 -0
- package/dist/traits/lockable/lockableTrait.js +50 -0
- package/dist/traits/lockable/lockableTrait.js.map +1 -0
- package/dist/traits/moveable-scenery/index.d.ts +2 -0
- package/dist/traits/moveable-scenery/index.d.ts.map +1 -0
- package/dist/traits/moveable-scenery/index.js +18 -0
- package/dist/traits/moveable-scenery/index.js.map +1 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts +69 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.js +43 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
- package/dist/traits/npc/index.d.ts +5 -0
- package/dist/traits/npc/index.d.ts.map +1 -0
- package/dist/traits/npc/index.js +9 -0
- package/dist/traits/npc/index.js.map +1 -0
- package/dist/traits/npc/npcTrait.d.ts +128 -0
- package/dist/traits/npc/npcTrait.d.ts.map +1 -0
- package/dist/traits/npc/npcTrait.js +180 -0
- package/dist/traits/npc/npcTrait.js.map +1 -0
- package/dist/traits/openable/index.d.ts +3 -0
- package/dist/traits/openable/index.d.ts.map +1 -0
- package/dist/traits/openable/index.js +20 -0
- package/dist/traits/openable/index.js.map +1 -0
- package/dist/traits/openable/openableBehavior.d.ts +64 -0
- package/dist/traits/openable/openableBehavior.d.ts.map +1 -0
- package/dist/traits/openable/openableBehavior.js +109 -0
- package/dist/traits/openable/openableBehavior.js.map +1 -0
- package/dist/traits/openable/openableTrait.d.ts +46 -0
- package/dist/traits/openable/openableTrait.d.ts.map +1 -0
- package/dist/traits/openable/openableTrait.js +42 -0
- package/dist/traits/openable/openableTrait.js.map +1 -0
- package/dist/traits/portable/portableTrait.d.ts +26 -0
- package/dist/traits/portable/portableTrait.d.ts.map +1 -0
- package/dist/traits/portable/portableTrait.js +35 -0
- package/dist/traits/portable/portableTrait.js.map +1 -0
- package/dist/traits/pullable/index.d.ts +2 -0
- package/dist/traits/pullable/index.d.ts.map +1 -0
- package/dist/traits/pullable/index.js +18 -0
- package/dist/traits/pullable/index.js.map +1 -0
- package/dist/traits/pullable/pullableTrait.d.ts +81 -0
- package/dist/traits/pullable/pullableTrait.d.ts.map +1 -0
- package/dist/traits/pullable/pullableTrait.js +44 -0
- package/dist/traits/pullable/pullableTrait.js.map +1 -0
- package/dist/traits/pushable/index.d.ts +2 -0
- package/dist/traits/pushable/index.d.ts.map +1 -0
- package/dist/traits/pushable/index.js +18 -0
- package/dist/traits/pushable/index.js.map +1 -0
- package/dist/traits/pushable/pushableTrait.d.ts +81 -0
- package/dist/traits/pushable/pushableTrait.d.ts.map +1 -0
- package/dist/traits/pushable/pushableTrait.js +44 -0
- package/dist/traits/pushable/pushableTrait.js.map +1 -0
- package/dist/traits/readable/index.d.ts +3 -0
- package/dist/traits/readable/index.d.ts.map +1 -0
- package/dist/traits/readable/index.js +9 -0
- package/dist/traits/readable/index.js.map +1 -0
- package/dist/traits/readable/readableBehavior.d.ts +42 -0
- package/dist/traits/readable/readableBehavior.d.ts.map +1 -0
- package/dist/traits/readable/readableBehavior.js +174 -0
- package/dist/traits/readable/readableBehavior.js.map +1 -0
- package/dist/traits/readable/readableTrait.d.ts +37 -0
- package/dist/traits/readable/readableTrait.d.ts.map +1 -0
- package/dist/traits/readable/readableTrait.js +51 -0
- package/dist/traits/readable/readableTrait.js.map +1 -0
- package/dist/traits/register-all.d.ts +10 -0
- package/dist/traits/register-all.d.ts.map +1 -0
- package/dist/traits/register-all.js +19 -0
- package/dist/traits/register-all.js.map +1 -0
- package/dist/traits/room/index.d.ts +9 -0
- package/dist/traits/room/index.d.ts.map +1 -0
- package/dist/traits/room/index.js +14 -0
- package/dist/traits/room/index.js.map +1 -0
- package/dist/traits/room/roomBehavior.d.ts +87 -0
- package/dist/traits/room/roomBehavior.d.ts.map +1 -0
- package/dist/traits/room/roomBehavior.js +232 -0
- package/dist/traits/room/roomBehavior.js.map +1 -0
- package/dist/traits/room/roomTrait.d.ts +87 -0
- package/dist/traits/room/roomTrait.d.ts.map +1 -0
- package/dist/traits/room/roomTrait.js +59 -0
- package/dist/traits/room/roomTrait.js.map +1 -0
- package/dist/traits/scenery/index.d.ts +3 -0
- package/dist/traits/scenery/index.d.ts.map +1 -0
- package/dist/traits/scenery/index.js +9 -0
- package/dist/traits/scenery/index.js.map +1 -0
- package/dist/traits/scenery/sceneryBehavior.d.ts +21 -0
- package/dist/traits/scenery/sceneryBehavior.d.ts.map +1 -0
- package/dist/traits/scenery/sceneryBehavior.js +42 -0
- package/dist/traits/scenery/sceneryBehavior.js.map +1 -0
- package/dist/traits/scenery/sceneryTrait.d.ts +30 -0
- package/dist/traits/scenery/sceneryTrait.d.ts.map +1 -0
- package/dist/traits/scenery/sceneryTrait.js +39 -0
- package/dist/traits/scenery/sceneryTrait.js.map +1 -0
- package/dist/traits/supporter/index.d.ts +3 -0
- package/dist/traits/supporter/index.d.ts.map +1 -0
- package/dist/traits/supporter/index.js +9 -0
- package/dist/traits/supporter/index.js.map +1 -0
- package/dist/traits/supporter/supporterBehavior.d.ts +83 -0
- package/dist/traits/supporter/supporterBehavior.d.ts.map +1 -0
- package/dist/traits/supporter/supporterBehavior.js +210 -0
- package/dist/traits/supporter/supporterBehavior.js.map +1 -0
- package/dist/traits/supporter/supporterTrait.d.ts +26 -0
- package/dist/traits/supporter/supporterTrait.d.ts.map +1 -0
- package/dist/traits/supporter/supporterTrait.js +30 -0
- package/dist/traits/supporter/supporterTrait.js.map +1 -0
- package/dist/traits/switchable/index.d.ts +3 -0
- package/dist/traits/switchable/index.d.ts.map +1 -0
- package/dist/traits/switchable/index.js +20 -0
- package/dist/traits/switchable/index.js.map +1 -0
- package/dist/traits/switchable/switchableBehavior.d.ts +73 -0
- package/dist/traits/switchable/switchableBehavior.d.ts.map +1 -0
- package/dist/traits/switchable/switchableBehavior.js +191 -0
- package/dist/traits/switchable/switchableBehavior.js.map +1 -0
- package/dist/traits/switchable/switchableTrait.d.ts +61 -0
- package/dist/traits/switchable/switchableTrait.d.ts.map +1 -0
- package/dist/traits/switchable/switchableTrait.js +52 -0
- package/dist/traits/switchable/switchableTrait.js.map +1 -0
- package/dist/traits/trait-types.d.ts +81 -0
- package/dist/traits/trait-types.d.ts.map +1 -0
- package/dist/traits/trait-types.js +146 -0
- package/dist/traits/trait-types.js.map +1 -0
- package/dist/traits/trait.d.ts +42 -0
- package/dist/traits/trait.d.ts.map +1 -0
- package/dist/traits/trait.js +42 -0
- package/dist/traits/trait.js.map +1 -0
- package/dist/traits/vehicle/index.d.ts +6 -0
- package/dist/traits/vehicle/index.d.ts.map +1 -0
- package/dist/traits/vehicle/index.js +22 -0
- package/dist/traits/vehicle/index.js.map +1 -0
- package/dist/traits/vehicle/vehicleBehavior.d.ts +62 -0
- package/dist/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
- package/dist/traits/vehicle/vehicleBehavior.js +145 -0
- package/dist/traits/vehicle/vehicleBehavior.js.map +1 -0
- package/dist/traits/vehicle/vehicleTrait.d.ts +77 -0
- package/dist/traits/vehicle/vehicleTrait.d.ts.map +1 -0
- package/dist/traits/vehicle/vehicleTrait.js +92 -0
- package/dist/traits/vehicle/vehicleTrait.js.map +1 -0
- package/dist/traits/weapon/index.d.ts +3 -0
- package/dist/traits/weapon/index.d.ts.map +1 -0
- package/dist/traits/weapon/index.js +8 -0
- package/dist/traits/weapon/index.js.map +1 -0
- package/dist/traits/weapon/weaponBehavior.d.ts +47 -0
- package/dist/traits/weapon/weaponBehavior.d.ts.map +1 -0
- package/dist/traits/weapon/weaponBehavior.js +106 -0
- package/dist/traits/weapon/weaponBehavior.js.map +1 -0
- package/dist/traits/weapon/weaponTrait.d.ts +67 -0
- package/dist/traits/weapon/weaponTrait.d.ts.map +1 -0
- package/dist/traits/weapon/weaponTrait.js +60 -0
- package/dist/traits/weapon/weaponTrait.js.map +1 -0
- package/dist/traits/wearable/index.d.ts +3 -0
- package/dist/traits/wearable/index.d.ts.map +1 -0
- package/dist/traits/wearable/index.js +20 -0
- package/dist/traits/wearable/index.js.map +1 -0
- package/dist/traits/wearable/wearableBehavior.d.ts +64 -0
- package/dist/traits/wearable/wearableBehavior.d.ts.map +1 -0
- package/dist/traits/wearable/wearableBehavior.js +142 -0
- package/dist/traits/wearable/wearableBehavior.js.map +1 -0
- package/dist/traits/wearable/wearableTrait.d.ts +54 -0
- package/dist/traits/wearable/wearableTrait.d.ts.map +1 -0
- package/dist/traits/wearable/wearableTrait.js +53 -0
- package/dist/traits/wearable/wearableTrait.js.map +1 -0
- package/dist/utils/event-utils.d.ts +30 -0
- package/dist/utils/event-utils.d.ts.map +1 -0
- package/dist/utils/event-utils.js +33 -0
- package/dist/utils/event-utils.js.map +1 -0
- package/dist/world/AuthorModel.d.ts +151 -0
- package/dist/world/AuthorModel.d.ts.map +1 -0
- package/dist/world/AuthorModel.js +416 -0
- package/dist/world/AuthorModel.js.map +1 -0
- package/dist/world/SharedDataStore.d.ts +24 -0
- package/dist/world/SharedDataStore.d.ts.map +1 -0
- package/dist/world/SharedDataStore.js +50 -0
- package/dist/world/SharedDataStore.js.map +1 -0
- package/dist/world/SpatialIndex.d.ts +16 -0
- package/dist/world/SpatialIndex.d.ts.map +1 -0
- package/dist/world/SpatialIndex.js +117 -0
- package/dist/world/SpatialIndex.js.map +1 -0
- package/dist/world/VisibilityBehavior.d.ts +83 -0
- package/dist/world/VisibilityBehavior.d.ts.map +1 -0
- package/dist/world/VisibilityBehavior.js +484 -0
- package/dist/world/VisibilityBehavior.js.map +1 -0
- package/dist/world/WorldModel.d.ts +270 -0
- package/dist/world/WorldModel.d.ts.map +1 -0
- package/dist/world/WorldModel.js +1028 -0
- package/dist/world/WorldModel.js.map +1 -0
- package/dist/world/capabilities.d.ts +36 -0
- package/dist/world/capabilities.d.ts.map +1 -0
- package/dist/world/capabilities.js +18 -0
- package/dist/world/capabilities.js.map +1 -0
- package/dist/world/index.d.ts +7 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +21 -0
- package/dist/world/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/entities/if-entity.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.IFEntity = void 0;
|
|
5
|
+
const trait_1 = require("../traits/trait");
|
|
6
|
+
const trait_types_1 = require("../traits/trait-types");
|
|
7
|
+
/**
|
|
8
|
+
* Interactive Fiction Entity with trait-based composition.
|
|
9
|
+
* Implements the core Entity interface and adds trait management capabilities.
|
|
10
|
+
*/
|
|
11
|
+
class IFEntity {
|
|
12
|
+
id;
|
|
13
|
+
type;
|
|
14
|
+
attributes;
|
|
15
|
+
relationships;
|
|
16
|
+
traits;
|
|
17
|
+
/**
|
|
18
|
+
* Author-controlled disambiguation priorities per action
|
|
19
|
+
* Higher priority = more likely to be selected when ambiguous
|
|
20
|
+
* Key is action ID (e.g., 'if.action.eating')
|
|
21
|
+
* Value is priority (default 100, higher = preferred)
|
|
22
|
+
*/
|
|
23
|
+
scopePriorities = new Map();
|
|
24
|
+
/**
|
|
25
|
+
* Author-controlled minimum scope levels
|
|
26
|
+
* Allows entities to be "in scope" regardless of spatial location.
|
|
27
|
+
* Key is room ID (or '*' for all rooms)
|
|
28
|
+
* Value is minimum scope level (0=UNAWARE, 1=AWARE, 2=VISIBLE, 3=REACHABLE, 4=CARRIED)
|
|
29
|
+
*
|
|
30
|
+
* Example uses:
|
|
31
|
+
* - sky.setMinimumScope(2) - always visible everywhere
|
|
32
|
+
* - mountain.setMinimumScope(2, ['overlook']) - visible from specific room
|
|
33
|
+
* - butterfly.setMinimumScope(3, ['garden']) - reachable in garden
|
|
34
|
+
*/
|
|
35
|
+
minimumScopes = new Map();
|
|
36
|
+
/**
|
|
37
|
+
* Event handlers for this entity
|
|
38
|
+
* Key is the event type (e.g., 'if.event.pushed')
|
|
39
|
+
* Value is the handler function
|
|
40
|
+
*/
|
|
41
|
+
on;
|
|
42
|
+
constructor(id, type, params) {
|
|
43
|
+
this.id = id;
|
|
44
|
+
this.type = type;
|
|
45
|
+
this.attributes = params?.attributes ? { ...params.attributes } : {};
|
|
46
|
+
this.relationships = params?.relationships || {};
|
|
47
|
+
this.traits = new Map();
|
|
48
|
+
// Store entityType in attributes when created by WorldModel
|
|
49
|
+
// (params?.attributes will contain it when set by WorldModel.createEntity)
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if entity has a specific trait
|
|
53
|
+
*/
|
|
54
|
+
has(type) {
|
|
55
|
+
return this.traits.has(type);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a typed trait from the entity
|
|
59
|
+
*/
|
|
60
|
+
get(type) {
|
|
61
|
+
const traitType = typeof type === 'string' ? type :
|
|
62
|
+
typeof type === 'function' ? type.type : type;
|
|
63
|
+
return this.traits.get(traitType);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Alias for get() method - for backwards compatibility
|
|
67
|
+
*/
|
|
68
|
+
getTrait(type) {
|
|
69
|
+
return this.get(type);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Add a trait to the entity
|
|
73
|
+
*/
|
|
74
|
+
add(trait) {
|
|
75
|
+
if (!(0, trait_1.isTrait)(trait)) {
|
|
76
|
+
throw new Error('Invalid trait: must have a type property');
|
|
77
|
+
}
|
|
78
|
+
// Warn and ignore if trait already exists
|
|
79
|
+
if (this.traits.has(trait.type)) {
|
|
80
|
+
console.warn(`Entity "${this.id}" already has trait: ${trait.type} - ignoring duplicate add`);
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
this.traits.set(trait.type, trait);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Remove a trait from the entity
|
|
88
|
+
*/
|
|
89
|
+
remove(type) {
|
|
90
|
+
return this.traits.delete(type);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if entity has all specified traits
|
|
94
|
+
*/
|
|
95
|
+
hasAll(...types) {
|
|
96
|
+
return types.every(type => this.traits.has(type));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if entity has any of the specified traits
|
|
100
|
+
*/
|
|
101
|
+
hasAny(...types) {
|
|
102
|
+
return types.some(type => this.traits.has(type));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get all traits on this entity
|
|
106
|
+
*/
|
|
107
|
+
getTraits() {
|
|
108
|
+
return Array.from(this.traits.values());
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get all trait types on this entity
|
|
112
|
+
*/
|
|
113
|
+
getTraitTypes() {
|
|
114
|
+
return Array.from(this.traits.keys());
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Clear all traits from the entity
|
|
118
|
+
*/
|
|
119
|
+
clearTraits() {
|
|
120
|
+
this.traits.clear();
|
|
121
|
+
}
|
|
122
|
+
// ========== Disambiguation Scoring ==========
|
|
123
|
+
/**
|
|
124
|
+
* Get or set author-controlled disambiguation priority for an action.
|
|
125
|
+
*
|
|
126
|
+
* When multiple entities match a command, higher priority entities are
|
|
127
|
+
* preferred for automatic disambiguation.
|
|
128
|
+
*
|
|
129
|
+
* @param actionId - The action ID (e.g., 'if.action.eating')
|
|
130
|
+
* @param priority - Optional priority to set (100 = default, higher = preferred)
|
|
131
|
+
* @returns The current priority for this action (default 100)
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* // Make real apple preferred for eating over wax apple
|
|
135
|
+
* realApple.scope('if.action.eating', 150);
|
|
136
|
+
* waxApple.scope('if.action.eating', 50);
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* // Get current priority
|
|
140
|
+
* const priority = apple.scope('if.action.eating'); // Returns 150
|
|
141
|
+
*/
|
|
142
|
+
scope(actionId, priority) {
|
|
143
|
+
if (priority !== undefined) {
|
|
144
|
+
this.scopePriorities.set(actionId, priority);
|
|
145
|
+
}
|
|
146
|
+
return this.scopePriorities.get(actionId) ?? 100; // Default priority is 100
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Clear disambiguation priority for an action (resets to default)
|
|
150
|
+
*/
|
|
151
|
+
clearScope(actionId) {
|
|
152
|
+
this.scopePriorities.delete(actionId);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Clear all disambiguation priorities
|
|
156
|
+
*/
|
|
157
|
+
clearAllScopes() {
|
|
158
|
+
this.scopePriorities.clear();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get all scope priorities for serialization
|
|
162
|
+
*/
|
|
163
|
+
getScopePriorities() {
|
|
164
|
+
return Object.fromEntries(this.scopePriorities);
|
|
165
|
+
}
|
|
166
|
+
// ========== Minimum Scope (Author-Controlled Scope Additions) ==========
|
|
167
|
+
/**
|
|
168
|
+
* Set minimum scope level for this entity.
|
|
169
|
+
*
|
|
170
|
+
* Makes an entity "in scope" regardless of its spatial location.
|
|
171
|
+
* The scope resolver will return the maximum of the physical scope
|
|
172
|
+
* and the minimum scope (additive only - can raise scope, not lower it).
|
|
173
|
+
*
|
|
174
|
+
* Scope levels (numeric values match ScopeLevel enum in stdlib):
|
|
175
|
+
* - 0: UNAWARE - not in scope
|
|
176
|
+
* - 1: AWARE - can hear/smell but not see
|
|
177
|
+
* - 2: VISIBLE - can see but not reach
|
|
178
|
+
* - 3: REACHABLE - can physically interact
|
|
179
|
+
* - 4: CARRIED - in inventory (rarely used for minimum)
|
|
180
|
+
*
|
|
181
|
+
* @param level The minimum scope level (0-4)
|
|
182
|
+
* @param rooms Optional array of room IDs where this applies. If omitted, applies everywhere.
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* // Sky is always visible everywhere
|
|
186
|
+
* sky.setMinimumScope(2);
|
|
187
|
+
*
|
|
188
|
+
* // Mountain visible only from overlook and trail
|
|
189
|
+
* mountain.setMinimumScope(2, ['overlook', 'mountain_trail']);
|
|
190
|
+
*
|
|
191
|
+
* // Butterfly reachable (but may escape) in garden areas
|
|
192
|
+
* butterfly.setMinimumScope(3, ['garden', 'meadow', 'pond']);
|
|
193
|
+
*
|
|
194
|
+
* // Ticking clock audible from adjacent rooms
|
|
195
|
+
* clock.setMinimumScope(1, ['hallway', 'study']);
|
|
196
|
+
*/
|
|
197
|
+
setMinimumScope(level, rooms) {
|
|
198
|
+
if (rooms && rooms.length > 0) {
|
|
199
|
+
// Set for specific rooms
|
|
200
|
+
for (const roomId of rooms) {
|
|
201
|
+
this.minimumScopes.set(roomId, level);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// Set for all rooms (use '*' as wildcard)
|
|
206
|
+
this.minimumScopes.set('*', level);
|
|
207
|
+
}
|
|
208
|
+
return this;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get the minimum scope level for this entity in a specific room.
|
|
212
|
+
*
|
|
213
|
+
* @param roomId The room to check (or null to get global minimum)
|
|
214
|
+
* @returns The minimum scope level, or 0 (UNAWARE) if not set
|
|
215
|
+
*/
|
|
216
|
+
getMinimumScope(roomId) {
|
|
217
|
+
// Check specific room first
|
|
218
|
+
if (roomId && this.minimumScopes.has(roomId)) {
|
|
219
|
+
return this.minimumScopes.get(roomId);
|
|
220
|
+
}
|
|
221
|
+
// Fall back to global wildcard
|
|
222
|
+
if (this.minimumScopes.has('*')) {
|
|
223
|
+
return this.minimumScopes.get('*');
|
|
224
|
+
}
|
|
225
|
+
// No minimum set
|
|
226
|
+
return 0;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Clear minimum scope for specific rooms or all rooms.
|
|
230
|
+
*
|
|
231
|
+
* @param rooms Optional array of room IDs to clear. If omitted, clears all.
|
|
232
|
+
*/
|
|
233
|
+
clearMinimumScope(rooms) {
|
|
234
|
+
if (rooms && rooms.length > 0) {
|
|
235
|
+
for (const roomId of rooms) {
|
|
236
|
+
this.minimumScopes.delete(roomId);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
this.minimumScopes.clear();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get all minimum scopes for serialization
|
|
245
|
+
*/
|
|
246
|
+
getMinimumScopes() {
|
|
247
|
+
return Object.fromEntries(this.minimumScopes);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Clone this entity with all its traits
|
|
251
|
+
*/
|
|
252
|
+
clone(newId) {
|
|
253
|
+
const cloned = new IFEntity(newId, this.type, {
|
|
254
|
+
attributes: JSON.parse(JSON.stringify(this.attributes)),
|
|
255
|
+
relationships: JSON.parse(JSON.stringify(this.relationships)) // Deep copy
|
|
256
|
+
});
|
|
257
|
+
// Clone traits (deep copy)
|
|
258
|
+
for (const [type, trait] of this.traits) {
|
|
259
|
+
cloned.traits.set(type, JSON.parse(JSON.stringify(trait)));
|
|
260
|
+
}
|
|
261
|
+
// Clone scope priorities
|
|
262
|
+
for (const [actionId, priority] of this.scopePriorities) {
|
|
263
|
+
cloned.scopePriorities.set(actionId, priority);
|
|
264
|
+
}
|
|
265
|
+
// Clone minimum scopes
|
|
266
|
+
for (const [roomId, level] of this.minimumScopes) {
|
|
267
|
+
cloned.minimumScopes.set(roomId, level);
|
|
268
|
+
}
|
|
269
|
+
return cloned;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Serialize entity and traits to JSON
|
|
273
|
+
*/
|
|
274
|
+
toJSON() {
|
|
275
|
+
const json = {
|
|
276
|
+
id: this.id,
|
|
277
|
+
type: this.type,
|
|
278
|
+
attributes: this.attributes,
|
|
279
|
+
relationships: this.relationships,
|
|
280
|
+
traits: Array.from(this.traits.entries()).map(([_, trait]) => ({
|
|
281
|
+
...trait
|
|
282
|
+
})),
|
|
283
|
+
// Include version for future compatibility
|
|
284
|
+
version: 3
|
|
285
|
+
};
|
|
286
|
+
// Include scope priorities if any
|
|
287
|
+
if (this.scopePriorities.size > 0) {
|
|
288
|
+
json.scopePriorities = Object.fromEntries(this.scopePriorities);
|
|
289
|
+
}
|
|
290
|
+
// Include minimum scopes if any
|
|
291
|
+
if (this.minimumScopes.size > 0) {
|
|
292
|
+
json.minimumScopes = Object.fromEntries(this.minimumScopes);
|
|
293
|
+
}
|
|
294
|
+
return json;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Create entity from JSON data
|
|
298
|
+
*/
|
|
299
|
+
static fromJSON(json) {
|
|
300
|
+
// Determine type - use stored type or try to infer from ID
|
|
301
|
+
let type = json.type || 'object';
|
|
302
|
+
// If loading old format without explicit type, try to infer from attributes
|
|
303
|
+
if (!json.version && json.attributes) {
|
|
304
|
+
if (json.attributes.entityType) {
|
|
305
|
+
type = json.attributes.entityType;
|
|
306
|
+
}
|
|
307
|
+
else if (json.id && json.id.match(/^[a-z][0-9a-z]{2}$/)) {
|
|
308
|
+
// Try to infer type from ID prefix for new format IDs
|
|
309
|
+
const prefix = json.id[0];
|
|
310
|
+
const typeMap = {
|
|
311
|
+
'r': 'room',
|
|
312
|
+
'd': 'door',
|
|
313
|
+
'i': 'item',
|
|
314
|
+
'a': 'actor',
|
|
315
|
+
'c': 'container',
|
|
316
|
+
's': 'supporter',
|
|
317
|
+
'y': 'scenery',
|
|
318
|
+
'e': 'exit',
|
|
319
|
+
'o': 'object'
|
|
320
|
+
};
|
|
321
|
+
type = typeMap[prefix] || 'object';
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
const entity = new IFEntity(json.id, type, {
|
|
325
|
+
attributes: json.attributes,
|
|
326
|
+
relationships: json.relationships
|
|
327
|
+
});
|
|
328
|
+
if (json.traits && Array.isArray(json.traits)) {
|
|
329
|
+
for (const traitData of json.traits) {
|
|
330
|
+
entity.traits.set(traitData.type, traitData);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// Restore scope priorities (version 3+)
|
|
334
|
+
if (json.scopePriorities && typeof json.scopePriorities === 'object') {
|
|
335
|
+
for (const [actionId, priority] of Object.entries(json.scopePriorities)) {
|
|
336
|
+
entity.scopePriorities.set(actionId, priority);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Restore minimum scopes (version 3+)
|
|
340
|
+
if (json.minimumScopes && typeof json.minimumScopes === 'object') {
|
|
341
|
+
for (const [roomId, level] of Object.entries(json.minimumScopes)) {
|
|
342
|
+
entity.minimumScopes.set(roomId, level);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return entity;
|
|
346
|
+
}
|
|
347
|
+
// ========== Convenience Properties ==========
|
|
348
|
+
/**
|
|
349
|
+
* Check if this is a room
|
|
350
|
+
*/
|
|
351
|
+
get isRoom() {
|
|
352
|
+
return this.has(trait_types_1.TraitType.ROOM);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Check if this can contain other entities
|
|
356
|
+
*/
|
|
357
|
+
get canContain() {
|
|
358
|
+
return this.has(trait_types_1.TraitType.CONTAINER) || this.has(trait_types_1.TraitType.SUPPORTER) ||
|
|
359
|
+
this.has(trait_types_1.TraitType.ROOM) || this.has(trait_types_1.TraitType.ACTOR);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Check if this is takeable (default behavior unless has scenery trait)
|
|
363
|
+
*/
|
|
364
|
+
get isTakeable() {
|
|
365
|
+
return !this.has(trait_types_1.TraitType.SCENERY) && !this.has(trait_types_1.TraitType.ROOM) && !this.has(trait_types_1.TraitType.DOOR);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Check if this is fixed in place (has scenery trait)
|
|
369
|
+
*/
|
|
370
|
+
get isScenery() {
|
|
371
|
+
return this.has(trait_types_1.TraitType.SCENERY);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Check if this can be opened
|
|
375
|
+
*/
|
|
376
|
+
get isOpenable() {
|
|
377
|
+
return this.has(trait_types_1.TraitType.OPENABLE);
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Check if this is currently open
|
|
381
|
+
*/
|
|
382
|
+
get isOpen() {
|
|
383
|
+
const openable = this.get(trait_types_1.TraitType.OPENABLE);
|
|
384
|
+
return openable ? openable.isOpen : false;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Check if this can be locked
|
|
388
|
+
*/
|
|
389
|
+
get isLockable() {
|
|
390
|
+
return this.has(trait_types_1.TraitType.LOCKABLE);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Check if this is currently locked
|
|
394
|
+
*/
|
|
395
|
+
get isLocked() {
|
|
396
|
+
const lockable = this.get(trait_types_1.TraitType.LOCKABLE);
|
|
397
|
+
return lockable ? lockable.isLocked : false;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Check if this is a container
|
|
401
|
+
*/
|
|
402
|
+
get isContainer() {
|
|
403
|
+
return this.has(trait_types_1.TraitType.CONTAINER);
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Check if this is a supporter
|
|
407
|
+
*/
|
|
408
|
+
get isSupporter() {
|
|
409
|
+
return this.has(trait_types_1.TraitType.SUPPORTER);
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Check if this is a door
|
|
413
|
+
*/
|
|
414
|
+
get isDoor() {
|
|
415
|
+
return this.has(trait_types_1.TraitType.DOOR);
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Check if this is an actor
|
|
419
|
+
*/
|
|
420
|
+
get isActor() {
|
|
421
|
+
return this.has(trait_types_1.TraitType.ACTOR);
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Check if this is the player
|
|
425
|
+
*/
|
|
426
|
+
get isPlayer() {
|
|
427
|
+
const actor = this.get(trait_types_1.TraitType.ACTOR);
|
|
428
|
+
return actor ? actor.isPlayer : false;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Check if this provides light
|
|
432
|
+
*/
|
|
433
|
+
get providesLight() {
|
|
434
|
+
const lightSource = this.get(trait_types_1.TraitType.LIGHT_SOURCE);
|
|
435
|
+
return lightSource ? lightSource.isLit : false;
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Check if this is switchable
|
|
439
|
+
*/
|
|
440
|
+
get isSwitchable() {
|
|
441
|
+
return this.has(trait_types_1.TraitType.SWITCHABLE);
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Check if this can be entered by actors
|
|
445
|
+
* Vehicles are inherently enterable (boats, baskets, etc.)
|
|
446
|
+
*/
|
|
447
|
+
get enterable() {
|
|
448
|
+
return this.has(trait_types_1.TraitType.ENTERABLE) || this.has(trait_types_1.TraitType.VEHICLE);
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Check if this is switched on
|
|
452
|
+
*/
|
|
453
|
+
get isOn() {
|
|
454
|
+
const switchable = this.get(trait_types_1.TraitType.SWITCHABLE);
|
|
455
|
+
return switchable ? switchable.isOn : false;
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Get the name of this entity
|
|
459
|
+
*/
|
|
460
|
+
get name() {
|
|
461
|
+
// First check for displayName (new system)
|
|
462
|
+
if (this.attributes.displayName) {
|
|
463
|
+
return this.attributes.displayName;
|
|
464
|
+
}
|
|
465
|
+
// Then check identity trait
|
|
466
|
+
const identity = this.get(trait_types_1.TraitType.IDENTITY);
|
|
467
|
+
if (identity && identity.name) {
|
|
468
|
+
return identity.name;
|
|
469
|
+
}
|
|
470
|
+
// Fall back to name attribute
|
|
471
|
+
if (this.attributes.name) {
|
|
472
|
+
return this.attributes.name;
|
|
473
|
+
}
|
|
474
|
+
// Last resort: use ID
|
|
475
|
+
return this.id;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Get the description of this entity
|
|
479
|
+
*/
|
|
480
|
+
get description() {
|
|
481
|
+
const identity = this.get(trait_types_1.TraitType.IDENTITY);
|
|
482
|
+
return identity ? identity.description : undefined;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Get the weight of this entity
|
|
486
|
+
*/
|
|
487
|
+
get weight() {
|
|
488
|
+
return this.attributes.weight || 0;
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Alias for has() method - for backwards compatibility
|
|
492
|
+
*/
|
|
493
|
+
hasTrait(type) {
|
|
494
|
+
return this.has(type);
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
exports.IFEntity = IFEntity;
|
|
498
|
+
//# sourceMappingURL=if-entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"if-entity.js","sourceRoot":"","sources":["../../src/entities/if-entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { IFEntity } from './if-entity';
|
|
2
|
+
export { EntityStore } from './entity-store';
|
|
3
|
+
export { EntityType, isEntityType, getEntityTypePrefix } from './entity-types';
|
|
4
|
+
export type { EntityType as EntityTypeValue } from './entity-types';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/entities/index.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getEntityTypePrefix = exports.isEntityType = exports.EntityType = exports.EntityStore = exports.IFEntity = void 0;
|
|
5
|
+
var if_entity_1 = require("./if-entity");
|
|
6
|
+
Object.defineProperty(exports, "IFEntity", { enumerable: true, get: function () { return if_entity_1.IFEntity; } });
|
|
7
|
+
var entity_store_1 = require("./entity-store");
|
|
8
|
+
Object.defineProperty(exports, "EntityStore", { enumerable: true, get: function () { return entity_store_1.EntityStore; } });
|
|
9
|
+
var entity_types_1 = require("./entity-types");
|
|
10
|
+
Object.defineProperty(exports, "EntityType", { enumerable: true, get: function () { return entity_types_1.EntityType; } });
|
|
11
|
+
Object.defineProperty(exports, "isEntityType", { enumerable: true, get: function () { return entity_types_1.isEntityType; } });
|
|
12
|
+
Object.defineProperty(exports, "getEntityTypePrefix", { enumerable: true, get: function () { return entity_types_1.getEntityTypePrefix; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";AAAA,6CAA6C;;;AAE7C,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,+CAA+E;AAAtE,0GAAA,UAAU,OAAA;AAAE,4GAAA,YAAY,OAAA;AAAE,mHAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event handler types for the event system
|
|
3
|
+
*
|
|
4
|
+
* Note: ADR-075 effect-returning handlers are defined in @sharpee/event-processor.
|
|
5
|
+
* This file contains basic event types used by world-model.
|
|
6
|
+
*/
|
|
7
|
+
import type { ISemanticEvent } from '@sharpee/core';
|
|
8
|
+
/**
|
|
9
|
+
* Game event that can be handled by entities or the story
|
|
10
|
+
*/
|
|
11
|
+
export interface IGameEvent extends ISemanticEvent {
|
|
12
|
+
type: string;
|
|
13
|
+
data: Record<string, any>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Legacy handler signature for entity event handlers
|
|
17
|
+
* These handlers directly mutate world state and return events.
|
|
18
|
+
*
|
|
19
|
+
* Note: For ADR-075 effect-returning handlers, use StoryEventHandler
|
|
20
|
+
* from @sharpee/event-processor
|
|
21
|
+
*/
|
|
22
|
+
export type LegacyEntityEventHandler = (event: IGameEvent, world?: any) => void | ISemanticEvent[];
|
|
23
|
+
/**
|
|
24
|
+
* Simple event handler that only receives the event (no world access)
|
|
25
|
+
* Used for story-level daemons and event listeners
|
|
26
|
+
*/
|
|
27
|
+
export type SimpleEventHandler = (event: IGameEvent) => void | ISemanticEvent[];
|
|
28
|
+
/**
|
|
29
|
+
* Collection of event handlers keyed by event type
|
|
30
|
+
*/
|
|
31
|
+
export interface IEventHandlers {
|
|
32
|
+
[eventType: string]: LegacyEntityEventHandler | LegacyEntityEventHandler[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Entity with event handling capability
|
|
36
|
+
*/
|
|
37
|
+
export interface IEventCapableEntity {
|
|
38
|
+
/**
|
|
39
|
+
* Event handlers for this entity
|
|
40
|
+
* Key is the event type (e.g., 'if.event.pushed')
|
|
41
|
+
* Value is a handler function or array of handlers
|
|
42
|
+
*/
|
|
43
|
+
on?: IEventHandlers;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,cAAc,EAAE,CAAC;AAEnG;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,cAAc,EAAE,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,GAAG,wBAAwB,EAAE,CAAC;CAC5E;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Event handler types for the event system
|
|
4
|
+
*
|
|
5
|
+
* Note: ADR-075 effect-returning handlers are defined in @sharpee/event-processor.
|
|
6
|
+
* This file contains basic event types used by world-model.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { WorldModel } from '../world';
|
|
2
|
+
/**
|
|
3
|
+
* Register standard IF event handlers with the world model
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerStandardEventHandlers(world: WorldModel): void;
|
|
6
|
+
/**
|
|
7
|
+
* Register event validators
|
|
8
|
+
*/
|
|
9
|
+
export declare function registerStandardEventValidators(world: WorldModel): void;
|
|
10
|
+
/**
|
|
11
|
+
* Register event previewers
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerStandardEventPreviewers(world: WorldModel): void;
|
|
14
|
+
//# sourceMappingURL=event-handler-registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-handler-registration.d.ts","sourceRoot":"","sources":["../../src/examples/event-handler-registration.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAgB,MAAM,UAAU,CAAC;AAKpD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAsFrE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAmCvE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CA6BvE"}
|