@datamoc/mw_games 0.3.1 → 0.4.1
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 +401 -395
- package/dist/actors/Advancement.d.ts +17 -0
- package/dist/actors/Advancement.d.ts.map +1 -1
- package/dist/actors/Advancement.js +17 -0
- package/dist/actors/Advancement.js.map +1 -1
- package/dist/actors/Affix.d.ts +46 -0
- package/dist/actors/Affix.d.ts.map +1 -1
- package/dist/actors/Affix.js +32 -1
- package/dist/actors/Affix.js.map +1 -1
- package/dist/actors/Appearances.d.ts +12 -0
- package/dist/actors/Appearances.d.ts.map +1 -1
- package/dist/actors/Appearances.js +12 -0
- package/dist/actors/Appearances.js.map +1 -1
- package/dist/actors/Aura.d.ts +16 -0
- package/dist/actors/Aura.d.ts.map +1 -1
- package/dist/actors/Aura.js +16 -0
- package/dist/actors/Aura.js.map +1 -1
- package/dist/actors/Barrier.d.ts +60 -0
- package/dist/actors/Barrier.d.ts.map +1 -0
- package/dist/actors/Barrier.js +70 -0
- package/dist/actors/Barrier.js.map +1 -0
- package/dist/actors/Charges.d.ts +35 -0
- package/dist/actors/Charges.d.ts.map +1 -1
- package/dist/actors/Charges.js +26 -0
- package/dist/actors/Charges.js.map +1 -1
- package/dist/actors/Equipment.d.ts +48 -0
- package/dist/actors/Equipment.d.ts.map +1 -1
- package/dist/actors/Equipment.js +51 -1
- package/dist/actors/Equipment.js.map +1 -1
- package/dist/actors/Inventory.d.ts +70 -3
- package/dist/actors/Inventory.d.ts.map +1 -1
- package/dist/actors/Inventory.js +109 -5
- package/dist/actors/Inventory.js.map +1 -1
- package/dist/actors/ItemState.d.ts +24 -2
- package/dist/actors/ItemState.d.ts.map +1 -1
- package/dist/actors/ItemState.js +31 -2
- package/dist/actors/ItemState.js.map +1 -1
- package/dist/actors/ItemStatusEffect.d.ts +13 -0
- package/dist/actors/ItemStatusEffect.d.ts.map +1 -1
- package/dist/actors/ItemStatusEffect.js +13 -0
- package/dist/actors/ItemStatusEffect.js.map +1 -1
- package/dist/actors/Loot.d.ts +15 -1
- package/dist/actors/Loot.d.ts.map +1 -1
- package/dist/actors/Loot.js +16 -2
- package/dist/actors/Loot.js.map +1 -1
- package/dist/actors/Progression.d.ts +23 -1
- package/dist/actors/Progression.d.ts.map +1 -1
- package/dist/actors/Progression.js +21 -1
- package/dist/actors/Progression.js.map +1 -1
- package/dist/actors/Resource.d.ts +30 -0
- package/dist/actors/Resource.d.ts.map +1 -1
- package/dist/actors/Resource.js +22 -0
- package/dist/actors/Resource.js.map +1 -1
- package/dist/actors/Scaling.d.ts +8 -0
- package/dist/actors/Scaling.d.ts.map +1 -1
- package/dist/actors/Scaling.js.map +1 -1
- package/dist/actors/Shop.d.ts +15 -0
- package/dist/actors/Shop.d.ts.map +1 -1
- package/dist/actors/Shop.js.map +1 -1
- package/dist/actors/SkillPoints.d.ts +27 -0
- package/dist/actors/SkillPoints.d.ts.map +1 -1
- package/dist/actors/SkillPoints.js +29 -0
- package/dist/actors/SkillPoints.js.map +1 -1
- package/dist/actors/StatBlock.d.ts +16 -0
- package/dist/actors/StatBlock.d.ts.map +1 -1
- package/dist/actors/StatBlock.js +21 -0
- package/dist/actors/StatBlock.js.map +1 -1
- package/dist/actors/StatusEffect.d.ts +18 -0
- package/dist/actors/StatusEffect.d.ts.map +1 -1
- package/dist/actors/StatusEffect.js +18 -0
- package/dist/actors/StatusEffect.js.map +1 -1
- package/dist/actors/Support.d.ts +13 -2
- package/dist/actors/Support.d.ts.map +1 -1
- package/dist/actors/Support.js +13 -2
- package/dist/actors/Support.js.map +1 -1
- package/dist/actors/Traits.d.ts +14 -0
- package/dist/actors/Traits.d.ts.map +1 -1
- package/dist/actors/Traits.js +14 -0
- package/dist/actors/Traits.js.map +1 -1
- package/dist/actors/craft.d.ts +16 -0
- package/dist/actors/craft.d.ts.map +1 -1
- package/dist/actors/craft.js +16 -0
- package/dist/actors/craft.js.map +1 -1
- package/dist/actors/index.d.ts +8 -5
- package/dist/actors/index.d.ts.map +1 -1
- package/dist/actors/index.js +3 -2
- package/dist/actors/index.js.map +1 -1
- package/dist/actors/skillCheck.d.ts +8 -0
- package/dist/actors/skillCheck.d.ts.map +1 -1
- package/dist/actors/skillCheck.js +8 -0
- package/dist/actors/skillCheck.js.map +1 -1
- package/dist/assets/ByteProgress.d.ts +37 -0
- package/dist/assets/ByteProgress.d.ts.map +1 -0
- package/dist/assets/ByteProgress.js +54 -0
- package/dist/assets/ByteProgress.js.map +1 -0
- package/dist/assets/Streaming.d.ts +11 -1
- package/dist/assets/Streaming.d.ts.map +1 -1
- package/dist/assets/Streaming.js +11 -1
- package/dist/assets/Streaming.js.map +1 -1
- package/dist/assets/index.d.ts +11 -52
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +9 -80
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/loader.d.ts +45 -0
- package/dist/assets/loader.d.ts.map +1 -0
- package/dist/assets/loader.js +72 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/paths.d.ts +50 -0
- package/dist/assets/paths.d.ts.map +1 -0
- package/dist/assets/paths.js +59 -0
- package/dist/assets/paths.js.map +1 -0
- package/dist/audio/Captions.d.ts +13 -1
- package/dist/audio/Captions.d.ts.map +1 -1
- package/dist/audio/Captions.js +13 -1
- package/dist/audio/Captions.js.map +1 -1
- package/dist/audio/Midi.d.ts +19 -1
- package/dist/audio/Midi.d.ts.map +1 -1
- package/dist/audio/Midi.js +19 -1
- package/dist/audio/Midi.js.map +1 -1
- package/dist/audio/Music.d.ts +11 -0
- package/dist/audio/Music.d.ts.map +1 -1
- package/dist/audio/Music.js +11 -0
- package/dist/audio/Music.js.map +1 -1
- package/dist/audio/Orchestrator.d.ts +14 -0
- package/dist/audio/Orchestrator.d.ts.map +1 -1
- package/dist/audio/Orchestrator.js +14 -0
- package/dist/audio/Orchestrator.js.map +1 -1
- package/dist/audio/Playable.d.ts +11 -1
- package/dist/audio/Playable.d.ts.map +1 -1
- package/dist/audio/Playable.js +12 -2
- package/dist/audio/Playable.js.map +1 -1
- package/dist/audio/Sound.d.ts +8 -0
- package/dist/audio/Sound.d.ts.map +1 -1
- package/dist/audio/Sound.js +8 -0
- package/dist/audio/Sound.js.map +1 -1
- package/dist/audio/Synth.d.ts +15 -0
- package/dist/audio/Synth.d.ts.map +1 -1
- package/dist/audio/Synth.js +15 -0
- package/dist/audio/Synth.js.map +1 -1
- package/dist/battle/BattleAI.d.ts +18 -2
- package/dist/battle/BattleAI.d.ts.map +1 -1
- package/dist/battle/BattleAI.js +18 -2
- package/dist/battle/BattleAI.js.map +1 -1
- package/dist/battle/Evolution.d.ts +12 -0
- package/dist/battle/Evolution.d.ts.map +1 -1
- package/dist/battle/Evolution.js +12 -0
- package/dist/battle/Evolution.js.map +1 -1
- package/dist/battle/Field.d.ts +13 -2
- package/dist/battle/Field.d.ts.map +1 -1
- package/dist/battle/Field.js +3 -3
- package/dist/battle/Field.js.map +1 -1
- package/dist/battle/Hooks.d.ts +23 -13
- package/dist/battle/Hooks.d.ts.map +1 -1
- package/dist/battle/Hooks.js +36 -18
- package/dist/battle/Hooks.js.map +1 -1
- package/dist/battle/Move.d.ts +13 -0
- package/dist/battle/Move.d.ts.map +1 -1
- package/dist/battle/Move.js +13 -0
- package/dist/battle/Move.js.map +1 -1
- package/dist/battle/Party.d.ts +11 -0
- package/dist/battle/Party.d.ts.map +1 -1
- package/dist/battle/Party.js +11 -0
- package/dist/battle/Party.js.map +1 -1
- package/dist/battle/Species.d.ts +10 -0
- package/dist/battle/Species.d.ts.map +1 -1
- package/dist/battle/Species.js +10 -0
- package/dist/battle/Species.js.map +1 -1
- package/dist/battle/StatStages.d.ts +14 -0
- package/dist/battle/StatStages.d.ts.map +1 -1
- package/dist/battle/StatStages.js.map +1 -1
- package/dist/battle/TypeMatrix.d.ts +11 -0
- package/dist/battle/TypeMatrix.d.ts.map +1 -1
- package/dist/battle/TypeMatrix.js +11 -0
- package/dist/battle/TypeMatrix.js.map +1 -1
- package/dist/core/Achievements.d.ts +15 -0
- package/dist/core/Achievements.d.ts.map +1 -1
- package/dist/core/Achievements.js +15 -0
- package/dist/core/Achievements.js.map +1 -1
- package/dist/core/Collection.d.ts +12 -0
- package/dist/core/Collection.d.ts.map +1 -1
- package/dist/core/Collection.js +12 -0
- package/dist/core/Collection.js.map +1 -1
- package/dist/core/Entity.d.ts +42 -0
- package/dist/core/Entity.d.ts.map +1 -0
- package/dist/core/Entity.js +47 -0
- package/dist/core/Entity.js.map +1 -0
- package/dist/core/Feedback.d.ts +11 -1
- package/dist/core/Feedback.d.ts.map +1 -1
- package/dist/core/Feedback.js +11 -1
- package/dist/core/Feedback.js.map +1 -1
- package/dist/core/Hex.d.ts +14 -0
- package/dist/core/Hex.d.ts.map +1 -1
- package/dist/core/Hex.js +14 -0
- package/dist/core/Hex.js.map +1 -1
- package/dist/core/Hooks.d.ts +48 -0
- package/dist/core/Hooks.d.ts.map +1 -0
- package/dist/core/Hooks.js +33 -0
- package/dist/core/Hooks.js.map +1 -0
- package/dist/core/Input.d.ts +53 -0
- package/dist/core/Input.d.ts.map +1 -1
- package/dist/core/Input.js +126 -21
- package/dist/core/Input.js.map +1 -1
- package/dist/core/Loading.d.ts +17 -0
- package/dist/core/Loading.d.ts.map +1 -1
- package/dist/core/Loading.js +17 -0
- package/dist/core/Loading.js.map +1 -1
- package/dist/core/Log.d.ts +9 -0
- package/dist/core/Log.d.ts.map +1 -1
- package/dist/core/Log.js +9 -0
- package/dist/core/Log.js.map +1 -1
- package/dist/core/Multiplayer.d.ts +12 -0
- package/dist/core/Multiplayer.d.ts.map +1 -1
- package/dist/core/Multiplayer.js +12 -0
- package/dist/core/Multiplayer.js.map +1 -1
- package/dist/core/News.d.ts +12 -0
- package/dist/core/News.d.ts.map +1 -1
- package/dist/core/News.js.map +1 -1
- package/dist/core/PlayerInput.d.ts +19 -0
- package/dist/core/PlayerInput.d.ts.map +1 -1
- package/dist/core/PlayerInput.js +25 -0
- package/dist/core/PlayerInput.js.map +1 -1
- package/dist/core/Presentation.d.ts +56 -0
- package/dist/core/Presentation.d.ts.map +1 -0
- package/dist/core/Presentation.js +78 -0
- package/dist/core/Presentation.js.map +1 -0
- package/dist/core/Random.d.ts +38 -5
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js +38 -5
- package/dist/core/Random.js.map +1 -1
- package/dist/core/Replay.d.ts +31 -0
- package/dist/core/Replay.d.ts.map +1 -1
- package/dist/core/Replay.js +31 -0
- package/dist/core/Replay.js.map +1 -1
- package/dist/core/RunHistory.d.ts +12 -0
- package/dist/core/RunHistory.d.ts.map +1 -1
- package/dist/core/RunHistory.js.map +1 -1
- package/dist/core/Sanitize.d.ts +18 -0
- package/dist/core/Sanitize.d.ts.map +1 -1
- package/dist/core/Sanitize.js +18 -0
- package/dist/core/Sanitize.js.map +1 -1
- package/dist/core/Save.d.ts.map +1 -1
- package/dist/core/Save.js +13 -0
- package/dist/core/Save.js.map +1 -1
- package/dist/core/SaveSync.d.ts +14 -0
- package/dist/core/SaveSync.d.ts.map +1 -1
- package/dist/core/SaveSync.js.map +1 -1
- package/dist/core/Scene.d.ts +29 -6
- package/dist/core/Scene.d.ts.map +1 -1
- package/dist/core/Scene.js +31 -6
- package/dist/core/Scene.js.map +1 -1
- package/dist/core/SceneStack.d.ts +28 -4
- package/dist/core/SceneStack.d.ts.map +1 -1
- package/dist/core/SceneStack.js +24 -0
- package/dist/core/SceneStack.js.map +1 -1
- package/dist/core/Scramble.d.ts +8 -0
- package/dist/core/Scramble.d.ts.map +1 -1
- package/dist/core/Scramble.js +8 -0
- package/dist/core/Scramble.js.map +1 -1
- package/dist/core/Session.d.ts +10 -0
- package/dist/core/Session.d.ts.map +1 -1
- package/dist/core/Session.js.map +1 -1
- package/dist/core/Signal.d.ts +11 -0
- package/dist/core/Signal.d.ts.map +1 -1
- package/dist/core/Signal.js.map +1 -1
- package/dist/core/Spawner.d.ts +17 -0
- package/dist/core/Spawner.d.ts.map +1 -1
- package/dist/core/Spawner.js +17 -0
- package/dist/core/Spawner.js.map +1 -1
- package/dist/core/Stats.d.ts +14 -0
- package/dist/core/Stats.d.ts.map +1 -1
- package/dist/core/Stats.js +14 -0
- package/dist/core/Stats.js.map +1 -1
- package/dist/core/Telemetry.d.ts +11 -0
- package/dist/core/Telemetry.d.ts.map +1 -1
- package/dist/core/Telemetry.js +11 -0
- package/dist/core/Telemetry.js.map +1 -1
- package/dist/core/Tween.d.ts +16 -1
- package/dist/core/Tween.d.ts.map +1 -1
- package/dist/core/Tween.js +16 -1
- package/dist/core/Tween.js.map +1 -1
- package/dist/core/UndoHistory.d.ts +15 -0
- package/dist/core/UndoHistory.d.ts.map +1 -1
- package/dist/core/UndoHistory.js.map +1 -1
- package/dist/core/index.d.ts +7 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/i18n/Format.d.ts +25 -0
- package/dist/i18n/Format.d.ts.map +1 -0
- package/dist/i18n/Format.js +32 -0
- package/dist/i18n/Format.js.map +1 -0
- package/dist/i18n/SemanticMessage.d.ts +71 -0
- package/dist/i18n/SemanticMessage.d.ts.map +1 -0
- package/dist/i18n/SemanticMessage.js +40 -0
- package/dist/i18n/SemanticMessage.js.map +1 -0
- package/dist/i18n/Validate.d.ts +56 -0
- package/dist/i18n/Validate.d.ts.map +1 -0
- package/dist/i18n/Validate.js +65 -0
- package/dist/i18n/Validate.js.map +1 -0
- package/dist/i18n/index.d.ts +39 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +48 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/mw_games.global.js +153 -88
- package/dist/roguelike/Blob.d.ts +11 -0
- package/dist/roguelike/Blob.d.ts.map +1 -1
- package/dist/roguelike/Blob.js +11 -0
- package/dist/roguelike/Blob.js.map +1 -1
- package/dist/roguelike/Boss.d.ts +16 -4
- package/dist/roguelike/Boss.d.ts.map +1 -1
- package/dist/roguelike/Boss.js +18 -6
- package/dist/roguelike/Boss.js.map +1 -1
- package/dist/roguelike/Combat.d.ts +23 -11
- package/dist/roguelike/Combat.d.ts.map +1 -1
- package/dist/roguelike/Combat.js +22 -16
- package/dist/roguelike/Combat.js.map +1 -1
- package/dist/roguelike/ContentRoll.d.ts +53 -0
- package/dist/roguelike/ContentRoll.d.ts.map +1 -0
- package/dist/roguelike/ContentRoll.js +48 -0
- package/dist/roguelike/ContentRoll.js.map +1 -0
- package/dist/roguelike/Doors.d.ts +13 -0
- package/dist/roguelike/Doors.d.ts.map +1 -1
- package/dist/roguelike/Doors.js +13 -0
- package/dist/roguelike/Doors.js.map +1 -1
- package/dist/roguelike/DungeonParity.d.ts +57 -0
- package/dist/roguelike/DungeonParity.d.ts.map +1 -0
- package/dist/roguelike/DungeonParity.js +78 -0
- package/dist/roguelike/DungeonParity.js.map +1 -0
- package/dist/roguelike/Elevation.d.ts +15 -0
- package/dist/roguelike/Elevation.d.ts.map +1 -1
- package/dist/roguelike/Elevation.js +15 -0
- package/dist/roguelike/Elevation.js.map +1 -1
- package/dist/roguelike/Features.d.ts +59 -0
- package/dist/roguelike/Features.d.ts.map +1 -0
- package/dist/roguelike/Features.js +76 -0
- package/dist/roguelike/Features.js.map +1 -0
- package/dist/roguelike/FieldOfView.d.ts +13 -0
- package/dist/roguelike/FieldOfView.d.ts.map +1 -1
- package/dist/roguelike/FieldOfView.js +13 -0
- package/dist/roguelike/FieldOfView.js.map +1 -1
- package/dist/roguelike/Level.d.ts +26 -1
- package/dist/roguelike/Level.d.ts.map +1 -1
- package/dist/roguelike/Level.js +26 -1
- package/dist/roguelike/Level.js.map +1 -1
- package/dist/roguelike/MonsterAI.d.ts +14 -0
- package/dist/roguelike/MonsterAI.d.ts.map +1 -1
- package/dist/roguelike/MonsterAI.js +15 -1
- package/dist/roguelike/MonsterAI.js.map +1 -1
- package/dist/roguelike/MultiStageAbility.d.ts +59 -0
- package/dist/roguelike/MultiStageAbility.d.ts.map +1 -0
- package/dist/roguelike/MultiStageAbility.js +76 -0
- package/dist/roguelike/MultiStageAbility.js.map +1 -0
- package/dist/roguelike/Pathfinder.d.ts +23 -2
- package/dist/roguelike/Pathfinder.d.ts.map +1 -1
- package/dist/roguelike/Pathfinder.js +23 -2
- package/dist/roguelike/Pathfinder.js.map +1 -1
- package/dist/roguelike/RoomBuilders.d.ts +60 -0
- package/dist/roguelike/RoomBuilders.d.ts.map +1 -0
- package/dist/roguelike/RoomBuilders.js +57 -0
- package/dist/roguelike/RoomBuilders.js.map +1 -0
- package/dist/roguelike/Scheduler.d.ts +48 -1
- package/dist/roguelike/Scheduler.d.ts.map +1 -1
- package/dist/roguelike/Scheduler.js +58 -1
- package/dist/roguelike/Scheduler.js.map +1 -1
- package/dist/roguelike/Secrets.d.ts +13 -0
- package/dist/roguelike/Secrets.d.ts.map +1 -1
- package/dist/roguelike/Secrets.js +13 -0
- package/dist/roguelike/Secrets.js.map +1 -1
- package/dist/roguelike/Stealth.d.ts +13 -0
- package/dist/roguelike/Stealth.d.ts.map +1 -1
- package/dist/roguelike/Stealth.js +13 -0
- package/dist/roguelike/Stealth.js.map +1 -1
- package/dist/roguelike/Targeting.d.ts +67 -1
- package/dist/roguelike/Targeting.d.ts.map +1 -1
- package/dist/roguelike/Targeting.js +53 -1
- package/dist/roguelike/Targeting.js.map +1 -1
- package/dist/roguelike/TriggerTracker.d.ts +46 -0
- package/dist/roguelike/TriggerTracker.d.ts.map +1 -0
- package/dist/roguelike/TriggerTracker.js +59 -0
- package/dist/roguelike/TriggerTracker.js.map +1 -0
- package/dist/roguelike/generate.d.ts +90 -1
- package/dist/roguelike/generate.d.ts.map +1 -1
- package/dist/roguelike/generate.js +79 -11
- package/dist/roguelike/generate.js.map +1 -1
- package/dist/roguelike/index.d.ts +17 -5
- package/dist/roguelike/index.d.ts.map +1 -1
- package/dist/roguelike/index.js +8 -2
- package/dist/roguelike/index.js.map +1 -1
- package/dist/rpg/Collision.d.ts +19 -0
- package/dist/rpg/Collision.d.ts.map +1 -1
- package/dist/rpg/Collision.js +19 -0
- package/dist/rpg/Collision.js.map +1 -1
- package/dist/rpg/Event.d.ts +17 -0
- package/dist/rpg/Event.d.ts.map +1 -1
- package/dist/rpg/Event.js +17 -0
- package/dist/rpg/Event.js.map +1 -1
- package/dist/rpg/EventRunner.d.ts +44 -8
- package/dist/rpg/EventRunner.d.ts.map +1 -1
- package/dist/rpg/EventRunner.js +15 -13
- package/dist/rpg/EventRunner.js.map +1 -1
- package/dist/rpg/FreeMover.d.ts +16 -2
- package/dist/rpg/FreeMover.d.ts.map +1 -1
- package/dist/rpg/FreeMover.js +19 -5
- package/dist/rpg/FreeMover.js.map +1 -1
- package/dist/rpg/GameState.d.ts +14 -0
- package/dist/rpg/GameState.d.ts.map +1 -1
- package/dist/rpg/GameState.js +14 -0
- package/dist/rpg/GameState.js.map +1 -1
- package/dist/rpg/GridMover.d.ts +16 -2
- package/dist/rpg/GridMover.d.ts.map +1 -1
- package/dist/rpg/GridMover.js +19 -5
- package/dist/rpg/GridMover.js.map +1 -1
- package/dist/rpg/Marshal.d.ts +16 -0
- package/dist/rpg/Marshal.d.ts.map +1 -1
- package/dist/rpg/Marshal.js +16 -0
- package/dist/rpg/Marshal.js.map +1 -1
- package/dist/rpg/MovableSprite.d.ts +25 -0
- package/dist/rpg/MovableSprite.d.ts.map +1 -0
- package/dist/rpg/MovableSprite.js +2 -0
- package/dist/rpg/MovableSprite.js.map +1 -0
- package/dist/rpg/Quest.d.ts +21 -1
- package/dist/rpg/Quest.d.ts.map +1 -1
- package/dist/rpg/Quest.js +21 -1
- package/dist/rpg/Quest.js.map +1 -1
- package/dist/rpg/automap.d.ts +39 -2
- package/dist/rpg/automap.d.ts.map +1 -1
- package/dist/rpg/automap.js +24 -1
- package/dist/rpg/automap.js.map +1 -1
- package/dist/rpg/index.d.ts +4 -4
- package/dist/rpg/index.d.ts.map +1 -1
- package/dist/rpg/index.js +1 -1
- package/dist/rpg/index.js.map +1 -1
- package/dist/simulation/Runtime.d.ts +98 -0
- package/dist/simulation/Runtime.d.ts.map +1 -0
- package/dist/simulation/Runtime.js +91 -0
- package/dist/simulation/Runtime.js.map +1 -0
- package/dist/simulation/Scenario.d.ts +15 -0
- package/dist/simulation/Scenario.d.ts.map +1 -1
- package/dist/simulation/Scenario.js +15 -0
- package/dist/simulation/Scenario.js.map +1 -1
- package/dist/simulation/Turns.d.ts +11 -0
- package/dist/simulation/Turns.d.ts.map +1 -1
- package/dist/simulation/Turns.js +11 -0
- package/dist/simulation/Turns.js.map +1 -1
- package/dist/simulation/index.d.ts +10 -0
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +8 -0
- package/dist/simulation/index.js.map +1 -1
- package/dist/three-d/Character3D.d.ts +26 -1
- package/dist/three-d/Character3D.d.ts.map +1 -1
- package/dist/three-d/Character3D.js +31 -14
- package/dist/three-d/Character3D.js.map +1 -1
- package/dist/three-d/Collision3D.d.ts +63 -0
- package/dist/three-d/Collision3D.d.ts.map +1 -0
- package/dist/three-d/Collision3D.js +75 -0
- package/dist/three-d/Collision3D.js.map +1 -0
- package/dist/three-d/Models.js +1 -1
- package/dist/three-d/index.d.ts +3 -1
- package/dist/three-d/index.d.ts.map +1 -1
- package/dist/three-d/index.js +1 -0
- package/dist/three-d/index.js.map +1 -1
- package/dist/{core → two-d}/Game.d.ts +15 -17
- package/dist/two-d/Game.d.ts.map +1 -0
- package/dist/{core → two-d}/Game.js +3 -3
- package/dist/two-d/Game.js.map +1 -0
- package/dist/two-d/Scene2D.d.ts +19 -0
- package/dist/two-d/Scene2D.d.ts.map +1 -0
- package/dist/two-d/Scene2D.js +23 -0
- package/dist/two-d/Scene2D.js.map +1 -0
- package/dist/two-d/index.d.ts +20 -0
- package/dist/two-d/index.d.ts.map +1 -0
- package/dist/two-d/index.js +18 -0
- package/dist/two-d/index.js.map +1 -0
- package/dist/two-d/pixi-interop.d.ts +13 -0
- package/dist/two-d/pixi-interop.d.ts.map +1 -0
- package/dist/two-d/pixi-interop.js +12 -0
- package/dist/two-d/pixi-interop.js.map +1 -0
- package/dist/two-d/render/ActorAnimator.d.ts.map +1 -0
- package/dist/two-d/render/ActorAnimator.js.map +1 -0
- package/dist/{render → two-d/render}/AnimatedSprite.d.ts +4 -4
- package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -0
- package/dist/two-d/render/AnimatedSprite.js.map +1 -0
- package/dist/two-d/render/Autotile.d.ts.map +1 -0
- package/dist/two-d/render/Autotile.js.map +1 -0
- package/dist/two-d/render/Camera.d.ts.map +1 -0
- package/dist/{render → two-d/render}/Camera.js +2 -2
- package/dist/two-d/render/Camera.js.map +1 -0
- package/dist/two-d/render/Capabilities.d.ts.map +1 -0
- package/dist/two-d/render/Capabilities.js.map +1 -0
- package/dist/two-d/render/ColorBlindness.d.ts.map +1 -0
- package/dist/two-d/render/ColorBlindness.js.map +1 -0
- package/dist/{render → two-d/render}/ColorTransformBatcher.d.ts +8 -3
- package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -0
- package/dist/{render → two-d/render}/ColorTransformBatcher.js +11 -5
- package/dist/two-d/render/ColorTransformBatcher.js.map +1 -0
- package/dist/{render → two-d/render}/LayeredSprite.d.ts +3 -3
- package/dist/two-d/render/LayeredSprite.d.ts.map +1 -0
- package/dist/two-d/render/LayeredSprite.js.map +1 -0
- package/dist/two-d/render/Minimap.d.ts.map +1 -0
- package/dist/{render → two-d/render}/Minimap.js +1 -1
- package/dist/two-d/render/Minimap.js.map +1 -0
- package/dist/two-d/render/Particles.d.ts +109 -0
- package/dist/two-d/render/Particles.d.ts.map +1 -0
- package/dist/two-d/render/Particles.js +178 -0
- package/dist/two-d/render/Particles.js.map +1 -0
- package/dist/two-d/render/Projectile.d.ts.map +1 -0
- package/dist/two-d/render/Projectile.js.map +1 -0
- package/dist/two-d/render/ScreenEffects.d.ts +71 -0
- package/dist/two-d/render/ScreenEffects.d.ts.map +1 -0
- package/dist/two-d/render/ScreenEffects.js +133 -0
- package/dist/two-d/render/ScreenEffects.js.map +1 -0
- package/dist/two-d/render/Shape2D.d.ts +40 -0
- package/dist/two-d/render/Shape2D.d.ts.map +1 -0
- package/dist/two-d/render/Shape2D.js +40 -0
- package/dist/two-d/render/Shape2D.js.map +1 -0
- package/dist/{render → two-d/render}/SpriteSheet.d.ts +9 -6
- package/dist/two-d/render/SpriteSheet.d.ts.map +1 -0
- package/dist/{render → two-d/render}/SpriteSheet.js +8 -1
- package/dist/two-d/render/SpriteSheet.js.map +1 -0
- package/dist/two-d/render/StatusVisuals.d.ts.map +1 -0
- package/dist/two-d/render/StatusVisuals.js.map +1 -0
- package/dist/two-d/render/TileMap.d.ts.map +1 -0
- package/dist/{render → two-d/render}/TileMap.js +1 -1
- package/dist/two-d/render/TileMap.js.map +1 -0
- package/dist/{rpg → two-d/render}/TiledMap.d.ts +2 -2
- package/dist/two-d/render/TiledMap.d.ts.map +1 -0
- package/dist/{rpg → two-d/render}/TiledMap.js +2 -2
- package/dist/two-d/render/TiledMap.js.map +1 -0
- package/dist/{render → two-d/render}/TintedSprite.d.ts +3 -2
- package/dist/two-d/render/TintedSprite.d.ts.map +1 -0
- package/dist/{render → two-d/render}/TintedSprite.js +5 -1
- package/dist/two-d/render/TintedSprite.js.map +1 -0
- package/dist/two-d/render/Types2D.d.ts +27 -0
- package/dist/two-d/render/Types2D.d.ts.map +1 -0
- package/dist/two-d/render/Types2D.js +6 -0
- package/dist/two-d/render/Types2D.js.map +1 -0
- package/dist/two-d/render/Viewport.d.ts.map +1 -0
- package/dist/two-d/render/Viewport.js.map +1 -0
- package/dist/{render → two-d/render}/index.d.ts +9 -0
- package/dist/two-d/render/index.d.ts.map +1 -0
- package/dist/{render → two-d/render}/index.js +5 -0
- package/dist/two-d/render/index.js.map +1 -0
- package/dist/{stage → two-d/stage}/DialogueStage.d.ts +16 -0
- package/dist/two-d/stage/DialogueStage.d.ts.map +1 -0
- package/dist/{stage → two-d/stage}/DialogueStage.js +17 -1
- package/dist/two-d/stage/DialogueStage.js.map +1 -0
- package/dist/two-d/stage/index.d.ts.map +1 -0
- package/dist/two-d/stage/index.js.map +1 -0
- package/dist/{stage → two-d/stage}/script.d.ts +20 -0
- package/dist/two-d/stage/script.d.ts.map +1 -0
- package/dist/{stage → two-d/stage}/script.js +0 -0
- package/dist/two-d/stage/script.js.map +1 -0
- package/dist/{stage → two-d/stage}/twee.d.ts +11 -0
- package/dist/two-d/stage/twee.d.ts.map +1 -0
- package/dist/{stage → two-d/stage}/twee.js +11 -0
- package/dist/two-d/stage/twee.js.map +1 -0
- package/dist/two-d/ui/Bar.d.ts.map +1 -0
- package/dist/two-d/ui/Bar.js.map +1 -0
- package/dist/two-d/ui/BitmapLabel.d.ts.map +1 -0
- package/dist/two-d/ui/BitmapLabel.js.map +1 -0
- package/dist/{ui → two-d/ui}/Button.d.ts +11 -4
- package/dist/two-d/ui/Button.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Button.js +20 -4
- package/dist/two-d/ui/Button.js.map +1 -0
- package/dist/two-d/ui/EventDialogue.d.ts +23 -0
- package/dist/two-d/ui/EventDialogue.d.ts.map +1 -0
- package/dist/two-d/ui/EventDialogue.js +27 -0
- package/dist/two-d/ui/EventDialogue.js.map +1 -0
- package/dist/two-d/ui/FloatingText.d.ts.map +1 -0
- package/dist/two-d/ui/FloatingText.js.map +1 -0
- package/dist/{ui → two-d/ui}/HelpScreen.d.ts +1 -1
- package/dist/two-d/ui/HelpScreen.d.ts.map +1 -0
- package/dist/two-d/ui/HelpScreen.js.map +1 -0
- package/dist/{ui → two-d/ui}/IconGrid.d.ts +3 -2
- package/dist/two-d/ui/IconGrid.d.ts.map +1 -0
- package/dist/two-d/ui/IconGrid.js.map +1 -0
- package/dist/two-d/ui/Label.d.ts.map +1 -0
- package/dist/two-d/ui/Label.js.map +1 -0
- package/dist/{ui → two-d/ui}/ListView.d.ts +3 -2
- package/dist/two-d/ui/ListView.d.ts.map +1 -0
- package/dist/two-d/ui/ListView.js.map +1 -0
- package/dist/{ui → two-d/ui}/LoadingScreen.d.ts +1 -1
- package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -0
- package/dist/two-d/ui/LoadingScreen.js.map +1 -0
- package/dist/{ui → two-d/ui}/MessageBox.d.ts +1 -1
- package/dist/two-d/ui/MessageBox.d.ts.map +1 -0
- package/dist/two-d/ui/MessageBox.js.map +1 -0
- package/dist/{ui → two-d/ui}/NinePatch.d.ts +3 -2
- package/dist/two-d/ui/NinePatch.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/NinePatch.js +1 -1
- package/dist/two-d/ui/NinePatch.js.map +1 -0
- package/dist/{ui → two-d/ui}/RebindScreen.d.ts +1 -1
- package/dist/two-d/ui/RebindScreen.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/RebindScreen.js +1 -1
- package/dist/two-d/ui/RebindScreen.js.map +1 -0
- package/dist/two-d/ui/StatsScreen.d.ts.map +1 -0
- package/dist/two-d/ui/StatsScreen.js.map +1 -0
- package/dist/{ui → two-d/ui}/Toast.d.ts +2 -1
- package/dist/two-d/ui/Toast.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Toast.js +1 -1
- package/dist/two-d/ui/Toast.js.map +1 -0
- package/dist/two-d/ui/Tooltip.d.ts +94 -0
- package/dist/two-d/ui/Tooltip.d.ts.map +1 -0
- package/dist/two-d/ui/Tooltip.js +149 -0
- package/dist/two-d/ui/Tooltip.js.map +1 -0
- package/dist/two-d/ui/VerticalLabel.d.ts.map +1 -0
- package/dist/two-d/ui/VerticalLabel.js.map +1 -0
- package/dist/{ui → two-d/ui}/Window.d.ts +2 -2
- package/dist/two-d/ui/Window.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Window.js +1 -1
- package/dist/two-d/ui/Window.js.map +1 -0
- package/dist/two-d/ui/WindowStack.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/WindowStack.js +1 -1
- package/dist/two-d/ui/WindowStack.js.map +1 -0
- package/dist/{ui → two-d/ui}/index.d.ts +4 -0
- package/dist/two-d/ui/index.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/index.js +2 -0
- package/dist/two-d/ui/index.js.map +1 -0
- package/dist/{ui → two-d/ui}/theme.d.ts +4 -4
- package/dist/two-d/ui/theme.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/theme.js +1 -1
- package/dist/two-d/ui/theme.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/world/Encounters.d.ts +12 -0
- package/dist/world/Encounters.d.ts.map +1 -1
- package/dist/world/Encounters.js +1 -1
- package/dist/world/Encounters.js.map +1 -1
- package/dist/world/Environment.d.ts +27 -4
- package/dist/world/Environment.d.ts.map +1 -1
- package/dist/world/Environment.js +33 -10
- package/dist/world/Environment.js.map +1 -1
- package/dist/world/Overworld.d.ts +14 -0
- package/dist/world/Overworld.d.ts.map +1 -1
- package/dist/world/Overworld.js +14 -0
- package/dist/world/Overworld.js.map +1 -1
- package/dist/world/TurnClock.d.ts +16 -0
- package/dist/world/TurnClock.d.ts.map +1 -1
- package/dist/world/TurnClock.js +16 -0
- package/dist/world/TurnClock.js.map +1 -1
- package/dist/world/World.d.ts +14 -0
- package/dist/world/World.d.ts.map +1 -1
- package/dist/world/World.js +14 -0
- package/dist/world/World.js.map +1 -1
- package/package.json +228 -147
- package/dist/core/Game.d.ts.map +0 -1
- package/dist/core/Game.js.map +0 -1
- package/dist/render/ActorAnimator.d.ts.map +0 -1
- package/dist/render/ActorAnimator.js.map +0 -1
- package/dist/render/AnimatedSprite.d.ts.map +0 -1
- package/dist/render/AnimatedSprite.js.map +0 -1
- package/dist/render/Autotile.d.ts.map +0 -1
- package/dist/render/Autotile.js.map +0 -1
- package/dist/render/Camera.d.ts.map +0 -1
- package/dist/render/Camera.js.map +0 -1
- package/dist/render/Capabilities.d.ts.map +0 -1
- package/dist/render/Capabilities.js.map +0 -1
- package/dist/render/ColorBlindness.d.ts.map +0 -1
- package/dist/render/ColorBlindness.js.map +0 -1
- package/dist/render/ColorTransformBatcher.d.ts.map +0 -1
- package/dist/render/ColorTransformBatcher.js.map +0 -1
- package/dist/render/LayeredSprite.d.ts.map +0 -1
- package/dist/render/LayeredSprite.js.map +0 -1
- package/dist/render/Minimap.d.ts.map +0 -1
- package/dist/render/Minimap.js.map +0 -1
- package/dist/render/Projectile.d.ts.map +0 -1
- package/dist/render/Projectile.js.map +0 -1
- package/dist/render/SpriteSheet.d.ts.map +0 -1
- package/dist/render/SpriteSheet.js.map +0 -1
- package/dist/render/StatusVisuals.d.ts.map +0 -1
- package/dist/render/StatusVisuals.js.map +0 -1
- package/dist/render/TileMap.d.ts.map +0 -1
- package/dist/render/TileMap.js.map +0 -1
- package/dist/render/TintedSprite.d.ts.map +0 -1
- package/dist/render/TintedSprite.js.map +0 -1
- package/dist/render/Viewport.d.ts.map +0 -1
- package/dist/render/Viewport.js.map +0 -1
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/index.js.map +0 -1
- package/dist/rpg/TiledMap.d.ts.map +0 -1
- package/dist/rpg/TiledMap.js.map +0 -1
- package/dist/stage/DialogueStage.d.ts.map +0 -1
- package/dist/stage/DialogueStage.js.map +0 -1
- package/dist/stage/index.d.ts.map +0 -1
- package/dist/stage/index.js.map +0 -1
- package/dist/stage/script.d.ts.map +0 -1
- package/dist/stage/script.js.map +0 -1
- package/dist/stage/twee.d.ts.map +0 -1
- package/dist/stage/twee.js.map +0 -1
- package/dist/ui/Bar.d.ts.map +0 -1
- package/dist/ui/Bar.js.map +0 -1
- package/dist/ui/BitmapLabel.d.ts.map +0 -1
- package/dist/ui/BitmapLabel.js.map +0 -1
- package/dist/ui/Button.d.ts.map +0 -1
- package/dist/ui/Button.js.map +0 -1
- package/dist/ui/FloatingText.d.ts.map +0 -1
- package/dist/ui/FloatingText.js.map +0 -1
- package/dist/ui/HelpScreen.d.ts.map +0 -1
- package/dist/ui/HelpScreen.js.map +0 -1
- package/dist/ui/IconGrid.d.ts.map +0 -1
- package/dist/ui/IconGrid.js.map +0 -1
- package/dist/ui/Label.d.ts.map +0 -1
- package/dist/ui/Label.js.map +0 -1
- package/dist/ui/ListView.d.ts.map +0 -1
- package/dist/ui/ListView.js.map +0 -1
- package/dist/ui/LoadingScreen.d.ts.map +0 -1
- package/dist/ui/LoadingScreen.js.map +0 -1
- package/dist/ui/MessageBox.d.ts.map +0 -1
- package/dist/ui/MessageBox.js.map +0 -1
- package/dist/ui/NinePatch.d.ts.map +0 -1
- package/dist/ui/NinePatch.js.map +0 -1
- package/dist/ui/RebindScreen.d.ts.map +0 -1
- package/dist/ui/RebindScreen.js.map +0 -1
- package/dist/ui/StatsScreen.d.ts.map +0 -1
- package/dist/ui/StatsScreen.js.map +0 -1
- package/dist/ui/Toast.d.ts.map +0 -1
- package/dist/ui/Toast.js.map +0 -1
- package/dist/ui/VerticalLabel.d.ts.map +0 -1
- package/dist/ui/VerticalLabel.js.map +0 -1
- package/dist/ui/Window.d.ts.map +0 -1
- package/dist/ui/Window.js.map +0 -1
- package/dist/ui/WindowStack.d.ts.map +0 -1
- package/dist/ui/WindowStack.js.map +0 -1
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/theme.d.ts.map +0 -1
- package/dist/ui/theme.js.map +0 -1
- /package/dist/{render → two-d/render}/ActorAnimator.d.ts +0 -0
- /package/dist/{render → two-d/render}/ActorAnimator.js +0 -0
- /package/dist/{render → two-d/render}/AnimatedSprite.js +0 -0
- /package/dist/{render → two-d/render}/Autotile.d.ts +0 -0
- /package/dist/{render → two-d/render}/Autotile.js +0 -0
- /package/dist/{render → two-d/render}/Camera.d.ts +0 -0
- /package/dist/{render → two-d/render}/Capabilities.d.ts +0 -0
- /package/dist/{render → two-d/render}/Capabilities.js +0 -0
- /package/dist/{render → two-d/render}/ColorBlindness.d.ts +0 -0
- /package/dist/{render → two-d/render}/ColorBlindness.js +0 -0
- /package/dist/{render → two-d/render}/LayeredSprite.js +0 -0
- /package/dist/{render → two-d/render}/Minimap.d.ts +0 -0
- /package/dist/{render → two-d/render}/Projectile.d.ts +0 -0
- /package/dist/{render → two-d/render}/Projectile.js +0 -0
- /package/dist/{render → two-d/render}/StatusVisuals.d.ts +0 -0
- /package/dist/{render → two-d/render}/StatusVisuals.js +0 -0
- /package/dist/{render → two-d/render}/TileMap.d.ts +0 -0
- /package/dist/{render → two-d/render}/Viewport.d.ts +0 -0
- /package/dist/{render → two-d/render}/Viewport.js +0 -0
- /package/dist/{stage → two-d/stage}/index.d.ts +0 -0
- /package/dist/{stage → two-d/stage}/index.js +0 -0
- /package/dist/{ui → two-d/ui}/Bar.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/Bar.js +0 -0
- /package/dist/{ui → two-d/ui}/BitmapLabel.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/BitmapLabel.js +0 -0
- /package/dist/{ui → two-d/ui}/FloatingText.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/FloatingText.js +0 -0
- /package/dist/{ui → two-d/ui}/HelpScreen.js +0 -0
- /package/dist/{ui → two-d/ui}/IconGrid.js +0 -0
- /package/dist/{ui → two-d/ui}/Label.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/Label.js +0 -0
- /package/dist/{ui → two-d/ui}/ListView.js +0 -0
- /package/dist/{ui → two-d/ui}/LoadingScreen.js +0 -0
- /package/dist/{ui → two-d/ui}/MessageBox.js +0 -0
- /package/dist/{ui → two-d/ui}/StatsScreen.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/StatsScreen.js +0 -0
- /package/dist/{ui → two-d/ui}/VerticalLabel.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/VerticalLabel.js +0 -0
- /package/dist/{ui → two-d/ui}/WindowStack.d.ts +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plays simulation events one at a time, at whatever pace their presentation actually takes,
|
|
3
|
+
* entirely separate from the commit that already happened: `simulation.SimulationRuntime.
|
|
4
|
+
* dispatch` (or `runScenario`) returns its events synchronously and completely, and this is
|
|
5
|
+
* what a scene hands them to afterwards. `mwg` never sees what an event *means* - `play` is
|
|
6
|
+
* the game's own mapping from event to animation/sound/UI, this only sequences the calls.
|
|
7
|
+
*
|
|
8
|
+
* The same shape as `two-d.ui.Toast`'s queued, timed presentation, generalised to any event
|
|
9
|
+
* type and freed of `Toast`'s own Pixi container, since queuing which event plays next needs
|
|
10
|
+
* no renderer at all.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { PresentationQueue } from '@datamoc/mw_games/core';
|
|
15
|
+
*
|
|
16
|
+
* type GameEvent = { type: 'move' } | { type: 'damage'; amount: number };
|
|
17
|
+
*
|
|
18
|
+
* const presentation = new PresentationQueue<GameEvent>({
|
|
19
|
+
* play: (event) => {
|
|
20
|
+
* if (event.type === 'move') return 0.2; // a move tween takes 200ms
|
|
21
|
+
* console.log('damage:', event.amount); // a floating number, shown instantly
|
|
22
|
+
* },
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* presentation.enqueue([{ type: 'move' }, { type: 'damage', amount: 7 }]);
|
|
26
|
+
* presentation.update(0.2); // the move finishes; the damage event plays right behind it
|
|
27
|
+
* console.log(presentation.isBusy); // false - nothing left queued
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export class PresentationQueue {
|
|
31
|
+
constructor(options) {
|
|
32
|
+
this.queue = [];
|
|
33
|
+
this.busy = false;
|
|
34
|
+
this.remaining = 0;
|
|
35
|
+
this.play = options.play;
|
|
36
|
+
}
|
|
37
|
+
/** adds events to the end of the queue, starting them immediately if nothing is playing */
|
|
38
|
+
enqueue(events) {
|
|
39
|
+
this.queue.push(...events);
|
|
40
|
+
if (!this.busy)
|
|
41
|
+
this.advance();
|
|
42
|
+
}
|
|
43
|
+
/** advances the current event's timer; starts the next one once it elapses */
|
|
44
|
+
update(dt) {
|
|
45
|
+
if (!this.busy)
|
|
46
|
+
return;
|
|
47
|
+
this.remaining -= dt;
|
|
48
|
+
if (this.remaining <= 0)
|
|
49
|
+
this.advance();
|
|
50
|
+
}
|
|
51
|
+
/** true while an event is playing or others are waiting behind it */
|
|
52
|
+
get isBusy() {
|
|
53
|
+
return this.busy;
|
|
54
|
+
}
|
|
55
|
+
/** drops every queued and in-progress event without playing it */
|
|
56
|
+
clear() {
|
|
57
|
+
this.queue = [];
|
|
58
|
+
this.busy = false;
|
|
59
|
+
this.remaining = 0;
|
|
60
|
+
}
|
|
61
|
+
advance() {
|
|
62
|
+
const next = this.queue.shift();
|
|
63
|
+
if (next === undefined) {
|
|
64
|
+
this.busy = false;
|
|
65
|
+
this.remaining = 0;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.busy = true;
|
|
69
|
+
const duration = this.play(next) || 0;
|
|
70
|
+
if (duration > 0) {
|
|
71
|
+
this.remaining = duration;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.advance(); //no visual duration: chain straight into the next one
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=Presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Presentation.js","sourceRoot":"","sources":["../../src/core/Presentation.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,iBAAiB;IAM7B,YAAY,OAAwC;QAJ5C,UAAK,GAAY,EAAE,CAAC;QACpB,SAAI,GAAG,KAAK,CAAC;QACb,cAAS,GAAG,CAAC,CAAC;QAGrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,2FAA2F;IAC3F,OAAO,CAAC,MAAwB;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,EAAU;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,qEAAqE;IACrE,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,kEAAkE;IAClE,KAAK;QACJ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,CAAC;IAEO,OAAO;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,sDAAsD;QACvE,CAAC;IACF,CAAC;CACD"}
|
package/dist/core/Random.d.ts
CHANGED
|
@@ -12,6 +12,30 @@
|
|
|
12
12
|
* Generators are kept on a stack. Level generation pushes a seeded one so a floor is
|
|
13
13
|
* reproducible, then pops it, so unrelated rolls elsewhere do not consume from that
|
|
14
14
|
* stream and shift the results.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { Random } from '@datamoc/mw_games/core';
|
|
19
|
+
*
|
|
20
|
+
* // a floor generated from a seed always comes out the same
|
|
21
|
+
* Random.push(12345);
|
|
22
|
+
* const roll = Random.int(1, 20);
|
|
23
|
+
* const critical = Random.chance(0.05);
|
|
24
|
+
* Random.pop();
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* The seeded generator class `Random`'s free functions wrap directly, for a game that wants
|
|
29
|
+
* its own independent stream rather than sharing the ambient one.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { Generator } from '@datamoc/mw_games/core';
|
|
34
|
+
*
|
|
35
|
+
* const rng = new Generator(42); // same seed, same sequence, every time
|
|
36
|
+
* const roll = rng.int(20);
|
|
37
|
+
* const saved = rng.getState(); // resumable, for a save file
|
|
38
|
+
* ```
|
|
15
39
|
*/
|
|
16
40
|
export declare class Generator {
|
|
17
41
|
private s0;
|
|
@@ -54,11 +78,20 @@ export declare function range(min: number, max: number): number;
|
|
|
54
78
|
*/
|
|
55
79
|
export declare function normalRange(min: number, max: number): number;
|
|
56
80
|
export declare function chance(probability: number): boolean;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Every "pick one" function here reports "there was nothing to pick" as `null`, never as
|
|
83
|
+
* `-1` or `undefined`.
|
|
84
|
+
*
|
|
85
|
+
* `weighted` used to return `-1` and the two functions built on it returned `undefined`,
|
|
86
|
+
* which meant one call chain carried three different spellings of the same outcome and two
|
|
87
|
+
* separate hand-written translations between them. One sentinel, checked one way.
|
|
88
|
+
*/
|
|
89
|
+
/** a random element, or `null` for an empty list */
|
|
90
|
+
export declare function element<T>(items: readonly T[]): T | null;
|
|
91
|
+
/** an index into `weights` drawn in proportion to its weight, or `null` if nothing has any */
|
|
92
|
+
export declare function weighted(weights: readonly number[]): number | null;
|
|
93
|
+
/** a key from `weights`, drawn in proportion to the value it maps to, or `null` if none has any */
|
|
94
|
+
export declare function weightedKey<K>(weights: ReadonlyMap<K, number>): K | null;
|
|
62
95
|
/** Fisher-Yates, in place */
|
|
63
96
|
export declare function shuffle<T>(items: T[]): T[];
|
|
64
97
|
//# sourceMappingURL=Random.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAcH;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,EAAE,CAAK;IAEf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,CAAC,EAAE,MAAM,EAcxB;IAED,yEAAyE;IACzE,UAAU,IAAI,MAAM,CAanB;IAED,oDAAoD;IACpD,KAAK,IAAI,MAAM,CAEd;IAED;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASzB;IAED,8EAA8E;IAC9E,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAE3C;IAED,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE/D;CACD;AAUD,iEAAiE;AACjE,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAI7C;AAED,wBAAgB,GAAG,IAAI,IAAI,CAK1B;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAO1D;AAED,wBAAgB,KAAK,IAAI,IAAI,CAG5B;AAED,oDAAoD;AACpD,wBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,4CAA4C;AAC5C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,8EAA8E;AAC9E,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;GAOG;AAEH,oDAAoD;AACpD,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAExD;AAED,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAWlE;AAED,mGAAmG;AACnG,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAIxE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAM1C"}
|
package/dist/core/Random.js
CHANGED
|
@@ -12,6 +12,17 @@
|
|
|
12
12
|
* Generators are kept on a stack. Level generation pushes a seeded one so a floor is
|
|
13
13
|
* reproducible, then pops it, so unrelated rolls elsewhere do not consume from that
|
|
14
14
|
* stream and shift the results.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { Random } from '@datamoc/mw_games/core';
|
|
19
|
+
*
|
|
20
|
+
* // a floor generated from a seed always comes out the same
|
|
21
|
+
* Random.push(12345);
|
|
22
|
+
* const roll = Random.int(1, 20);
|
|
23
|
+
* const critical = Random.chance(0.05);
|
|
24
|
+
* Random.pop();
|
|
25
|
+
* ```
|
|
15
26
|
*/
|
|
16
27
|
/** splitmix32, used to expand a single seed into the four words of generator state */
|
|
17
28
|
function splitmix32(seed) {
|
|
@@ -24,6 +35,19 @@ function splitmix32(seed) {
|
|
|
24
35
|
return (t ^ (t >>> 15)) >>> 0;
|
|
25
36
|
};
|
|
26
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* The seeded generator class `Random`'s free functions wrap directly, for a game that wants
|
|
40
|
+
* its own independent stream rather than sharing the ambient one.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { Generator } from '@datamoc/mw_games/core';
|
|
45
|
+
*
|
|
46
|
+
* const rng = new Generator(42); // same seed, same sequence, every time
|
|
47
|
+
* const roll = rng.int(20);
|
|
48
|
+
* const saved = rng.getState(); // resumable, for a save file
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
27
51
|
export class Generator {
|
|
28
52
|
constructor(seed) {
|
|
29
53
|
this.s0 = 0;
|
|
@@ -143,16 +167,25 @@ export function normalRange(min, max) {
|
|
|
143
167
|
export function chance(probability) {
|
|
144
168
|
return current().float() < probability;
|
|
145
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Every "pick one" function here reports "there was nothing to pick" as `null`, never as
|
|
172
|
+
* `-1` or `undefined`.
|
|
173
|
+
*
|
|
174
|
+
* `weighted` used to return `-1` and the two functions built on it returned `undefined`,
|
|
175
|
+
* which meant one call chain carried three different spellings of the same outcome and two
|
|
176
|
+
* separate hand-written translations between them. One sentinel, checked one way.
|
|
177
|
+
*/
|
|
178
|
+
/** a random element, or `null` for an empty list */
|
|
146
179
|
export function element(items) {
|
|
147
|
-
return items.length > 0 ? items[current().int(items.length)] :
|
|
180
|
+
return items.length > 0 ? items[current().int(items.length)] : null;
|
|
148
181
|
}
|
|
149
|
-
/** an index into `weights
|
|
182
|
+
/** an index into `weights` drawn in proportion to its weight, or `null` if nothing has any */
|
|
150
183
|
export function weighted(weights) {
|
|
151
184
|
let total = 0;
|
|
152
185
|
for (const w of weights)
|
|
153
186
|
total += w;
|
|
154
187
|
if (total <= 0)
|
|
155
|
-
return
|
|
188
|
+
return null;
|
|
156
189
|
let value = current().float() * total;
|
|
157
190
|
for (let i = 0; i < weights.length; i++) {
|
|
158
191
|
value -= weights[i];
|
|
@@ -161,11 +194,11 @@ export function weighted(weights) {
|
|
|
161
194
|
}
|
|
162
195
|
return weights.length - 1;
|
|
163
196
|
}
|
|
164
|
-
/** a key from `weights`, drawn in proportion to the value it maps to */
|
|
197
|
+
/** a key from `weights`, drawn in proportion to the value it maps to, or `null` if none has any */
|
|
165
198
|
export function weightedKey(weights) {
|
|
166
199
|
const keys = [...weights.keys()];
|
|
167
200
|
const index = weighted(keys.map((k) => weights.get(k) ?? 0));
|
|
168
|
-
return index ===
|
|
201
|
+
return index === null ? null : keys[index];
|
|
169
202
|
}
|
|
170
203
|
/** Fisher-Yates, in place */
|
|
171
204
|
export function shuffle(items) {
|
package/dist/core/Random.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Random.js","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Random.js","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Replay.d.ts
CHANGED
|
@@ -23,6 +23,21 @@ export interface ReplayEvent {
|
|
|
23
23
|
*
|
|
24
24
|
* The signals are parameters rather than imports so tests can drive a
|
|
25
25
|
* recorder with plain `Signal` instances instead of a whole `Game`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Recorder, Signal, serializeReplay } from '@datamoc/mw_games/core';
|
|
30
|
+
*
|
|
31
|
+
* const onAction = new Signal<string>();
|
|
32
|
+
* const onFrame = new Signal<number>();
|
|
33
|
+
*
|
|
34
|
+
* const recorder = new Recorder(onAction, onFrame);
|
|
35
|
+
* onFrame.dispatch(0);
|
|
36
|
+
* onAction.dispatch('confirm');
|
|
37
|
+
*
|
|
38
|
+
* const saved = serializeReplay(recorder.toJSON());
|
|
39
|
+
* recorder.stop();
|
|
40
|
+
* ```
|
|
26
41
|
*/
|
|
27
42
|
export declare class Recorder {
|
|
28
43
|
private frame;
|
|
@@ -50,6 +65,22 @@ export declare class Recorder {
|
|
|
50
65
|
* stamp, before the player's own count advances - the same relative point a
|
|
51
66
|
* live action held during recording. `dispatch` usually forwards into
|
|
52
67
|
* `Input.onAction`, but tests pass a collector instead.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { Player, Signal, deserializeReplay } from '@datamoc/mw_games/core';
|
|
72
|
+
*
|
|
73
|
+
* declare const saved: string; // written by serializeReplay, see Recorder
|
|
74
|
+
*
|
|
75
|
+
* const onFrame = new Signal<number>();
|
|
76
|
+
* const replayed: string[] = [];
|
|
77
|
+
*
|
|
78
|
+
* const player = new Player(deserializeReplay(saved), (action) => replayed.push(action), onFrame);
|
|
79
|
+
* onFrame.dispatch(0);
|
|
80
|
+
*
|
|
81
|
+
* console.log(player.done);
|
|
82
|
+
* player.stop();
|
|
83
|
+
* ```
|
|
53
84
|
*/
|
|
54
85
|
export declare class Player {
|
|
55
86
|
private frame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Replay.d.ts","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED
|
|
1
|
+
{"version":3,"file":"Replay.d.ts","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,QAAQ;IACpB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC,YAAY,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAY1D;IAED,IAAI,MAAM,IAAI,SAAS,WAAW,EAAE,CAEnC;IAED,4DAA4D;IAC5D,MAAM,IAAI,WAAW,EAAE,CAEtB;IAED,mDAAmD;IACnD,IAAI,IAAI,IAAI,CAGX;CACD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,MAAM;IAClB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC,YACC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAClC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAOtB;IAED,iDAAiD;IACjD,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,uDAAuD;IACvD,IAAI,IAAI,IAAI,CAEX;IAED,OAAO,CAAC,IAAI;CAOZ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAEtE;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAe7D"}
|
package/dist/core/Replay.js
CHANGED
|
@@ -11,6 +11,21 @@
|
|
|
11
11
|
*
|
|
12
12
|
* The signals are parameters rather than imports so tests can drive a
|
|
13
13
|
* recorder with plain `Signal` instances instead of a whole `Game`.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { Recorder, Signal, serializeReplay } from '@datamoc/mw_games/core';
|
|
18
|
+
*
|
|
19
|
+
* const onAction = new Signal<string>();
|
|
20
|
+
* const onFrame = new Signal<number>();
|
|
21
|
+
*
|
|
22
|
+
* const recorder = new Recorder(onAction, onFrame);
|
|
23
|
+
* onFrame.dispatch(0);
|
|
24
|
+
* onAction.dispatch('confirm');
|
|
25
|
+
*
|
|
26
|
+
* const saved = serializeReplay(recorder.toJSON());
|
|
27
|
+
* recorder.stop();
|
|
28
|
+
* ```
|
|
14
29
|
*/
|
|
15
30
|
export class Recorder {
|
|
16
31
|
constructor(actions, frames) {
|
|
@@ -53,6 +68,22 @@ export class Recorder {
|
|
|
53
68
|
* stamp, before the player's own count advances - the same relative point a
|
|
54
69
|
* live action held during recording. `dispatch` usually forwards into
|
|
55
70
|
* `Input.onAction`, but tests pass a collector instead.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* import { Player, Signal, deserializeReplay } from '@datamoc/mw_games/core';
|
|
75
|
+
*
|
|
76
|
+
* declare const saved: string; // written by serializeReplay, see Recorder
|
|
77
|
+
*
|
|
78
|
+
* const onFrame = new Signal<number>();
|
|
79
|
+
* const replayed: string[] = [];
|
|
80
|
+
*
|
|
81
|
+
* const player = new Player(deserializeReplay(saved), (action) => replayed.push(action), onFrame);
|
|
82
|
+
* onFrame.dispatch(0);
|
|
83
|
+
*
|
|
84
|
+
* console.log(player.done);
|
|
85
|
+
* player.stop();
|
|
86
|
+
* ```
|
|
56
87
|
*/
|
|
57
88
|
export class Player {
|
|
58
89
|
constructor(events, dispatch, frames) {
|
package/dist/core/Replay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Replay.js","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"AAcA
|
|
1
|
+
{"version":3,"file":"Replay.js","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,18 @@ import { type SaveStorage } from './Save.ts';
|
|
|
8
8
|
* `SaveSystem` stays agnostic about what "the save" contains: a game supplies its own
|
|
9
9
|
* `summary` shape (score, cause of death, floor reached, whatever it considers a run's own
|
|
10
10
|
* stats) and this only ever stores, lists, and sorts it.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { RunHistory } from '@datamoc/mw_games/core';
|
|
15
|
+
*
|
|
16
|
+
* interface RunSummary { score: number; cause: string }
|
|
17
|
+
*
|
|
18
|
+
* const runs = new RunHistory<RunSummary>({ namespace: 'my-game', limit: 20 });
|
|
19
|
+
* runs.record({ score: 340, cause: 'slain by a rat' });
|
|
20
|
+
*
|
|
21
|
+
* const best = runs.ranked((summary) => summary.score, 'desc');
|
|
22
|
+
* ```
|
|
11
23
|
*/
|
|
12
24
|
export interface RunHistoryEntry<T> {
|
|
13
25
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunHistory.d.ts","sourceRoot":"","sources":["../../src/core/RunHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"RunHistory.d.ts","sourceRoot":"","sources":["../../src/core/RunHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IACjC,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,YAAY,OAAO,EAAE,iBAAiB,EAIrC;IAED,OAAO,CAAC,OAAO;IAKf,uGAAuG;IACvG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAOrC;IAED,uCAAuC;IACvC,GAAG,IAAI,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAEnC;IAED;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,EAAE,KAAK,GAAE,KAAK,GAAG,MAAe,GAAG,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAIhG;IAED,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAEZ;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunHistory.js","sourceRoot":"","sources":["../../src/core/RunHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"RunHistory.js","sourceRoot":"","sources":["../../src/core/RunHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoB,MAAM,WAAW,CAAC;AAsC7D,MAAM,OAAO,UAAU;IAKtB,YAAY,OAA0B;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,YAAY,OAAO,CAAC,SAAS,EAAE,CAAC;IAC5C,CAAC;IAEO,OAAO;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,uGAAuG;IACvG,MAAM,CAAC,OAAU;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAuB,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5G,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,GAAG;QACF,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,EAA0B,EAAE,KAAK,GAAmB,MAAM;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,+BAA+B;IAC/B,KAAK;QACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACD"}
|
package/dist/core/Sanitize.d.ts
CHANGED
|
@@ -6,6 +6,24 @@
|
|
|
6
6
|
* truncated, corrupted, or hostile payload cheaply, ahead of and distinct from validating
|
|
7
7
|
* that a parsed value's own fields have the shape a game actually expects (`validateSchema`,
|
|
8
8
|
* below), which is a separate, deeper pass over already-parsed data.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { checkSize, checkNoControlCharacters, sanitizeInboundText, validateSchema } from '@datamoc/mw_games/core';
|
|
13
|
+
*
|
|
14
|
+
* declare const rawResponseText: string;
|
|
15
|
+
*
|
|
16
|
+
* // the cheap structural pass, before JSON.parse ever sees the payload
|
|
17
|
+
* const text = sanitizeInboundText(rawResponseText, { maxBytes: 1_000_000 });
|
|
18
|
+
* // equivalent to calling checkSize then checkNoControlCharacters by hand
|
|
19
|
+
*
|
|
20
|
+
* // the deeper pass, once the payload is parsed
|
|
21
|
+
* const parsed = JSON.parse(text);
|
|
22
|
+
* validateSchema(parsed, {
|
|
23
|
+
* type: 'object',
|
|
24
|
+
* fields: { id: { type: 'string' }, score: { type: 'number', min: 0 } },
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
9
27
|
*/
|
|
10
28
|
export interface SizeLimitOptions {
|
|
11
29
|
/** bytes; defaults to 10 MB */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sanitize.d.ts","sourceRoot":"","sources":["../../src/core/Sanitize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Sanitize.d.ts","sourceRoot":"","sources":["../../src/core/Sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,WAAW,gBAAgB;IAChC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,2GAA2G;AAC3G,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAIzF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAED,sGAAsG;AACtG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAIxF;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,MAAM,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAI5E,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,IAAI,CAoC/E"}
|
package/dist/core/Sanitize.js
CHANGED
|
@@ -6,6 +6,24 @@
|
|
|
6
6
|
* truncated, corrupted, or hostile payload cheaply, ahead of and distinct from validating
|
|
7
7
|
* that a parsed value's own fields have the shape a game actually expects (`validateSchema`,
|
|
8
8
|
* below), which is a separate, deeper pass over already-parsed data.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { checkSize, checkNoControlCharacters, sanitizeInboundText, validateSchema } from '@datamoc/mw_games/core';
|
|
13
|
+
*
|
|
14
|
+
* declare const rawResponseText: string;
|
|
15
|
+
*
|
|
16
|
+
* // the cheap structural pass, before JSON.parse ever sees the payload
|
|
17
|
+
* const text = sanitizeInboundText(rawResponseText, { maxBytes: 1_000_000 });
|
|
18
|
+
* // equivalent to calling checkSize then checkNoControlCharacters by hand
|
|
19
|
+
*
|
|
20
|
+
* // the deeper pass, once the payload is parsed
|
|
21
|
+
* const parsed = JSON.parse(text);
|
|
22
|
+
* validateSchema(parsed, {
|
|
23
|
+
* type: 'object',
|
|
24
|
+
* fields: { id: { type: 'string' }, score: { type: 'number', min: 0 } },
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
9
27
|
*/
|
|
10
28
|
const DEFAULT_MAX_BYTES = 10 * 1024 * 1024;
|
|
11
29
|
/** throws once `data`'s size (UTF-8 byte length for a string, byte length for a buffer) exceeds the cap */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sanitize.js","sourceRoot":"","sources":["../../src/core/Sanitize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Sanitize.js","sourceRoot":"","sources":["../../src/core/Sanitize.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Save.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Save.d.ts","sourceRoot":"","sources":["../../src/core/Save.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Save.d.ts","sourceRoot":"","sources":["../../src/core/Save.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAEhB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,CAAC,CAAC;CACT;AAED,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,MAAM,EAAE,CAAC;CACjB;AAuBD,qGAAqG;AACrG,wBAAgB,cAAc,IAAI,WAAW,CAS5C;AAED,MAAM,WAAW,iBAAiB;IACjC,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAEhB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,OAAO,CAAc;IAE7B,YAAY,OAAO,EAAE,iBAAiB,EAKrC;IAED,OAAO,CAAC,GAAG;IAIX,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAGpD;IAED,2FAA2F;IAC3F,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAWrC;IAED;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAS1H;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzB;IAED;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5D;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAWpE;IAED,0EAA0E;IAC1E,IAAI,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,CAY9C;CACD"}
|
package/dist/core/Save.js
CHANGED
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
* themselves the same way `mwg/rpg`'s `GameState` already does (a `toJSON`/reviving
|
|
5
5
|
* constructor pair), not to be serialised by reference with cycles preserved; that is a
|
|
6
6
|
* different, much larger problem than a save system needs to solve.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { SaveSystem } from '@datamoc/mw_games/core';
|
|
11
|
+
*
|
|
12
|
+
* interface RunState { depth: number; hp: number }
|
|
13
|
+
*
|
|
14
|
+
* const saves = new SaveSystem<RunState>({ namespace: 'my-game', version: 1 });
|
|
15
|
+
* saves.save('slot1', { depth: 3, hp: 12 }, 'Floor 3, 12 HP');
|
|
16
|
+
*
|
|
17
|
+
* const loaded = saves.load('slot1');
|
|
18
|
+
* if (loaded) console.log(loaded.state.depth); // 3
|
|
19
|
+
* ```
|
|
7
20
|
*/
|
|
8
21
|
import { scramble, unscramble } from './Scramble.js';
|
|
9
22
|
import { checkSize, sanitizeInboundText } from './Sanitize.js';
|
package/dist/core/Save.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Save.js","sourceRoot":"","sources":["../../src/core/Save.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Save.js","sourceRoot":"","sources":["../../src/core/Save.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAuB/D,uFAAuF;AACvF,MAAM,aAAa;IAAnB;QACS,SAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAiB1C,CAAC;IAfA,IAAI,CAAC,GAAW;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,GAAW;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,IAAI;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;CACD;AAED,qGAAqG;AACrG,MAAM,UAAU,cAAc;IAC7B,IAAI,OAAO,YAAY,KAAK,WAAW;QAAE,OAAO,IAAI,aAAa,EAAE,CAAC;IAEpE,OAAO;QACN,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;QACxC,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QACvD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;QAC7C,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;KACrC,CAAC;AACH,CAAC;AAYD,MAAM,OAAO,UAAU;IAMtB,YAAY,OAA0B;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;IACpD,CAAC;IAEO,GAAG,CAAC,IAAY;QACvB,OAAO,YAAY,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,KAAQ,EAAE,OAAiB;QAC7C,MAAM,IAAI,GAAgB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;QACnG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,2FAA2F;IAC3F,IAAI,CAAC,IAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;QAC5C,IAAI,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAU,EAAE,CAAC;IAC7E,CAAC;IAED;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,IAAY,EAAE,aAAyB,EAAE,SAAyC,EAAE,OAAiB;QACnH,SAAS,CAAC,aAAa,CAAC,CAAC;QACzB,IAAI,KAAK,GAAY,SAAS,CAAC,aAAa,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAgB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAU,EAAE,CAAC;QAC/G,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAY;QAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,IAAY,EAAE,WAAoB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAY,EAAE,OAAe,EAAE,WAAoB;QAC7D,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAsB,CAAC;QACvE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,UAAU,GAAgB,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAU,EAAE,CAAC;QACrG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,0EAA0E;IAC1E,IAAI;QACH,MAAM,MAAM,GAAG,YAAY,IAAI,CAAC,SAAS,GAAG,CAAC;QAC7C,MAAM,GAAG,GAA4C,EAAE,CAAC;QAExD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;CACD"}
|
package/dist/core/SaveSync.d.ts
CHANGED
|
@@ -10,6 +10,20 @@ import { HttpTransport, type HttpTransportOptions } from './HttpTransport.ts';
|
|
|
10
10
|
* creates) can sync each independently against one endpoint rather than the endpoint holding
|
|
11
11
|
* only ever one save. `list()` is the seam a profile picker reads before choosing which slot
|
|
12
12
|
* to `download`.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { SaveSyncClient, SaveSystem } from '@datamoc/mw_games/core';
|
|
17
|
+
*
|
|
18
|
+
* const sync = new SaveSyncClient({ endpoint: 'https://example.com/api/saves' });
|
|
19
|
+
* const saves = new SaveSystem<{ depth: number }>({ namespace: 'my-game', version: 1 });
|
|
20
|
+
*
|
|
21
|
+
* const payload = saves.exportSlot('slot1');
|
|
22
|
+
* if (payload) await sync.upload('slot1', payload);
|
|
23
|
+
*
|
|
24
|
+
* const slots = await sync.list();
|
|
25
|
+
* const restored = await sync.download('slot1');
|
|
26
|
+
* ```
|
|
13
27
|
*/
|
|
14
28
|
export type SaveSyncOptions = HttpTransportOptions;
|
|
15
29
|
export interface SaveSyncResponse {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveSync.d.ts","sourceRoot":"","sources":["../../src/core/SaveSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE9E
|
|
1
|
+
{"version":3,"file":"SaveSync.d.ts","sourceRoot":"","sources":["../../src/core/SaveSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,cAAe,SAAQ,aAAa;IAChD,YAAY,OAAO,EAAE,eAAe,EAEnC;IAED,kGAAkG;IAC5F,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAarE;IAED,0GAA0G;IACpG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS5C;IAED,kGAAkG;IAC5F,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAU9B;IAED,OAAO,CAAC,OAAO;CAIf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveSync.js","sourceRoot":"","sources":["../../src/core/SaveSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"SaveSync.js","sourceRoot":"","sources":["../../src/core/SaveSync.ts"],"names":[],"mappings":"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"}
|