@jgengine/core 0.9.0 → 0.11.0
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/CHANGELOG.md +34 -3
- package/LICENSE +203 -661
- package/README.md +1 -1
- package/dist/ai/crowd.d.ts +55 -0
- package/dist/ai/crowd.js +114 -0
- package/dist/ai/flock.d.ts +5 -2
- package/dist/ai/flock.js +5 -2
- package/dist/ai/groupAssist.d.ts +1 -0
- package/dist/ai/groupAssist.js +1 -0
- package/dist/ai/heatSystem.d.ts +76 -0
- package/dist/ai/heatSystem.js +97 -0
- package/dist/ai/interestScheduler.d.ts +107 -0
- package/dist/ai/interestScheduler.js +118 -0
- package/dist/ai/jobBoard.d.ts +1 -0
- package/dist/ai/jobBoard.js +1 -0
- package/dist/ai/laneSelect.d.ts +5 -2
- package/dist/ai/laneSelect.js +5 -2
- package/dist/ai/mobBrain.d.ts +1 -0
- package/dist/ai/mobBrain.js +1 -0
- package/dist/ai/spawnDirector.d.ts +19 -1
- package/dist/ai/spawnDirector.js +53 -26
- package/dist/ai/spawnPoint.d.ts +7 -0
- package/dist/ai/spawnPoint.js +7 -0
- package/dist/ai/targetAcquisition.d.ts +84 -0
- package/dist/ai/targetAcquisition.js +92 -0
- package/dist/anim/easing.d.ts +19 -0
- package/dist/anim/easing.js +19 -0
- package/dist/anim/oscillator.d.ts +12 -0
- package/dist/anim/oscillator.js +25 -0
- package/dist/area/areaEffectField.d.ts +127 -0
- package/dist/area/areaEffectField.js +175 -0
- package/dist/area/stackPolicy.d.ts +47 -0
- package/dist/area/stackPolicy.js +99 -0
- package/dist/audio/audioFalloff.d.ts +5 -2
- package/dist/audio/music.d.ts +53 -0
- package/dist/audio/music.js +34 -0
- package/dist/audio/synth.d.ts +60 -0
- package/dist/audio/synth.js +8 -0
- package/dist/authoring.d.ts +15 -0
- package/dist/authoring.js +15 -0
- package/dist/board/laneBoard.d.ts +13 -0
- package/dist/board/laneBoard.js +13 -0
- package/dist/board/timelineBoard.d.ts +10 -0
- package/dist/board/timelineBoard.js +10 -0
- package/dist/combat/abilityKit.d.ts +18 -0
- package/dist/combat/abilityKit.js +24 -9
- package/dist/combat/animationState.d.ts +5 -0
- package/dist/combat/animationState.js +5 -0
- package/dist/combat/breakMeters.d.ts +10 -0
- package/dist/combat/breakMeters.js +10 -0
- package/dist/combat/castRunner.d.ts +5 -0
- package/dist/combat/castRunner.js +5 -0
- package/dist/combat/comboPoints.d.ts +5 -0
- package/dist/combat/comboPoints.js +5 -0
- package/dist/combat/comboString.d.ts +5 -0
- package/dist/combat/comboString.js +5 -0
- package/dist/combat/damageInterceptors.d.ts +192 -0
- package/dist/combat/damageInterceptors.js +251 -0
- package/dist/combat/damageMatchup.d.ts +68 -0
- package/dist/combat/damageMatchup.js +42 -0
- package/dist/combat/damageResolution.d.ts +63 -0
- package/dist/combat/damageResolution.js +50 -0
- package/dist/combat/death.d.ts +7 -1
- package/dist/combat/death.js +5 -0
- package/dist/combat/deathReason.d.ts +14 -0
- package/dist/combat/deathReason.js +1 -0
- package/dist/combat/defensiveWindow.d.ts +5 -0
- package/dist/combat/defensiveWindow.js +5 -0
- package/dist/combat/dotField.d.ts +47 -0
- package/dist/combat/dotField.js +52 -0
- package/dist/combat/downed.d.ts +5 -0
- package/dist/combat/downed.js +5 -0
- package/dist/combat/effects.d.ts +5 -0
- package/dist/combat/effects.js +5 -0
- package/dist/combat/encounterSequence.d.ts +258 -0
- package/dist/combat/encounterSequence.js +426 -0
- package/dist/combat/hitReaction.d.ts +57 -1
- package/dist/combat/hitReaction.js +45 -5
- package/dist/combat/magazine.d.ts +54 -0
- package/dist/combat/magazine.js +96 -0
- package/dist/combat/projectiles.d.ts +7 -2
- package/dist/combat/projectiles.js +48 -17
- package/dist/combat/receivedDamage.d.ts +117 -0
- package/dist/combat/receivedDamage.js +92 -0
- package/dist/combat/regenShield.d.ts +39 -0
- package/dist/combat/regenShield.js +49 -0
- package/dist/combat/renderCues.d.ts +51 -0
- package/dist/combat/renderCues.js +44 -0
- package/dist/combat/resourcePool.d.ts +5 -0
- package/dist/combat/resourcePool.js +5 -0
- package/dist/combat/rewardAllocation.d.ts +121 -0
- package/dist/combat/rewardAllocation.js +251 -0
- package/dist/combat/shotOrigin.d.ts +30 -1
- package/dist/combat/shotOrigin.js +70 -2
- package/dist/combat/statusApplication.d.ts +96 -0
- package/dist/combat/statusApplication.js +81 -0
- package/dist/combat/telegraph.d.ts +11 -2
- package/dist/combat/telegraph.js +11 -2
- package/dist/combat/thresholdCrossings.d.ts +85 -0
- package/dist/combat/thresholdCrossings.js +116 -0
- package/dist/combat.d.ts +34 -0
- package/dist/combat.js +34 -0
- package/dist/commands/commandRegistry.d.ts +11 -0
- package/dist/commands/commandRegistry.js +9 -2
- package/dist/crafting/crop.d.ts +18 -0
- package/dist/crafting/crop.js +18 -0
- package/dist/crafting/production.d.ts +5 -0
- package/dist/crafting/production.js +5 -0
- package/dist/devtools/rewriteTunables.d.ts +17 -0
- package/dist/devtools/rewriteTunables.js +276 -0
- package/dist/devtools/saveEndpoint.d.ts +46 -0
- package/dist/devtools/saveEndpoint.js +48 -0
- package/dist/devtools/transformTunables.d.ts +3 -0
- package/dist/devtools/transformTunables.js +3 -0
- package/dist/devtools/tunableSchema.d.ts +31 -0
- package/dist/devtools/tunableSchema.js +31 -0
- package/dist/economy/currency.d.ts +12 -1
- package/dist/economy/currency.js +12 -1
- package/dist/economy/listingBook.d.ts +91 -0
- package/dist/economy/listingBook.js +144 -0
- package/dist/economy/resourceLedger.d.ts +222 -0
- package/dist/economy/resourceLedger.js +353 -0
- package/dist/economy/sharedWallet.d.ts +14 -0
- package/dist/economy/sharedWallet.js +14 -0
- package/dist/economy/techTree.d.ts +12 -0
- package/dist/economy/techTree.js +12 -0
- package/dist/economy/wallet.d.ts +26 -2
- package/dist/economy/wallet.js +35 -6
- package/dist/editor/commands.d.ts +248 -0
- package/dist/editor/commands.js +865 -0
- package/dist/editor/document.d.ts +186 -0
- package/dist/editor/document.js +884 -0
- package/dist/editor/grid.d.ts +229 -0
- package/dist/editor/grid.js +366 -0
- package/dist/editor/gridAdapters.d.ts +80 -0
- package/dist/editor/gridAdapters.js +134 -0
- package/dist/editor/index.d.ts +97 -0
- package/dist/editor/index.js +10 -0
- package/dist/editor/liveSync.d.ts +127 -0
- package/dist/editor/liveSync.js +249 -0
- package/dist/editor/runtimeInspector.d.ts +88 -0
- package/dist/editor/runtimeInspector.js +239 -0
- package/dist/editor/types.d.ts +175 -0
- package/dist/editor/types.js +29 -0
- package/dist/faction/reputation.d.ts +5 -0
- package/dist/faction/reputation.js +5 -0
- package/dist/format/distance.d.ts +17 -0
- package/dist/format/distance.js +18 -0
- package/dist/format/duration.d.ts +27 -0
- package/dist/format/duration.js +45 -0
- package/dist/format/speed.d.ts +17 -0
- package/dist/format/speed.js +25 -0
- package/dist/game/connectedPlayers.d.ts +30 -0
- package/dist/game/connectedPlayers.js +21 -0
- package/dist/game/cosmetics.d.ts +9 -0
- package/dist/game/cosmetics.js +16 -0
- package/dist/game/defineGame.d.ts +141 -2
- package/dist/game/defineGame.js +39 -1
- package/dist/game/defineSystem.d.ts +88 -0
- package/dist/game/defineSystem.js +45 -0
- package/dist/game/dialogue.d.ts +33 -0
- package/dist/game/dialogue.js +21 -0
- package/dist/game/events.d.ts +50 -13
- package/dist/game/events.js +5 -0
- package/dist/game/feed.d.ts +33 -0
- package/dist/game/feed.js +35 -2
- package/dist/game/gamePhase.d.ts +11 -0
- package/dist/game/gamePhase.js +16 -0
- package/dist/game/keyValueStore.d.ts +25 -0
- package/dist/game/keyValueStore.js +61 -0
- package/dist/game/leaderboard.d.ts +5 -0
- package/dist/game/leaderboard.js +5 -0
- package/dist/game/levelSequence.d.ts +24 -2
- package/dist/game/levelSequence.js +51 -2
- package/dist/game/loadout.d.ts +5 -0
- package/dist/game/loadout.js +5 -0
- package/dist/game/lootFilter.d.ts +2 -0
- package/dist/game/lootFilter.js +2 -0
- package/dist/game/lootPipeline.d.ts +164 -0
- package/dist/game/lootPipeline.js +216 -0
- package/dist/game/lootTable.d.ts +21 -0
- package/dist/game/lootTable.js +15 -4
- package/dist/game/modelAnimation.d.ts +8 -0
- package/dist/game/modelAnimation.js +18 -0
- package/dist/game/objectives.d.ts +43 -0
- package/dist/game/objectives.js +36 -0
- package/dist/game/paramLayers.d.ts +148 -0
- package/dist/game/paramLayers.js +185 -0
- package/dist/game/ping.d.ts +5 -0
- package/dist/game/ping.js +5 -0
- package/dist/game/playableGame.d.ts +160 -12
- package/dist/game/quest.d.ts +8 -0
- package/dist/game/quest.js +29 -0
- package/dist/game/race.d.ts +141 -0
- package/dist/game/race.js +169 -0
- package/dist/game/recordBook.d.ts +5 -5
- package/dist/game/recordBook.js +4 -1
- package/dist/game/ruleSelection.d.ts +75 -0
- package/dist/game/ruleSelection.js +127 -0
- package/dist/game/runDraft.d.ts +5 -0
- package/dist/game/runDraft.js +5 -0
- package/dist/game/saveStore.d.ts +111 -0
- package/dist/game/saveStore.js +312 -0
- package/dist/game/snapshotHistory.d.ts +67 -0
- package/dist/game/snapshotHistory.js +95 -0
- package/dist/game/social.d.ts +38 -1
- package/dist/game/social.js +71 -0
- package/dist/game/spawnPoints.d.ts +5 -0
- package/dist/game/spawnPoints.js +5 -0
- package/dist/game/systemRuntime.d.ts +50 -0
- package/dist/game/systemRuntime.js +157 -0
- package/dist/game/systemSchedule.d.ts +72 -0
- package/dist/game/systemSchedule.js +242 -0
- package/dist/game/toasts.d.ts +43 -0
- package/dist/game/toasts.js +44 -0
- package/dist/game/trade.d.ts +10 -0
- package/dist/game/trade.js +10 -0
- package/dist/game/unlocks.d.ts +8 -0
- package/dist/game/unlocks.js +16 -0
- package/dist/game/vfxInstance.d.ts +138 -0
- package/dist/game/vfxInstance.js +96 -0
- package/dist/game/worldItem.d.ts +17 -4
- package/dist/game/worldItem.js +17 -4
- package/dist/gameplay.d.ts +91 -0
- package/dist/gameplay.js +91 -0
- package/dist/index.d.ts +5 -7
- package/dist/index.js +5 -7
- package/dist/input/actionBindings.d.ts +24 -5
- package/dist/input/actionBindings.js +23 -5
- package/dist/input/axisInput.d.ts +13 -1
- package/dist/input/axisInput.js +22 -1
- package/dist/input/controlGroups.d.ts +67 -0
- package/dist/input/controlGroups.js +41 -0
- package/dist/input/touchScheme.d.ts +82 -6
- package/dist/input/touchScheme.js +123 -10
- package/dist/interaction/contextMenu.d.ts +1 -0
- package/dist/interaction/contextMenu.js +1 -0
- package/dist/interaction/lockpick.d.ts +61 -0
- package/dist/interaction/lockpick.js +168 -0
- package/dist/interaction/proximityPrompt.d.ts +5 -1
- package/dist/interaction/proximityPrompt.js +5 -3
- package/dist/interaction/qte.d.ts +5 -0
- package/dist/interaction/qte.js +5 -0
- package/dist/interaction/skillCheck.d.ts +5 -0
- package/dist/interaction/skillCheck.js +5 -0
- package/dist/inventory/inventoryModel.d.ts +12 -0
- package/dist/inventory/inventoryModel.js +12 -0
- package/dist/inventory/shapedGrid.d.ts +16 -0
- package/dist/inventory/shapedGrid.js +16 -0
- package/dist/inventory/slotModel.d.ts +10 -0
- package/dist/inventory/slotModel.js +10 -0
- package/dist/item/durability.d.ts +5 -0
- package/dist/item/durability.js +5 -0
- package/dist/item/itemIdentity.d.ts +171 -0
- package/dist/item/itemIdentity.js +138 -0
- package/dist/item/itemInstanceRegistry.d.ts +32 -0
- package/dist/item/itemInstanceRegistry.js +34 -0
- package/dist/item/itemgen.d.ts +163 -0
- package/dist/item/itemgen.js +151 -0
- package/dist/item/modularItem.d.ts +5 -0
- package/dist/item/modularItem.js +5 -0
- package/dist/item/use.d.ts +5 -0
- package/dist/item/use.js +5 -0
- package/dist/item/useBehavior.d.ts +142 -0
- package/dist/item/useBehavior.js +105 -0
- package/dist/item/weapon.d.ts +5 -0
- package/dist/item/weapon.js +5 -0
- package/dist/math/scalar.d.ts +25 -0
- package/dist/math/scalar.js +47 -0
- package/dist/meta/changelog.d.ts +4 -1
- package/dist/meta/changelog.js +36 -1
- package/dist/movement/avoidance.d.ts +45 -0
- package/dist/movement/avoidance.js +123 -0
- package/dist/movement/cameraRig.d.ts +8 -0
- package/dist/movement/cameraRig.js +8 -0
- package/dist/movement/dash.d.ts +11 -0
- package/dist/movement/dash.js +11 -0
- package/dist/movement/formation.d.ts +135 -0
- package/dist/movement/formation.js +194 -0
- package/dist/movement/glideModel.d.ts +5 -0
- package/dist/movement/glideModel.js +5 -0
- package/dist/movement/grappleSwing.d.ts +5 -0
- package/dist/movement/grappleSwing.js +5 -0
- package/dist/movement/leaderTrail.d.ts +5 -0
- package/dist/movement/leaderTrail.js +5 -0
- package/dist/movement/movementModel.d.ts +38 -7
- package/dist/movement/movementModel.js +54 -13
- package/dist/movement/playerMovement.d.ts +41 -0
- package/dist/movement/playerMovement.js +236 -0
- package/dist/movement/poseState.d.ts +13 -0
- package/dist/movement/poseState.js +16 -0
- package/dist/movement/steering.d.ts +8 -0
- package/dist/movement/steering.js +18 -0
- package/dist/multiplayer/combatSnapshot.d.ts +3 -0
- package/dist/multiplayer/combatSnapshot.js +3 -0
- package/dist/multiplayer/lagCompensation.d.ts +5 -0
- package/dist/multiplayer/lagCompensation.js +5 -0
- package/dist/multiplayer/presenceModel.d.ts +9 -1
- package/dist/multiplayer/presenceModel.js +9 -1
- package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
- package/dist/multiplayer/simultaneousCommit.js +3 -0
- package/dist/multiplayer.d.ts +11 -0
- package/dist/multiplayer.js +11 -0
- package/dist/nav/pathFollow.d.ts +57 -0
- package/dist/nav/pathFollow.js +109 -0
- package/dist/orders/orderKinds.d.ts +156 -0
- package/dist/orders/orderKinds.js +197 -0
- package/dist/orders/orderQueue.d.ts +208 -0
- package/dist/orders/orderQueue.js +211 -0
- package/dist/physics/drivableVehicle.d.ts +29 -0
- package/dist/physics/drivableVehicle.js +16 -0
- package/dist/physics/kinematicVehicle.d.ts +21 -1
- package/dist/physics/kinematicVehicle.js +23 -8
- package/dist/physics/physicsWorld.d.ts +24 -12
- package/dist/physics/physicsWorld.js +11 -5
- package/dist/physics/radialImpulse.d.ts +25 -0
- package/dist/physics/radialImpulse.js +27 -0
- package/dist/procedural.d.ts +3 -0
- package/dist/procedural.js +3 -0
- package/dist/progression/statGraph.d.ts +116 -0
- package/dist/progression/statGraph.js +318 -0
- package/dist/puzzle/cellGrid.d.ts +9 -0
- package/dist/puzzle/cellGrid.js +9 -0
- package/dist/puzzle/fallingPiece.d.ts +9 -0
- package/dist/puzzle/fallingPiece.js +9 -0
- package/dist/puzzle/nonogram.d.ts +39 -0
- package/dist/puzzle/nonogram.js +136 -0
- package/dist/random/nameGen.d.ts +5 -0
- package/dist/random/nameGen.js +5 -0
- package/dist/random/pick.d.ts +8 -0
- package/dist/random/pick.js +31 -0
- package/dist/random/rng.d.ts +24 -0
- package/dist/random/rng.js +30 -8
- package/dist/random/seedLink.d.ts +4 -0
- package/dist/random/seedLink.js +4 -0
- package/dist/relation/keyedValues.d.ts +54 -0
- package/dist/relation/keyedValues.js +115 -0
- package/dist/relation/thresholds.d.ts +62 -0
- package/dist/relation/thresholds.js +62 -0
- package/dist/render/color.d.ts +12 -0
- package/dist/render/color.js +26 -0
- package/dist/render/lookPreset.d.ts +41 -0
- package/dist/render/lookPreset.js +29 -0
- package/dist/render/postProcessing.d.ts +76 -0
- package/dist/render/postProcessing.js +21 -0
- package/dist/rules/predicate.d.ts +53 -0
- package/dist/rules/predicate.js +64 -0
- package/dist/rules/ruleEffects.d.ts +38 -0
- package/dist/rules/ruleEffects.js +37 -0
- package/dist/rules/triggeredRules.d.ts +160 -0
- package/dist/rules/triggeredRules.js +241 -0
- package/dist/runtime/adapter.d.ts +58 -0
- package/dist/runtime/adapter.js +54 -5
- package/dist/runtime/cameraDirector.d.ts +1 -0
- package/dist/runtime/cameraDirector.js +1 -0
- package/dist/runtime/commandRunner.d.ts +1 -0
- package/dist/runtime/commandRunner.js +1 -0
- package/dist/runtime/context/combatFx.d.ts +23 -0
- package/dist/runtime/context/combatFx.js +161 -0
- package/dist/runtime/context/registries.d.ts +13 -0
- package/dist/runtime/context/registries.js +84 -0
- package/dist/runtime/context/worldItems.d.ts +21 -0
- package/dist/runtime/context/worldItems.js +37 -0
- package/dist/runtime/descriptors/baseline.d.ts +48 -0
- package/dist/runtime/descriptors/baseline.js +134 -0
- package/dist/runtime/descriptors/features.d.ts +74 -0
- package/dist/runtime/descriptors/features.js +281 -0
- package/dist/runtime/gameContext.d.ts +163 -19
- package/dist/runtime/gameContext.js +385 -339
- package/dist/runtime/gameRuntime.d.ts +1 -0
- package/dist/runtime/gameRuntime.js +1 -0
- package/dist/runtime/headlessRunner.d.ts +60 -0
- package/dist/runtime/headlessRunner.js +44 -0
- package/dist/runtime/hostPersistence.d.ts +12 -0
- package/dist/runtime/hostPersistence.js +12 -0
- package/dist/runtime/hostedGameRunner.d.ts +54 -0
- package/dist/runtime/hostedGameRunner.js +85 -0
- package/dist/runtime/hostedWorldSession.d.ts +73 -0
- package/dist/runtime/hostedWorldSession.js +64 -0
- package/dist/runtime/inputSnapshot.d.ts +21 -3
- package/dist/runtime/inputSnapshot.js +8 -2
- package/dist/runtime/motionIntents.d.ts +12 -1
- package/dist/runtime/motionIntents.js +26 -1
- package/dist/runtime/perContext.d.ts +15 -0
- package/dist/runtime/perContext.js +21 -0
- package/dist/runtime/runtimeSave.d.ts +79 -0
- package/dist/runtime/runtimeSave.js +105 -0
- package/dist/runtime/save.d.ts +4 -0
- package/dist/runtime/save.js +4 -0
- package/dist/runtime/snapshot.d.ts +7 -0
- package/dist/runtime/snapshot.js +7 -0
- package/dist/runtime/visibility.d.ts +2 -1
- package/dist/runtime/visibility.js +2 -1
- package/dist/runtime/worldChannel.d.ts +62 -0
- package/dist/runtime/worldChannel.js +114 -0
- package/dist/runtime/worldMirror.d.ts +36 -0
- package/dist/runtime/worldMirror.js +44 -0
- package/dist/runtime/worldProjection.d.ts +47 -0
- package/dist/runtime/worldProjection.js +52 -0
- package/dist/runtime/worldReplication.d.ts +69 -0
- package/dist/runtime/worldReplication.js +217 -0
- package/dist/runtime/worldSnapshot.d.ts +44 -0
- package/dist/runtime/worldSnapshot.js +30 -0
- package/dist/scene/assetCatalog.d.ts +22 -0
- package/dist/scene/assetCatalog.js +4 -0
- package/dist/scene/assetDiagnostics.d.ts +69 -0
- package/dist/scene/assetDiagnostics.js +110 -0
- package/dist/scene/assetGenerator.d.ts +65 -0
- package/dist/scene/assetGenerator.js +64 -0
- package/dist/scene/assetSpace.d.ts +137 -0
- package/dist/scene/assetSpace.js +259 -0
- package/dist/scene/authoredTriggers.d.ts +169 -0
- package/dist/scene/authoredTriggers.js +340 -0
- package/dist/scene/behaviorRuntime.d.ts +75 -0
- package/dist/scene/behaviorRuntime.js +217 -0
- package/dist/scene/behaviors.d.ts +14 -2
- package/dist/scene/behaviors.js +7 -2
- package/dist/scene/bodyBind.d.ts +60 -0
- package/dist/scene/bodyBind.js +51 -0
- package/dist/scene/builtinSceneKinds.d.ts +5 -0
- package/dist/scene/builtinSceneKinds.js +62 -0
- package/dist/scene/colliders.d.ts +18 -0
- package/dist/scene/colliders.js +61 -1
- package/dist/scene/entityStats.d.ts +13 -0
- package/dist/scene/entityStats.js +30 -0
- package/dist/scene/entityStore.d.ts +41 -1
- package/dist/scene/entityStore.js +75 -0
- package/dist/scene/facing.d.ts +18 -0
- package/dist/scene/facing.js +26 -0
- package/dist/scene/modelSockets.d.ts +33 -0
- package/dist/scene/modelSockets.js +29 -0
- package/dist/scene/objectQuery.d.ts +2 -0
- package/dist/scene/objectQuery.js +2 -0
- package/dist/scene/objectStore.d.ts +4 -0
- package/dist/scene/objectStore.js +6 -0
- package/dist/scene/possession.d.ts +8 -0
- package/dist/scene/possession.js +14 -0
- package/dist/scene/roster.d.ts +3 -0
- package/dist/scene/roster.js +12 -0
- package/dist/scene/sceneKinds.d.ts +240 -0
- package/dist/scene/sceneKinds.js +214 -0
- package/dist/scene/sceneOwnership.d.ts +169 -0
- package/dist/scene/sceneOwnership.js +179 -0
- package/dist/scene/selectionBookmarks.d.ts +93 -0
- package/dist/scene/selectionBookmarks.js +122 -0
- package/dist/scene/vehicleSeat.d.ts +68 -0
- package/dist/scene/vehicleSeat.js +59 -0
- package/dist/sensor/concealment.d.ts +3 -0
- package/dist/sensor/concealment.js +3 -0
- package/dist/sensor/freezeMonitor.d.ts +1 -0
- package/dist/sensor/freezeMonitor.js +1 -0
- package/dist/sensor/frustumSensor.d.ts +7 -3
- package/dist/sensor/frustumSensor.js +7 -3
- package/dist/sensor/hiddenStateProbe.d.ts +5 -2
- package/dist/sensor/hiddenStateProbe.js +5 -2
- package/dist/sensor/recordingBuffer.d.ts +2 -1
- package/dist/sensor/recordingBuffer.js +2 -1
- package/dist/sensor/replayLoop.d.ts +6 -2
- package/dist/sensor/replayLoop.js +6 -2
- package/dist/sensor/revealQuery.d.ts +2 -1
- package/dist/sensor/revealQuery.js +2 -1
- package/dist/sensor/visionCone.d.ts +10 -3
- package/dist/sensor/visionCone.js +10 -3
- package/dist/session/contestedChannel.d.ts +1 -0
- package/dist/session/contestedChannel.js +1 -0
- package/dist/session/extraction.d.ts +1 -0
- package/dist/session/extraction.js +1 -0
- package/dist/session/roles.d.ts +6 -0
- package/dist/session/roles.js +6 -0
- package/dist/session/roundState.d.ts +8 -0
- package/dist/session/roundState.js +2 -0
- package/dist/settings/settingsModel.d.ts +1 -0
- package/dist/settings/settingsModel.js +1 -0
- package/dist/stats/accumulatorMeter.d.ts +6 -0
- package/dist/stats/accumulatorMeter.js +6 -0
- package/dist/stats/eventMeter.d.ts +5 -0
- package/dist/stats/eventMeter.js +5 -0
- package/dist/stats/rollCheck.d.ts +5 -0
- package/dist/stats/rollCheck.js +5 -0
- package/dist/stats/statModifiers.d.ts +5 -0
- package/dist/stats/statModifiers.js +5 -0
- package/dist/store/defineKeyedStore.d.ts +38 -0
- package/dist/store/defineKeyedStore.js +42 -0
- package/dist/store/defineStore.d.ts +33 -0
- package/dist/store/defineStore.js +35 -0
- package/dist/store/observableKeyedStore.d.ts +9 -0
- package/dist/store/observableKeyedStore.js +43 -2
- package/dist/survival/decayMeter.d.ts +55 -0
- package/dist/survival/decayMeter.js +130 -55
- package/dist/survival/moodle.d.ts +2 -0
- package/dist/survival/regionHealth.d.ts +6 -0
- package/dist/survival/regionHealth.js +5 -0
- package/dist/tactics/fallingGrid.d.ts +6 -4
- package/dist/tactics/fallingGrid.js +6 -4
- package/dist/tactics/predictiveQuery.d.ts +3 -0
- package/dist/tactics/predictiveQuery.js +3 -0
- package/dist/tactics/snapshot.d.ts +2 -0
- package/dist/tactics/snapshot.js +2 -0
- package/dist/tactics/surface.d.ts +1 -0
- package/dist/tactics/surface.js +1 -0
- package/dist/tactics/tacticalGrid.d.ts +1 -0
- package/dist/tactics/tacticalGrid.js +1 -0
- package/dist/time/beatClock.d.ts +14 -4
- package/dist/time/beatClock.js +14 -4
- package/dist/time/calendarClock.d.ts +3 -0
- package/dist/time/calendarClock.js +3 -0
- package/dist/time/idleProgress.d.ts +4 -0
- package/dist/time/idleProgress.js +4 -0
- package/dist/time/simClock.d.ts +2 -0
- package/dist/time/simClock.js +20 -5
- package/dist/ui/actionModel.d.ts +110 -0
- package/dist/ui/actionModel.js +159 -0
- package/dist/ui/gameLayout.d.ts +144 -0
- package/dist/ui/gameLayout.js +148 -0
- package/dist/ui/hudDocument.d.ts +114 -0
- package/dist/ui/hudDocument.js +220 -0
- package/dist/ui/hudLayout.d.ts +33 -1
- package/dist/ui/hudLayout.js +204 -17
- package/dist/ui/orientation.d.ts +39 -0
- package/dist/ui/orientation.js +49 -0
- package/dist/ui/selectionModel.d.ts +92 -0
- package/dist/ui/selectionModel.js +88 -0
- package/dist/ui/swingTimer.d.ts +42 -0
- package/dist/ui/swingTimer.js +38 -0
- package/dist/ui/tooltipModel.d.ts +63 -0
- package/dist/ui/tooltipModel.js +82 -0
- package/dist/ui.d.ts +15 -0
- package/dist/ui.js +15 -0
- package/dist/visibility/bounds.d.ts +8 -1
- package/dist/visibility/bounds.js +8 -1
- package/dist/visibility/frustum.d.ts +12 -3
- package/dist/visibility/frustum.js +12 -3
- package/dist/visibility/spatialIndex.js +34 -20
- package/dist/work/jobQueue.d.ts +201 -0
- package/dist/work/jobQueue.js +253 -0
- package/dist/work/unitTraining.d.ts +58 -0
- package/dist/work/unitTraining.js +52 -0
- package/dist/world/authoredObjects.d.ts +58 -0
- package/dist/world/authoredObjects.js +69 -0
- package/dist/world/buildingGenerator.d.ts +18 -0
- package/dist/world/buildingGenerator.js +62 -0
- package/dist/world/buildings.d.ts +5 -0
- package/dist/world/buildings.js +5 -0
- package/dist/world/catenary.d.ts +22 -0
- package/dist/world/catenary.js +69 -0
- package/dist/world/environmentSummary.d.ts +11 -2
- package/dist/world/environmentSummary.js +11 -1
- package/dist/world/features.d.ts +244 -7
- package/dist/world/features.js +92 -4
- package/dist/world/footprintGrid.d.ts +59 -0
- package/dist/world/footprintGrid.js +141 -0
- package/dist/world/geometry.d.ts +64 -0
- package/dist/world/geometry.js +94 -0
- package/dist/world/grassKind.d.ts +51 -0
- package/dist/world/grassKind.js +101 -0
- package/dist/world/pathInstances.d.ts +27 -0
- package/dist/world/pathInstances.js +27 -0
- package/dist/world/pathTerrain.d.ts +80 -0
- package/dist/world/pathTerrain.js +142 -0
- package/dist/world/placeAsset.d.ts +81 -0
- package/dist/world/placeAsset.js +77 -0
- package/dist/world/placement.d.ts +4 -0
- package/dist/world/placement.js +4 -0
- package/dist/world/placementController.d.ts +6 -0
- package/dist/world/placementController.js +6 -0
- package/dist/world/polyline.d.ts +34 -0
- package/dist/world/polyline.js +81 -0
- package/dist/world/roads.d.ts +55 -0
- package/dist/world/roads.js +184 -0
- package/dist/world/scatterRegion.d.ts +164 -0
- package/dist/world/scatterRegion.js +409 -0
- package/dist/world/sceneShapes.d.ts +43 -0
- package/dist/world/sceneShapes.js +1 -0
- package/dist/world/segment.d.ts +27 -0
- package/dist/world/segment.js +43 -0
- package/dist/world/soilKind.d.ts +48 -0
- package/dist/world/soilKind.js +92 -0
- package/dist/world/spatialSample.d.ts +241 -0
- package/dist/world/spatialSample.js +465 -0
- package/dist/world/streets.d.ts +80 -0
- package/dist/world/streets.js +144 -0
- package/dist/world/terraform.d.ts +213 -1
- package/dist/world/terraform.js +655 -20
- package/dist/world/terrain.d.ts +138 -12
- package/dist/world/terrain.js +346 -28
- package/dist/world/terrainGuides.d.ts +182 -0
- package/dist/world/terrainGuides.js +343 -0
- package/dist/world/vec2.d.ts +81 -0
- package/dist/world/vec2.js +128 -0
- package/dist/world/vec3.d.ts +49 -0
- package/dist/world/vec3.js +76 -0
- package/dist/world/vegetation.d.ts +71 -0
- package/dist/world/vegetation.js +151 -0
- package/dist/world/visibilityField.d.ts +154 -0
- package/dist/world/visibilityField.js +271 -0
- package/dist/world/volumetricClouds.d.ts +52 -0
- package/dist/world/volumetricClouds.js +43 -0
- package/dist/world/walls.d.ts +9 -0
- package/dist/world/walls.js +9 -0
- package/dist/world/waterKind.d.ts +55 -0
- package/dist/world/waterKind.js +99 -0
- package/dist/world.d.ts +132 -0
- package/dist/world.js +132 -0
- package/package.json +32 -8
- package/skills/jgengine/SKILL.md +51 -0
- package/skills/jgengine/api.md +434 -0
- package/skills/jgengine/capabilities.md +29 -0
- package/skills/jgengine/reference-cartridge.md +72 -0
- package/skills/jgengine-combat/SKILL.md +34 -0
- package/skills/jgengine-combat/api.md +549 -0
- package/skills/jgengine-combat/capabilities.md +169 -0
- package/skills/jgengine-combat/reference.md +98 -0
- package/skills/jgengine-gameplay/SKILL.md +39 -0
- package/skills/jgengine-gameplay/api.md +1794 -0
- package/skills/jgengine-gameplay/capabilities.md +378 -0
- package/skills/jgengine-gameplay/reference-systems.md +60 -0
- package/skills/jgengine-world/SKILL.md +38 -0
- package/skills/jgengine-world/api.md +2652 -0
- package/skills/jgengine-world/capabilities.md +370 -0
- package/skills/jgengine-world/reference.md +222 -0
- package/dist/cartridge/runtime.d.ts +0 -15
- package/dist/cartridge/runtime.js +0 -556
- package/dist/cartridge/spec.d.ts +0 -188
- package/dist/cartridge/spec.js +0 -19
- package/dist/cartridge/validate.d.ts +0 -2
- package/dist/cartridge/validate.js +0 -78
- package/dist/store/engineStore.d.ts +0 -22
- package/dist/store/engineStore.js +0 -50
- package/dist/store/features.d.ts +0 -10
- package/dist/store/features.js +0 -23
- package/llms.txt +0 -4983
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import type { RetainedVfxKind, VfxRef } from "./events.js";
|
|
2
|
+
/**
|
|
3
|
+
* The serializable specification for creating (or replacing) a retained VFX instance. Unlike a one-shot
|
|
4
|
+
* `combat.vfx` burst this describes a long-lived effect whose endpoints and parameters are updated over
|
|
5
|
+
* time. `id` is caller-stable so repeated `upsert` calls address the same effect; omit it to mint one.
|
|
6
|
+
* `from`/`to` are {@link VfxRef}s (an entity instance id or a world point) that a renderer resolves each
|
|
7
|
+
* frame, so an endpoint bound to a moving entity follows it without any per-frame command traffic.
|
|
8
|
+
*/
|
|
9
|
+
export interface VfxInstanceSpec {
|
|
10
|
+
/** Caller-stable handle. Repeated `upsert` with the same id replaces the instance; omitted mints a fresh id. */
|
|
11
|
+
id?: string;
|
|
12
|
+
/** Open effect archetype (e.g. `"beam"`). Renderers register kinds, so new visuals need no central branch. */
|
|
13
|
+
kind: RetainedVfxKind;
|
|
14
|
+
/** `0xRRGGBB` tint. */
|
|
15
|
+
color: number;
|
|
16
|
+
/** Origin endpoint: an entity instance id (followed live) or a fixed world point. */
|
|
17
|
+
from?: VfxRef;
|
|
18
|
+
/** Target endpoint: an entity instance id (followed live) or a fixed world point. */
|
|
19
|
+
to?: VfxRef;
|
|
20
|
+
/** Effect radius/thickness in world units, interpreted per kind. */
|
|
21
|
+
radius?: number;
|
|
22
|
+
/** Extra numeric knobs a renderer reads by name (intensity, spin, width, ...), kept a flat serializable bag. */
|
|
23
|
+
params?: Readonly<Record<string, number>>;
|
|
24
|
+
/** Optional time-to-live in ms: the instance auto-stops if `tick` runs past `ttlMs` since its last touch (heartbeat). */
|
|
25
|
+
ttlMs?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The stored, fully-resolved form of a retained VFX instance. It is a plain serializable record so hosts can
|
|
29
|
+
* replicate it and debug tooling can inspect it; renderers receive it verbatim and never merge partial state
|
|
30
|
+
* themselves. `updatedAtMs` is the last create/update time and drives TTL heartbeat eviction.
|
|
31
|
+
*/
|
|
32
|
+
export interface VfxInstanceState {
|
|
33
|
+
/** Stable instance id. */
|
|
34
|
+
readonly id: string;
|
|
35
|
+
/** Effect archetype. */
|
|
36
|
+
readonly kind: RetainedVfxKind;
|
|
37
|
+
/** `0xRRGGBB` tint. */
|
|
38
|
+
readonly color: number;
|
|
39
|
+
/** Origin endpoint, if any. */
|
|
40
|
+
readonly from?: VfxRef;
|
|
41
|
+
/** Target endpoint, if any. */
|
|
42
|
+
readonly to?: VfxRef;
|
|
43
|
+
/** Effect radius/thickness. */
|
|
44
|
+
readonly radius?: number;
|
|
45
|
+
/** Renderer knobs. */
|
|
46
|
+
readonly params?: Readonly<Record<string, number>>;
|
|
47
|
+
/** TTL in ms, if the instance heartbeats. */
|
|
48
|
+
readonly ttlMs?: number;
|
|
49
|
+
/** Clock time (ms) of the last create/update; the TTL heartbeat measures staleness from here. */
|
|
50
|
+
readonly updatedAtMs: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A partial update to a live retained VFX instance. Only the provided fields change; `params` is shallow-merged
|
|
54
|
+
* so a caller can nudge one knob without resending the whole bag. Setting a field to `undefined` clears it.
|
|
55
|
+
* Applying a patch refreshes the instance heartbeat.
|
|
56
|
+
*/
|
|
57
|
+
export interface VfxInstancePatch {
|
|
58
|
+
/** New tint. */
|
|
59
|
+
color?: number;
|
|
60
|
+
/** New origin endpoint. */
|
|
61
|
+
from?: VfxRef;
|
|
62
|
+
/** New target endpoint. */
|
|
63
|
+
to?: VfxRef;
|
|
64
|
+
/** New radius/thickness. */
|
|
65
|
+
radius?: number;
|
|
66
|
+
/** Knobs shallow-merged into the current `params`. */
|
|
67
|
+
params?: Readonly<Record<string, number>>;
|
|
68
|
+
}
|
|
69
|
+
/** Options for {@link VfxInstanceStore.stop}. */
|
|
70
|
+
export interface VfxInstanceStopOptions {
|
|
71
|
+
/** Fade-out duration in ms handed to the renderer; `0` (default) disposes immediately. */
|
|
72
|
+
fadeMs?: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The lifecycle op a {@link VfxInstanceStore} emits to its renderer sink. `upsert`/`update` carry the full merged
|
|
76
|
+
* {@link VfxInstanceState} (the renderer applies it directly, no merge); `stop` carries the id plus a fade duration.
|
|
77
|
+
* This is the payload of the `combat.vfxInstance` game event when the store is wired to the event bus.
|
|
78
|
+
*/
|
|
79
|
+
export interface CombatVfxInstanceEvent {
|
|
80
|
+
/** `upsert` creates/replaces, `update` mutates dynamic params, `stop` disposes (with optional fade). */
|
|
81
|
+
readonly op: "upsert" | "update" | "stop";
|
|
82
|
+
/** The affected instance id. */
|
|
83
|
+
readonly id: string;
|
|
84
|
+
/** The full merged state, present for `upsert` and `update`. */
|
|
85
|
+
readonly instance?: VfxInstanceState;
|
|
86
|
+
/** Fade-out duration in ms, present for `stop`. */
|
|
87
|
+
readonly fadeMs?: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A headless registry of retained VFX instances: create/replace, partially update, and stop long-lived effects
|
|
91
|
+
* addressed by stable id, independent of any renderer. It owns the authoritative serializable state and exposes
|
|
92
|
+
* inspection counts; wire {@link VfxInstanceStoreOptions.onOp} to a renderer (via the `combat.vfxInstance` event)
|
|
93
|
+
* to drive visuals.
|
|
94
|
+
*/
|
|
95
|
+
export interface VfxInstanceStore {
|
|
96
|
+
/**
|
|
97
|
+
* Create the instance, or replace it in place when its id already exists (idempotent by id). Returns the id
|
|
98
|
+
* (minted when the spec omits one). Refreshes the heartbeat.
|
|
99
|
+
*/
|
|
100
|
+
upsert(spec: VfxInstanceSpec): string;
|
|
101
|
+
/**
|
|
102
|
+
* Merge `patch` into the live instance and refresh its heartbeat. Returns `false` for an unknown id (a missing
|
|
103
|
+
* update is a no-op, never a throw), `true` otherwise.
|
|
104
|
+
*/
|
|
105
|
+
update(id: string, patch: VfxInstancePatch): boolean;
|
|
106
|
+
/** Dispose the instance, emitting a `stop` op with the resolved fade. Returns `false` for an unknown id. */
|
|
107
|
+
stop(id: string, options?: VfxInstanceStopOptions): boolean;
|
|
108
|
+
/** The current state of `id`, or `null` if absent. */
|
|
109
|
+
get(id: string): VfxInstanceState | null;
|
|
110
|
+
/** Every live instance, insertion-ordered. */
|
|
111
|
+
list(): readonly VfxInstanceState[];
|
|
112
|
+
/** Live instance count, for debug/inspection HUDs. */
|
|
113
|
+
count(): number;
|
|
114
|
+
/** Auto-stop instances whose TTL has elapsed as of `nowMs` (defaults to the store clock). Returns the number stopped. */
|
|
115
|
+
tick(nowMs?: number): number;
|
|
116
|
+
/** Dispose every instance (scene change / reset), emitting a `stop` op for each. */
|
|
117
|
+
clear(): void;
|
|
118
|
+
}
|
|
119
|
+
/** Options for {@link createVfxInstanceStore}. */
|
|
120
|
+
export interface VfxInstanceStoreOptions {
|
|
121
|
+
/** Sink for lifecycle ops; wire to `events.emit("combat.vfxInstance", op)` so the shell renders them. */
|
|
122
|
+
onOp?: (op: CombatVfxInstanceEvent) => void;
|
|
123
|
+
/** Injected clock (ms) for heartbeat timestamps and TTL; defaults to `Date.now`. Pass a sim clock for determinism. */
|
|
124
|
+
now?: () => number;
|
|
125
|
+
/** Prefix for minted instance ids. Defaults to `"vfx"`. */
|
|
126
|
+
idPrefix?: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Build a headless retained-VFX registry. The store is the serializable source of truth for long-lived effects
|
|
130
|
+
* (beams, tethers, zones, target lines, looping emitters) that must move and mutate without one-shot re-emit
|
|
131
|
+
* flicker: `upsert` creates or replaces by stable id, `update` nudges dynamic params, `stop` disposes with an
|
|
132
|
+
* optional fade, and `tick` enforces TTL heartbeats. It stays independent of renderer availability, so simulation
|
|
133
|
+
* and tests run without a shell; a wired `onOp` sink turns each op into a `combat.vfxInstance` event the shell
|
|
134
|
+
* binds to render resources.
|
|
135
|
+
*
|
|
136
|
+
* @capability retained-vfx create/update/stop long-lived dynamic visual effects (beam, tether, zone, target line) by stable id
|
|
137
|
+
*/
|
|
138
|
+
export declare function createVfxInstanceStore(options?: VfxInstanceStoreOptions): VfxInstanceStore;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
function cloneParams(params) {
|
|
2
|
+
return params === undefined ? undefined : { ...params };
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Build a headless retained-VFX registry. The store is the serializable source of truth for long-lived effects
|
|
6
|
+
* (beams, tethers, zones, target lines, looping emitters) that must move and mutate without one-shot re-emit
|
|
7
|
+
* flicker: `upsert` creates or replaces by stable id, `update` nudges dynamic params, `stop` disposes with an
|
|
8
|
+
* optional fade, and `tick` enforces TTL heartbeats. It stays independent of renderer availability, so simulation
|
|
9
|
+
* and tests run without a shell; a wired `onOp` sink turns each op into a `combat.vfxInstance` event the shell
|
|
10
|
+
* binds to render resources.
|
|
11
|
+
*
|
|
12
|
+
* @capability retained-vfx create/update/stop long-lived dynamic visual effects (beam, tether, zone, target line) by stable id
|
|
13
|
+
*/
|
|
14
|
+
export function createVfxInstanceStore(options = {}) {
|
|
15
|
+
const onOp = options.onOp;
|
|
16
|
+
const now = options.now ?? (() => Date.now());
|
|
17
|
+
const idPrefix = options.idPrefix ?? "vfx";
|
|
18
|
+
const instances = new Map();
|
|
19
|
+
let seq = 0;
|
|
20
|
+
function emit(op) {
|
|
21
|
+
onOp?.(op);
|
|
22
|
+
}
|
|
23
|
+
function upsert(spec) {
|
|
24
|
+
const id = spec.id ?? `${idPrefix}-${seq++}`;
|
|
25
|
+
const state = {
|
|
26
|
+
id,
|
|
27
|
+
kind: spec.kind,
|
|
28
|
+
color: spec.color,
|
|
29
|
+
...(spec.from === undefined ? {} : { from: spec.from }),
|
|
30
|
+
...(spec.to === undefined ? {} : { to: spec.to }),
|
|
31
|
+
...(spec.radius === undefined ? {} : { radius: spec.radius }),
|
|
32
|
+
...(spec.params === undefined ? {} : { params: cloneParams(spec.params) }),
|
|
33
|
+
...(spec.ttlMs === undefined ? {} : { ttlMs: spec.ttlMs }),
|
|
34
|
+
updatedAtMs: now(),
|
|
35
|
+
};
|
|
36
|
+
instances.set(id, state);
|
|
37
|
+
emit({ op: "upsert", id, instance: state });
|
|
38
|
+
return id;
|
|
39
|
+
}
|
|
40
|
+
function update(id, patch) {
|
|
41
|
+
const current = instances.get(id);
|
|
42
|
+
if (current === undefined)
|
|
43
|
+
return false;
|
|
44
|
+
const mergedParams = patch.params === undefined ? current.params : { ...(current.params ?? {}), ...patch.params };
|
|
45
|
+
const nextFrom = "from" in patch ? patch.from : current.from;
|
|
46
|
+
const nextTo = "to" in patch ? patch.to : current.to;
|
|
47
|
+
const nextRadius = "radius" in patch ? patch.radius : current.radius;
|
|
48
|
+
const next = {
|
|
49
|
+
id: current.id,
|
|
50
|
+
kind: current.kind,
|
|
51
|
+
color: patch.color ?? current.color,
|
|
52
|
+
...(nextFrom === undefined ? {} : { from: nextFrom }),
|
|
53
|
+
...(nextTo === undefined ? {} : { to: nextTo }),
|
|
54
|
+
...(nextRadius === undefined ? {} : { radius: nextRadius }),
|
|
55
|
+
...(mergedParams === undefined ? {} : { params: cloneParams(mergedParams) }),
|
|
56
|
+
...(current.ttlMs === undefined ? {} : { ttlMs: current.ttlMs }),
|
|
57
|
+
updatedAtMs: now(),
|
|
58
|
+
};
|
|
59
|
+
instances.set(id, next);
|
|
60
|
+
emit({ op: "update", id, instance: next });
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
function stop(id, stopOptions = {}) {
|
|
64
|
+
if (!instances.has(id))
|
|
65
|
+
return false;
|
|
66
|
+
instances.delete(id);
|
|
67
|
+
emit({ op: "stop", id, fadeMs: stopOptions.fadeMs ?? 0 });
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
function get(id) {
|
|
71
|
+
return instances.get(id) ?? null;
|
|
72
|
+
}
|
|
73
|
+
function list() {
|
|
74
|
+
return [...instances.values()];
|
|
75
|
+
}
|
|
76
|
+
function count() {
|
|
77
|
+
return instances.size;
|
|
78
|
+
}
|
|
79
|
+
function tick(nowMs = now()) {
|
|
80
|
+
let stopped = 0;
|
|
81
|
+
for (const state of [...instances.values()]) {
|
|
82
|
+
if (state.ttlMs === undefined)
|
|
83
|
+
continue;
|
|
84
|
+
if (nowMs - state.updatedAtMs >= state.ttlMs) {
|
|
85
|
+
if (stop(state.id))
|
|
86
|
+
stopped += 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return stopped;
|
|
90
|
+
}
|
|
91
|
+
function clear() {
|
|
92
|
+
for (const id of [...instances.keys()])
|
|
93
|
+
stop(id);
|
|
94
|
+
}
|
|
95
|
+
return { upsert, update, stop, get, list, count, tick, clear };
|
|
96
|
+
}
|
package/dist/game/worldItem.d.ts
CHANGED
|
@@ -11,8 +11,11 @@ export interface ScatterOptions {
|
|
|
11
11
|
height?: number;
|
|
12
12
|
}
|
|
13
13
|
export declare const DEFAULT_SCATTER: ScatterOptions;
|
|
14
|
-
/** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse.
|
|
14
|
+
/** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
15
17
|
export declare function scatterOffset(rng: () => number, options?: ScatterOptions): EntityPosition;
|
|
18
|
+
/** @internal */
|
|
16
19
|
export declare function scatterPosition(origin: EntityPosition, rng: () => number, options?: ScatterOptions): EntityPosition;
|
|
17
20
|
export interface WorldItemRecord {
|
|
18
21
|
instanceId: string;
|
|
@@ -49,11 +52,19 @@ export interface WorldItemStore {
|
|
|
49
52
|
/** Consumes/destroys the record with no grant implied (decay, an explosion, a cleanup sweep) — same despawn path as `take`, leaves no orphaned record. */
|
|
50
53
|
remove(instanceId: string): WorldItemRecord | null;
|
|
51
54
|
}
|
|
52
|
-
/** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts).
|
|
55
|
+
/** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts).
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
53
58
|
export declare function selectNearestWorldItem(candidates: readonly {
|
|
54
59
|
instanceId: string;
|
|
55
60
|
position: EntityPosition;
|
|
56
61
|
}[], from: EntityPosition, radius: number): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Spawn and track pickup-able items scattered in the world, including drops that scatter on death.
|
|
64
|
+
*
|
|
65
|
+
* @capability world-drops spawn pickup-able items in the world, including death drops
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
57
68
|
export declare function createWorldItemStore(deps: WorldItemStoreDeps): WorldItemStore;
|
|
58
69
|
export interface ResolveDeathDropsOptions {
|
|
59
70
|
mode: "grant" | "world";
|
|
@@ -73,7 +84,8 @@ export interface ResolvedDeathDrops {
|
|
|
73
84
|
* `mode: "grant"` is the legacy behavior (loot straight to inventory); `mode:
|
|
74
85
|
* "world"` routes item drops through a scatter impulse and leaves currency
|
|
75
86
|
* drops granting directly (coins fly to the killer, gear hits the ground).
|
|
76
|
-
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
77
89
|
export declare function resolveDeathDrops(drops: readonly Drop[], options: ResolveDeathDropsOptions): ResolvedDeathDrops;
|
|
78
90
|
export interface RarityStyle {
|
|
79
91
|
color?: string;
|
|
@@ -91,5 +103,6 @@ export interface WorldItemPresentation {
|
|
|
91
103
|
* data the game supplies) with the loot-filter rule overrides (#33). A
|
|
92
104
|
* matching rule wins field-by-field; unmatched fields fall back to the
|
|
93
105
|
* rarity's baseline style.
|
|
94
|
-
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
95
108
|
export declare function resolveWorldItemPresentation(item: LootFilterItem, rarityStyle: Record<string, RarityStyle> | undefined, rules: readonly LootFilterRule[] | undefined): WorldItemPresentation;
|
package/dist/game/worldItem.js
CHANGED
|
@@ -5,7 +5,9 @@ export const WORLD_ITEM_ENTITY_NAME = "world_item";
|
|
|
5
5
|
export const DEFAULT_RARITY = "common";
|
|
6
6
|
export const DEFAULT_PICKUP_RADIUS = 2;
|
|
7
7
|
export const DEFAULT_SCATTER = { radius: 1.5, minRadius: 0.4, height: 0 };
|
|
8
|
-
/** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse.
|
|
8
|
+
/** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse.
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
9
11
|
export function scatterOffset(rng, options = DEFAULT_SCATTER) {
|
|
10
12
|
const angle = rng() * Math.PI * 2;
|
|
11
13
|
const min = options.minRadius ?? 0;
|
|
@@ -13,11 +15,14 @@ export function scatterOffset(rng, options = DEFAULT_SCATTER) {
|
|
|
13
15
|
const distance = min + rng() * span;
|
|
14
16
|
return [Math.cos(angle) * distance, options.height ?? 0, Math.sin(angle) * distance];
|
|
15
17
|
}
|
|
18
|
+
/** @internal */
|
|
16
19
|
export function scatterPosition(origin, rng, options = DEFAULT_SCATTER) {
|
|
17
20
|
const offset = scatterOffset(rng, options);
|
|
18
21
|
return [origin[0] + offset[0], origin[1] + offset[1], origin[2] + offset[2]];
|
|
19
22
|
}
|
|
20
|
-
/** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts).
|
|
23
|
+
/** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts).
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
21
26
|
export function selectNearestWorldItem(candidates, from, radius) {
|
|
22
27
|
let bestId = null;
|
|
23
28
|
let bestDistance = Number.POSITIVE_INFINITY;
|
|
@@ -30,6 +35,12 @@ export function selectNearestWorldItem(candidates, from, radius) {
|
|
|
30
35
|
}
|
|
31
36
|
return bestId;
|
|
32
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Spawn and track pickup-able items scattered in the world, including drops that scatter on death.
|
|
40
|
+
*
|
|
41
|
+
* @capability world-drops spawn pickup-able items in the world, including death drops
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
33
44
|
export function createWorldItemStore(deps) {
|
|
34
45
|
const records = new Map();
|
|
35
46
|
const now = deps.now ?? Date.now;
|
|
@@ -89,7 +100,8 @@ export function createWorldItemStore(deps) {
|
|
|
89
100
|
* `mode: "grant"` is the legacy behavior (loot straight to inventory); `mode:
|
|
90
101
|
* "world"` routes item drops through a scatter impulse and leaves currency
|
|
91
102
|
* drops granting directly (coins fly to the killer, gear hits the ground).
|
|
92
|
-
|
|
103
|
+
* @internal
|
|
104
|
+
*/
|
|
93
105
|
export function resolveDeathDrops(drops, options) {
|
|
94
106
|
if (options.mode !== "world")
|
|
95
107
|
return { worldSpawns: [], grants: [...drops] };
|
|
@@ -120,7 +132,8 @@ export function resolveDeathDrops(drops, options) {
|
|
|
120
132
|
* data the game supplies) with the loot-filter rule overrides (#33). A
|
|
121
133
|
* matching rule wins field-by-field; unmatched fields fall back to the
|
|
122
134
|
* rarity's baseline style.
|
|
123
|
-
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
124
137
|
export function resolveWorldItemPresentation(item, rarityStyle, rules) {
|
|
125
138
|
const base = rarityStyle?.[item.rarity];
|
|
126
139
|
const override = rules === undefined || rules.length === 0 ? {} : evaluateLootFilter(rules, item);
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export { Behaviour, BehaviourModule, createBehaviourWorld, type BehaviourWorld } from "./behaviour/behaviour.js";
|
|
2
|
+
export { type LaneRule } from "./board/laneBoard.js";
|
|
3
|
+
export { createCardPile, createCardPileState, draw, moveCards, peek, pileRng, shuffleWithRng, type CardPile, type CardPileState, } from "./cards/cardPile.js";
|
|
4
|
+
export { runPipeline } from "./cards/modifierPipeline.js";
|
|
5
|
+
export { type CropDef, type CropTileState } from "./crafting/crop.js";
|
|
6
|
+
export { advanceTransport, createProductionState, drainOutput, feedProduction, productionBuilding, resolvePowerGrid, tickProduction, } from "./crafting/production.js";
|
|
7
|
+
export { canCraft, craft, craftSeconds, createRecipeGraph, stationSatisfied, type RecipeDef, type RecipeItem, } from "./crafting/recipe.js";
|
|
8
|
+
export { createListingBook, type Listing } from "./economy/listingBook.js";
|
|
9
|
+
export { addScheduledRule, advanceLedger, annotate, balanceOf, cancelRule, capAmount, createResourceLedger, curveScale, pauseRule, redirect, rejectWhen, resumeRule, taxFraction, thresholdScale, type AdvanceOptions, type AdvanceResult, type AppliedTransaction, type CatchUpPolicy, type LedgerEvent, type LedgerEventKind, type PolicyContext, type PolicyRead, type Precision, type ResourceLedger, type ResourcePolicy, type ResourceTransaction, type RuleCursor, type ScheduledRule, type ThresholdBand, } from "./economy/resourceLedger.js";
|
|
10
|
+
export { type TechNodeDef } from "./economy/techTree.js";
|
|
11
|
+
export { balance, charge, chargeAll, createEmptyWallet, grant, isOverdrawn } from "./economy/wallet.js";
|
|
12
|
+
export { DEFAULT_CHAT_BODY_LENGTH, DEFAULT_CHAT_HISTORY_LIMIT, DEFAULT_CHAT_RATE_LIMIT, createChatRateLimiter, type Chat, type ChatMessage, type ChatRateLimit, type ChatSendResult, } from "./game/chat.js";
|
|
13
|
+
export { playControlsActive } from "./game/controlGate.js";
|
|
14
|
+
export { createCosmetics } from "./game/cosmetics.js";
|
|
15
|
+
export { defineGame, type GameDefinition, type GameDefinitionConfig, type GameLoop, type InventoryDeclaration, type LifecycleConfig, type PhysicsConfig, } from "./game/defineGame.js";
|
|
16
|
+
export { defineSystem, type SystemDefinition, type SystemEventHandlers, type SystemTick } from "./game/defineSystem.js";
|
|
17
|
+
export { createGameDialogue, dialogueSlot } from "./game/dialogue.js";
|
|
18
|
+
export { createGameEvents, type CombatTelegraphEvent, type CombatVfxEvent, type EntityDiedEvent, type EntityFloatTextEvent, type GameEventMap, type GameEvents, type RetainedVfxKind, type StatLevelUpEvent, type VfxKind, type VfxRef, } from "./game/events.js";
|
|
19
|
+
export { appendFeed, createGameFeed, pruneFeed, type FeedEntry, type FeedWindow, type TimedFeedEntry, } from "./game/feed.js";
|
|
20
|
+
export { gamePhase, setGamePhase, type GamePhase } from "./game/gamePhase.js";
|
|
21
|
+
export { createKeyValueStore, type KeyValueStorage } from "./game/keyValueStore.js";
|
|
22
|
+
export { createLeaderboard, type LeaderboardRow, type LeaderboardScope } from "./game/leaderboard.js";
|
|
23
|
+
export { createLevelSequence, type LevelSequence } from "./game/levelSequence.js";
|
|
24
|
+
export { createLoadouts, type LoadoutDef } from "./game/loadout.js";
|
|
25
|
+
export { evaluateLootFilter, lootFilter, type LootFilterRule } from "./game/lootFilter.js";
|
|
26
|
+
export { createLootPipeline, defineLootPipeline, type LootDropProvenance, type LootModifier, type LootPipeline, type LootPipelineDef, type LootPipelineDeps, type LootPlanEntry, type LootResolution, type LootResolveContext, type LootRollPlan, type LootStage, type LootStageKind, type LootStageStatus, type LootStageTrace, } from "./game/lootPipeline.js";
|
|
27
|
+
export { createLootRegistry, lootTable, type Drop, type LootTableDef } from "./game/lootTable.js";
|
|
28
|
+
export { resolveOneShotClip } from "./game/modelAnimation.js";
|
|
29
|
+
export { evaluateObjective } from "./game/objectives.js";
|
|
30
|
+
export { createLayerRegistry, diffParams, orderLayers, resolveParams, resolveSelection, validateLayers, type LayerConflict, type LayerOps, type LayerRegistry, type LayerSelection, type ParamContribution, type ParamDelta, type ParamLayer, type ParamOp, type ParamSnapshot, } from "./game/paramLayers.js";
|
|
31
|
+
export { DEFAULT_PING_CATEGORIES, PING_FEED_ACTION, createPingSystem, type PingCategory, type PingSystem, } from "./game/ping.js";
|
|
32
|
+
export { CAMERA_FRUSTUM_DEFAULTS, worldHealthBarAllowsRole, type BackdropConfig, type CameraKeyframe, type CameraRigKind, type ChaseCameraConfig, type CinematicCameraConfig, type DirectionalLightingConfig, type EntitySpriteConfig, type FirstPersonCameraConfig, type GameCameraConfig, type InspectionCameraConfig, type InspectionZoomAnchor, type LightingConfig, type LockOnCameraConfig, type ModelConfig, type ModelMaterialMaps, type ModelMaterialOverride, type ObjectStyle, type ObserverCameraConfig, type PlayableGame, type PointerConfig, type RtsCameraConfig, type ShoulderCameraConfig, type SideScrollCameraConfig, type TopDownCameraConfig, type WorldItemRenderConfig, type WorldOverlayProps, } from "./game/playableGame.js";
|
|
33
|
+
export { curve, evalCurve, leveling, type Curve, type LevelProgress, type LevelingConfig, type LevelingTrack, } from "./game/progression.js";
|
|
34
|
+
export { createQuestJournal, type QuestDef, type QuestInstance, type QuestRewards } from "./game/quest.js";
|
|
35
|
+
export { RaceState, createLapTimer, createRaceState, finishRaceSession, firstPastPost, idleRaceSession, lapDurations, parDelta, placementOf, raceOutcomeOf, racePlacements, raceTrack, splitSegments, startRaceCountdown, tickRaceSession, } from "./game/race.js";
|
|
36
|
+
export { createRecordBook } from "./game/recordBook.js";
|
|
37
|
+
export { createRuleRegistry, rerollRules, selectRules, type RuleDef, type RuleRegistry, type RuleSelection, type RuleSelectionConfig, } from "./game/ruleSelection.js";
|
|
38
|
+
export { createRunDraft, type RunDraft, type RunModifierOffer } from "./game/runDraft.js";
|
|
39
|
+
export { createSaveStore, localSaveBackend, memorySaveBackend, remoteSaveBackend, type SaveBackend, type SaveStatus, type SaveStore, } from "./game/saveStore.js";
|
|
40
|
+
export { createSocial, type FriendEntry, type FriendRequestEntry, type Friends, type Party, type PartyInviteEntry, type PartyMemberEntry, type PresenceInfo, type Social, type SocialDeps, type WorldInvite, type WorldInviteTarget, } from "./game/social.js";
|
|
41
|
+
export { createSpawnPoints } from "./game/spawnPoints.js";
|
|
42
|
+
export { composeGameLoop } from "./game/systemRuntime.js";
|
|
43
|
+
export { DEFAULT_FIXED_STAGES, DEFAULT_FRAME_STAGES, compileSystemSchedule, type CompiledSystemSchedule, } from "./game/systemSchedule.js";
|
|
44
|
+
export { createTalentTree, type TalentNodeDef, type TalentTree } from "./game/talents.js";
|
|
45
|
+
export { appendToast, createToastQueue, pruneToasts, type Toast } from "./game/toasts.js";
|
|
46
|
+
export { createUnlockCatalog, createUnlocks, type UnlockDef } from "./game/unlocks.js";
|
|
47
|
+
export { createVfxInstanceStore, type CombatVfxInstanceEvent, type VfxInstancePatch, type VfxInstanceSpec, type VfxInstanceState, type VfxInstanceStopOptions, type VfxInstanceStore, type VfxInstanceStoreOptions, } from "./game/vfxInstance.js";
|
|
48
|
+
export { DEFAULT_PICKUP_RADIUS, WORLD_ITEM_ENTITY_NAME, type RarityStyle, type WorldItemRecord, } from "./game/worldItem.js";
|
|
49
|
+
export { type ActionCodes, type ActionCodesMap, type ActionStateTracker } from "./input/actionBindings.js";
|
|
50
|
+
export { NEUTRAL_AXIS, type AxisBindingMap, type AxisChannelConfig, type AxisInput } from "./input/axisInput.js";
|
|
51
|
+
export { applyBindingOverrides, clearBindingOverride, loadBindingOverrides, saveBindingOverride, type BindingOverrides, } from "./input/bindingOverrides.js";
|
|
52
|
+
export { createGestureSurfaceTracker } from "./input/gestureSurface.js";
|
|
53
|
+
export { aimToPoint, type PointerHit, type PointerVec3 } from "./input/pointer.js";
|
|
54
|
+
export { normalizePointerToAxis, type PointerAxisState } from "./input/pointerAxis.js";
|
|
55
|
+
export { createTouchGestureTracker } from "./input/touchGestures.js";
|
|
56
|
+
export { DEFAULT_TOUCH_STYLE, TOUCH_STYLES, TOUCH_STYLE_OPTIONS, deriveTouchScheme, touchButtonShape, touchCode, withTouchCodes, type TouchAnchor, type TouchButton, type TouchButtonShape, type TouchJoystick, type TouchScheme, type TouchStyle, } from "./input/touchScheme.js";
|
|
57
|
+
export { type InventorySlot, type InventoryState } from "./inventory/inventoryModel.js";
|
|
58
|
+
export { type Cell, type Rotation } from "./inventory/shapedGrid.js";
|
|
59
|
+
export { type SlotGrid } from "./inventory/slotModel.js";
|
|
60
|
+
export { createDeliveryQueue, insureLost, partitionOnDeath, resolveConsolation, type DeliveryEntry, type DeliveryQueue, type ScheduledDelivery, } from "./inventory/storageTier.js";
|
|
61
|
+
export { createAffixRoller, seededRng, type AffixPool } from "./item/affix.js";
|
|
62
|
+
export { applyWear, createDurability, createDurabilityTracker, durabilityFraction, isDisabled, repairQuote, wear, type DurabilitySpec, type DurabilityState, } from "./item/durability.js";
|
|
63
|
+
export { activeSetBonuses, applySetBonuses, candidateViolatesForbid, captureProvenance, countSetMembers, identityOf, isIdentityValid, matchesQuery, validateIdentity, type CandidatePlacement, type CompatibilityRule, type ConstraintViolation, type ForbidRule, type IdentityQuery, type ItemIdentity, type ItemProvenance, type RequireRule, type SetBonus, } from "./item/itemIdentity.js";
|
|
64
|
+
export { createItemInstanceRegistry, proceduralLootEntry } from "./item/itemInstanceRegistry.js";
|
|
65
|
+
export { generate, type GenChoiceRecord, type GenChoices, type GenDraft, type GenFieldRecord, type GenOption, type GenOutcome, type GenPool, type GenProvenance, type GenResult, type GenSchema, type GenStep, type GenTransform, type GenValidator, type GenerateOptions, type TransformApi, } from "./item/itemgen.js";
|
|
66
|
+
export { computeEffectiveStats, createModularItem, install, isComplete, missingRequiredSlots, partInSlot, slotAccepts, uninstall, type InstalledPart, type ModularItemDef, type MountSlotDef, type PartDef, } from "./item/modularItem.js";
|
|
67
|
+
export { createItemUse, type ItemUseHandler, type ItemUseInput } from "./item/use.js";
|
|
68
|
+
export { createUseBehaviorRegistry, type BehaviorConfig, type BehaviorState, type ComposedUse, type CompositionResult, type SerializedBehaviorState, type UseBehaviorContext, type UseBehaviorDef, type UseBehaviorOutcome, type UseBehaviorRef, type UseBehaviorRegistry, type UseBehaviorRejection, } from "./item/useBehavior.js";
|
|
69
|
+
export { createWeaponStats } from "./item/weapon.js";
|
|
70
|
+
export { createStatGraph, statModifierContributions, type StatContribution, type StatContributionStep, type StatDeriveContext, type StatDerivedDef, type StatExplanation, type StatGraph, type StatGraphDef, type StatInputDef, type StatModEntry, type StatOp, type StatSheet, type StatSheetState, } from "./progression/statGraph.js";
|
|
71
|
+
export { type CellGrid } from "./puzzle/cellGrid.js";
|
|
72
|
+
export { type ShapeTable } from "./puzzle/fallingPiece.js";
|
|
73
|
+
export { createNameGenerator } from "./random/nameGen.js";
|
|
74
|
+
export { pickUniform, pickWeighted } from "./random/pick.js";
|
|
75
|
+
export { seededStreams } from "./random/rng.js";
|
|
76
|
+
export { addValue, clampValue, createPairKeyCodec, driftValue, getValue, setValue, towardValue, type NumericBounds, type PairKeyCodec, type PairKeyOptions, } from "./relation/keyedValues.js";
|
|
77
|
+
export { crossThresholds, tierAt, type CrossThresholdsOptions, type ThresholdBoundary, type ThresholdCrossing, type ThresholdDirection, } from "./relation/thresholds.js";
|
|
78
|
+
export { evaluatePredicate, readPath, type Predicate, type PredicateFacts, type PredicatePath, type PredicateValue, } from "./rules/predicate.js";
|
|
79
|
+
export { getRuleEffect, listRuleEffects, registerRuleEffect, type RuleEffectDefinition } from "./rules/ruleEffects.js";
|
|
80
|
+
export { createTriggeredRuleEngine, type ActiveEffect, type EffectRef, type FiringBlock, type RateLimit, type RuleEvent, type RuleFiring, type StackPolicy, type TargetRole, type TargetSelector, type TriggeredRule, type TriggeredRuleEngine, type TriggeredRuleState, } from "./rules/triggeredRules.js";
|
|
81
|
+
export { createRing, ringSampleAt, type Ring, type RingConfig, type RingPhase } from "./session/ring.js";
|
|
82
|
+
export { type RoleSpec } from "./session/roles.js";
|
|
83
|
+
export { type RoundConfig, type RoundSnapshot } from "./session/roundState.js";
|
|
84
|
+
export { createDecayMeterSet, decayMeterMoodles, decayMeterSnapshot, decayMeterState, decayMeters, initDecayMeters, refillMeter, type DecayMeterSet, type DecayMeterValues, type DecayModifier, } from "./survival/decayMeter.js";
|
|
85
|
+
export { createMoodleStack, stackMoodles, type Moodle, type MoodleStack } from "./survival/moodle.js";
|
|
86
|
+
export { createMultiRegionHealth, type MultiRegionHealth } from "./survival/regionHealth.js";
|
|
87
|
+
export { createCommitController } from "./turn/commit.js";
|
|
88
|
+
export { createIntentBoard } from "./turn/intent.js";
|
|
89
|
+
export { createTurnLoop, type TurnLoop } from "./turn/turnLoop.js";
|
|
90
|
+
export { activeJobs, cancelJob, createWorkQueue, enqueue, fifoOrdering, jobById, jobProgress, pauseJob, priorityOrdering, queueSize, queuedJobs, resumeJob, tick, type CancelResult, type EnqueueOptions, type EnqueueResult, type Job, type JobId, type JobOrdering, type JobStatus, type JobValidation, type TickResult, type WorkQueueConfig, type WorkQueueEvent, type WorkQueueState, } from "./work/jobQueue.js";
|
|
91
|
+
export { unitTrainingConfig, type ResourceCost, type TrainableUnitDef, type UnitReservation, type UnitSpawnOrder, type UnitTrainingOptions, type UnitTrainingSpec, } from "./work/unitTraining.js";
|
package/dist/gameplay.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export { Behaviour, BehaviourModule, createBehaviourWorld } from "./behaviour/behaviour.js";
|
|
2
|
+
export {} from "./board/laneBoard.js";
|
|
3
|
+
export { createCardPile, createCardPileState, draw, moveCards, peek, pileRng, shuffleWithRng, } from "./cards/cardPile.js";
|
|
4
|
+
export { runPipeline } from "./cards/modifierPipeline.js";
|
|
5
|
+
export {} from "./crafting/crop.js";
|
|
6
|
+
export { advanceTransport, createProductionState, drainOutput, feedProduction, productionBuilding, resolvePowerGrid, tickProduction, } from "./crafting/production.js";
|
|
7
|
+
export { canCraft, craft, craftSeconds, createRecipeGraph, stationSatisfied, } from "./crafting/recipe.js";
|
|
8
|
+
export { createListingBook } from "./economy/listingBook.js";
|
|
9
|
+
export { addScheduledRule, advanceLedger, annotate, balanceOf, cancelRule, capAmount, createResourceLedger, curveScale, pauseRule, redirect, rejectWhen, resumeRule, taxFraction, thresholdScale, } from "./economy/resourceLedger.js";
|
|
10
|
+
export {} from "./economy/techTree.js";
|
|
11
|
+
export { balance, charge, chargeAll, createEmptyWallet, grant, isOverdrawn } from "./economy/wallet.js";
|
|
12
|
+
export { DEFAULT_CHAT_BODY_LENGTH, DEFAULT_CHAT_HISTORY_LIMIT, DEFAULT_CHAT_RATE_LIMIT, createChatRateLimiter, } from "./game/chat.js";
|
|
13
|
+
export { playControlsActive } from "./game/controlGate.js";
|
|
14
|
+
export { createCosmetics } from "./game/cosmetics.js";
|
|
15
|
+
export { defineGame, } from "./game/defineGame.js";
|
|
16
|
+
export { defineSystem } from "./game/defineSystem.js";
|
|
17
|
+
export { createGameDialogue, dialogueSlot } from "./game/dialogue.js";
|
|
18
|
+
export { createGameEvents, } from "./game/events.js";
|
|
19
|
+
export { appendFeed, createGameFeed, pruneFeed, } from "./game/feed.js";
|
|
20
|
+
export { gamePhase, setGamePhase } from "./game/gamePhase.js";
|
|
21
|
+
export { createKeyValueStore } from "./game/keyValueStore.js";
|
|
22
|
+
export { createLeaderboard } from "./game/leaderboard.js";
|
|
23
|
+
export { createLevelSequence } from "./game/levelSequence.js";
|
|
24
|
+
export { createLoadouts } from "./game/loadout.js";
|
|
25
|
+
export { evaluateLootFilter, lootFilter } from "./game/lootFilter.js";
|
|
26
|
+
export { createLootPipeline, defineLootPipeline, } from "./game/lootPipeline.js";
|
|
27
|
+
export { createLootRegistry, lootTable } from "./game/lootTable.js";
|
|
28
|
+
export { resolveOneShotClip } from "./game/modelAnimation.js";
|
|
29
|
+
export { evaluateObjective } from "./game/objectives.js";
|
|
30
|
+
export { createLayerRegistry, diffParams, orderLayers, resolveParams, resolveSelection, validateLayers, } from "./game/paramLayers.js";
|
|
31
|
+
export { DEFAULT_PING_CATEGORIES, PING_FEED_ACTION, createPingSystem, } from "./game/ping.js";
|
|
32
|
+
export { CAMERA_FRUSTUM_DEFAULTS, worldHealthBarAllowsRole, } from "./game/playableGame.js";
|
|
33
|
+
export { curve, evalCurve, leveling, } from "./game/progression.js";
|
|
34
|
+
export { createQuestJournal } from "./game/quest.js";
|
|
35
|
+
export { RaceState, createLapTimer, createRaceState, finishRaceSession, firstPastPost, idleRaceSession, lapDurations, parDelta, placementOf, raceOutcomeOf, racePlacements, raceTrack, splitSegments, startRaceCountdown, tickRaceSession, } from "./game/race.js";
|
|
36
|
+
export { createRecordBook } from "./game/recordBook.js";
|
|
37
|
+
export { createRuleRegistry, rerollRules, selectRules, } from "./game/ruleSelection.js";
|
|
38
|
+
export { createRunDraft } from "./game/runDraft.js";
|
|
39
|
+
export { createSaveStore, localSaveBackend, memorySaveBackend, remoteSaveBackend, } from "./game/saveStore.js";
|
|
40
|
+
export { createSocial, } from "./game/social.js";
|
|
41
|
+
export { createSpawnPoints } from "./game/spawnPoints.js";
|
|
42
|
+
export { composeGameLoop } from "./game/systemRuntime.js";
|
|
43
|
+
export { DEFAULT_FIXED_STAGES, DEFAULT_FRAME_STAGES, compileSystemSchedule, } from "./game/systemSchedule.js";
|
|
44
|
+
export { createTalentTree } from "./game/talents.js";
|
|
45
|
+
export { appendToast, createToastQueue, pruneToasts } from "./game/toasts.js";
|
|
46
|
+
export { createUnlockCatalog, createUnlocks } from "./game/unlocks.js";
|
|
47
|
+
export { createVfxInstanceStore, } from "./game/vfxInstance.js";
|
|
48
|
+
export { DEFAULT_PICKUP_RADIUS, WORLD_ITEM_ENTITY_NAME, } from "./game/worldItem.js";
|
|
49
|
+
export {} from "./input/actionBindings.js";
|
|
50
|
+
export { NEUTRAL_AXIS } from "./input/axisInput.js";
|
|
51
|
+
export { applyBindingOverrides, clearBindingOverride, loadBindingOverrides, saveBindingOverride, } from "./input/bindingOverrides.js";
|
|
52
|
+
export { createGestureSurfaceTracker } from "./input/gestureSurface.js";
|
|
53
|
+
export { aimToPoint } from "./input/pointer.js";
|
|
54
|
+
export { normalizePointerToAxis } from "./input/pointerAxis.js";
|
|
55
|
+
export { createTouchGestureTracker } from "./input/touchGestures.js";
|
|
56
|
+
export { DEFAULT_TOUCH_STYLE, TOUCH_STYLES, TOUCH_STYLE_OPTIONS, deriveTouchScheme, touchButtonShape, touchCode, withTouchCodes, } from "./input/touchScheme.js";
|
|
57
|
+
export {} from "./inventory/inventoryModel.js";
|
|
58
|
+
export {} from "./inventory/shapedGrid.js";
|
|
59
|
+
export {} from "./inventory/slotModel.js";
|
|
60
|
+
export { createDeliveryQueue, insureLost, partitionOnDeath, resolveConsolation, } from "./inventory/storageTier.js";
|
|
61
|
+
export { createAffixRoller, seededRng } from "./item/affix.js";
|
|
62
|
+
export { applyWear, createDurability, createDurabilityTracker, durabilityFraction, isDisabled, repairQuote, wear, } from "./item/durability.js";
|
|
63
|
+
export { activeSetBonuses, applySetBonuses, candidateViolatesForbid, captureProvenance, countSetMembers, identityOf, isIdentityValid, matchesQuery, validateIdentity, } from "./item/itemIdentity.js";
|
|
64
|
+
export { createItemInstanceRegistry, proceduralLootEntry } from "./item/itemInstanceRegistry.js";
|
|
65
|
+
export { generate, } from "./item/itemgen.js";
|
|
66
|
+
export { computeEffectiveStats, createModularItem, install, isComplete, missingRequiredSlots, partInSlot, slotAccepts, uninstall, } from "./item/modularItem.js";
|
|
67
|
+
export { createItemUse } from "./item/use.js";
|
|
68
|
+
export { createUseBehaviorRegistry, } from "./item/useBehavior.js";
|
|
69
|
+
export { createWeaponStats } from "./item/weapon.js";
|
|
70
|
+
export { createStatGraph, statModifierContributions, } from "./progression/statGraph.js";
|
|
71
|
+
export {} from "./puzzle/cellGrid.js";
|
|
72
|
+
export {} from "./puzzle/fallingPiece.js";
|
|
73
|
+
export { createNameGenerator } from "./random/nameGen.js";
|
|
74
|
+
export { pickUniform, pickWeighted } from "./random/pick.js";
|
|
75
|
+
export { seededStreams } from "./random/rng.js";
|
|
76
|
+
export { addValue, clampValue, createPairKeyCodec, driftValue, getValue, setValue, towardValue, } from "./relation/keyedValues.js";
|
|
77
|
+
export { crossThresholds, tierAt, } from "./relation/thresholds.js";
|
|
78
|
+
export { evaluatePredicate, readPath, } from "./rules/predicate.js";
|
|
79
|
+
export { getRuleEffect, listRuleEffects, registerRuleEffect } from "./rules/ruleEffects.js";
|
|
80
|
+
export { createTriggeredRuleEngine, } from "./rules/triggeredRules.js";
|
|
81
|
+
export { createRing, ringSampleAt } from "./session/ring.js";
|
|
82
|
+
export {} from "./session/roles.js";
|
|
83
|
+
export {} from "./session/roundState.js";
|
|
84
|
+
export { createDecayMeterSet, decayMeterMoodles, decayMeterSnapshot, decayMeterState, decayMeters, initDecayMeters, refillMeter, } from "./survival/decayMeter.js";
|
|
85
|
+
export { createMoodleStack, stackMoodles } from "./survival/moodle.js";
|
|
86
|
+
export { createMultiRegionHealth } from "./survival/regionHealth.js";
|
|
87
|
+
export { createCommitController } from "./turn/commit.js";
|
|
88
|
+
export { createIntentBoard } from "./turn/intent.js";
|
|
89
|
+
export { createTurnLoop } from "./turn/turnLoop.js";
|
|
90
|
+
export { activeJobs, cancelJob, createWorkQueue, enqueue, fifoOrdering, jobById, jobProgress, pauseJob, priorityOrdering, queueSize, queuedJobs, resumeJob, tick, } from "./work/jobQueue.js";
|
|
91
|
+
export { unitTrainingConfig, } from "./work/unitTraining.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
export * from "./runtime/transport.js";
|
|
7
|
-
export * from "./runtime/visibility.js";
|
|
1
|
+
/**
|
|
2
|
+
* Package root — deep-path imports only for engine APIs (`@jgengine/core/<domain>/<file>`).
|
|
3
|
+
* Re-exports {@link VERSION} / {@link CHANGELOG} so `import { VERSION } from "@jgengine/core"` works.
|
|
4
|
+
*/
|
|
5
|
+
export { VERSION, CHANGELOG, type ChangelogEntry } from "./meta/changelog.js";
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
export * from "./runtime/transport.js";
|
|
7
|
-
export * from "./runtime/visibility.js";
|
|
1
|
+
/**
|
|
2
|
+
* Package root — deep-path imports only for engine APIs (`@jgengine/core/<domain>/<file>`).
|
|
3
|
+
* Re-exports {@link VERSION} / {@link CHANGELOG} so `import { VERSION } from "@jgengine/core"` works.
|
|
4
|
+
*/
|
|
5
|
+
export { VERSION, CHANGELOG } from "./meta/changelog.js";
|