@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UndoHistory.d.ts","sourceRoot":"","sources":["../../src/core/UndoHistory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"UndoHistory.d.ts","sourceRoot":"","sources":["../../src/core/UndoHistory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,kBAAkB;IAClC,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,YAAY,OAAO,GAAE,kBAAuB,EAE3C;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAKnB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,0FAA0F;IAC1F,IAAI,IAAI,CAAC,GAAG,IAAI,CAIf;IAED,oFAAoF;IACpF,IAAI,IAAI,CAAC,GAAG,IAAI,CAIf;IAED,mFAAmF;IACnF,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,CAEtB;IAED,6GAA6G;IAC7G,KAAK,IAAI,IAAI,CAGZ;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UndoHistory.js","sourceRoot":"","sources":["../../src/core/UndoHistory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UndoHistory.js","sourceRoot":"","sources":["../../src/core/UndoHistory.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,WAAW;IAKvB,YAAY,OAAO,GAAuB,EAAE;QAJpC,YAAO,GAAQ,EAAE,CAAC;QAClB,WAAM,GAAG,CAAC,CAAC,CAAC;QAInB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAQ;QACZ,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,0FAA0F;IAC1F,IAAI;QACH,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,oFAAoF;IACpF,IAAI;QACH,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,mFAAmF;IACnF,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,6GAA6G;IAC7G,KAAK;QACJ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClB,CAAC;CACD"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { Game } from './Game.ts';
|
|
2
|
-
export type { GameOptions } from './Game.ts';
|
|
3
1
|
export { Scene } from './Scene.ts';
|
|
4
2
|
export type { SceneClass } from './Scene.ts';
|
|
5
3
|
export { SceneStack } from './SceneStack.ts';
|
|
6
4
|
export { Logger } from './Log.ts';
|
|
7
5
|
export type { LogLevel, LogEntry, LoggerOptions } from './Log.ts';
|
|
8
6
|
export { Signal } from './Signal.ts';
|
|
7
|
+
export { HookRegistry } from './Hooks.ts';
|
|
8
|
+
export type { Hook } from './Hooks.ts';
|
|
9
9
|
export type { SignalListener } from './Signal.ts';
|
|
10
10
|
export * as Random from './Random.ts';
|
|
11
11
|
export * as Input from './Input.ts';
|
|
@@ -39,6 +39,7 @@ export { Session } from './Session.ts';
|
|
|
39
39
|
export type { SessionOptions } from './Session.ts';
|
|
40
40
|
export { FeedbackClient } from './Feedback.ts';
|
|
41
41
|
export type { FeedbackOptions, FeedbackRequest, FeedbackResponse } from './Feedback.ts';
|
|
42
|
+
export type { HttpTransportOptions } from './HttpTransport.ts';
|
|
42
43
|
export { Spawner } from './Spawner.ts';
|
|
43
44
|
export type { Wave, SpawnerOptions } from './Spawner.ts';
|
|
44
45
|
export { hexNeighbors, hexDistance, hexLine, hexRange, hexToPixel, pixelToHex } from './Hex.ts';
|
|
@@ -48,4 +49,8 @@ export { UndoHistory } from './UndoHistory.ts';
|
|
|
48
49
|
export type { UndoHistoryOptions } from './UndoHistory.ts';
|
|
49
50
|
export { LoadQueue } from './Loading.ts';
|
|
50
51
|
export type { LoadStatus, LoadTask, LoadTaskContext, LoadSnapshot } from './Loading.ts';
|
|
52
|
+
export { EntityRegistry } from './Entity.ts';
|
|
53
|
+
export type { EntityId } from './Entity.ts';
|
|
54
|
+
export { PresentationQueue } from './Presentation.ts';
|
|
55
|
+
export type { PresentationQueueOptions } from './Presentation.ts';
|
|
51
56
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { Game } from './Game.js';
|
|
2
1
|
export { Scene } from './Scene.js';
|
|
3
2
|
export { SceneStack } from './SceneStack.js';
|
|
4
3
|
export { Logger } from './Log.js';
|
|
5
4
|
export { Signal } from './Signal.js';
|
|
5
|
+
export { HookRegistry } from './Hooks.js';
|
|
6
6
|
export * as Random from './Random.js';
|
|
7
7
|
export * as Input from './Input.js';
|
|
8
8
|
export { PlayerInput } from './PlayerInput.js';
|
|
@@ -26,4 +26,6 @@ export { hexNeighbors, hexDistance, hexLine, hexRange, hexToPixel, pixelToHex }
|
|
|
26
26
|
export { Tweener, Easing } from './Tween.js';
|
|
27
27
|
export { UndoHistory } from './UndoHistory.js';
|
|
28
28
|
export { LoadQueue } from './Loading.js';
|
|
29
|
+
export { EntityRegistry } from './Entity.js';
|
|
30
|
+
export { PresentationQueue } from './Presentation.js';
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale-aware number/date/list formatting, for a catalog message that needs more than
|
|
3
|
+
* `{token}` substitution can give it - "1,234" vs "1 234", "3 items" vs "3 éléments" joined
|
|
4
|
+
* with "and"/"et". A game calls these while building a `t()`/`SemanticMessage` param, the
|
|
5
|
+
* same way it already resolves an entity id to display text; MWG does not parse a format
|
|
6
|
+
* directive out of the message string itself.
|
|
7
|
+
*
|
|
8
|
+
* All three read the active locale from `i18n`'s own `locale()`, so a language switch takes
|
|
9
|
+
* effect the same way it already does for plurals and typography.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { setActive, t, formatNumber, formatDate, formatList } from '@datamoc/mw_games/i18n';
|
|
14
|
+
*
|
|
15
|
+
* setActive({ locale: 'fr-FR', direction: 'ltr', messages: { found: 'Vous trouvez {amount}.' } });
|
|
16
|
+
*
|
|
17
|
+
* console.log(formatNumber(1234.5)); // '1 234,5'
|
|
18
|
+
* console.log(formatDate(new Date(2024, 0, 15))); // '15/01/2024'
|
|
19
|
+
* console.log(t('found', { amount: formatList(['une épée', 'un bouclier']) })); // '... une épée et un bouclier.'
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatNumber(value: number, options?: Intl.NumberFormatOptions): string;
|
|
23
|
+
export declare function formatDate(value: Date | number, options?: Intl.DateTimeFormatOptions): string;
|
|
24
|
+
export declare function formatList(items: readonly string[], options?: Intl.ListFormatOptions): string;
|
|
25
|
+
//# sourceMappingURL=Format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Format.d.ts","sourceRoot":"","sources":["../../src/i18n/Format.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAEtF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAE7F;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAE7F"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { locale } from './index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Locale-aware number/date/list formatting, for a catalog message that needs more than
|
|
4
|
+
* `{token}` substitution can give it - "1,234" vs "1 234", "3 items" vs "3 éléments" joined
|
|
5
|
+
* with "and"/"et". A game calls these while building a `t()`/`SemanticMessage` param, the
|
|
6
|
+
* same way it already resolves an entity id to display text; MWG does not parse a format
|
|
7
|
+
* directive out of the message string itself.
|
|
8
|
+
*
|
|
9
|
+
* All three read the active locale from `i18n`'s own `locale()`, so a language switch takes
|
|
10
|
+
* effect the same way it already does for plurals and typography.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { setActive, t, formatNumber, formatDate, formatList } from '@datamoc/mw_games/i18n';
|
|
15
|
+
*
|
|
16
|
+
* setActive({ locale: 'fr-FR', direction: 'ltr', messages: { found: 'Vous trouvez {amount}.' } });
|
|
17
|
+
*
|
|
18
|
+
* console.log(formatNumber(1234.5)); // '1 234,5'
|
|
19
|
+
* console.log(formatDate(new Date(2024, 0, 15))); // '15/01/2024'
|
|
20
|
+
* console.log(t('found', { amount: formatList(['une épée', 'un bouclier']) })); // '... une épée et un bouclier.'
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function formatNumber(value, options) {
|
|
24
|
+
return new Intl.NumberFormat(locale(), options).format(value);
|
|
25
|
+
}
|
|
26
|
+
export function formatDate(value, options) {
|
|
27
|
+
return new Intl.DateTimeFormat(locale(), options).format(value);
|
|
28
|
+
}
|
|
29
|
+
export function formatList(items, options) {
|
|
30
|
+
return new Intl.ListFormat(locale(), options).format(items);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=Format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Format.js","sourceRoot":"","sources":["../../src/i18n/Format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAAkC;IAC7E,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAoB,EAAE,OAAoC;IACpF,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAwB,EAAE,OAAgC;IACpF,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A structured communication intent, not a finished sentence: a type naming what happened,
|
|
3
|
+
* plus the parameters a catalog needs to say it. The same message renders as a full log
|
|
4
|
+
* line, a compact HUD number, an accessibility announcement, or a debug dump, all from one
|
|
5
|
+
* event the simulation only has to produce once.
|
|
6
|
+
*
|
|
7
|
+
* `params` must already be interpolation-ready by the time a message reaches
|
|
8
|
+
* `MessageFormatter.format` - a game resolves any entity/item id to display text itself
|
|
9
|
+
* (typically through its own `EntityTextResolver`) while building the message, the same way
|
|
10
|
+
* it decides everything else about its own vocabulary. MWG only defines the shape.
|
|
11
|
+
*/
|
|
12
|
+
export interface SemanticMessage<TType extends string = string, TParams extends Record<string, unknown> = Record<string, unknown>> {
|
|
13
|
+
type: TType;
|
|
14
|
+
params: TParams;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolves a game-defined entity/item id to the display text a message substitutes for it.
|
|
18
|
+
* A type contract only - MWG never calls this itself; a game calls it while building a
|
|
19
|
+
* `SemanticMessage`'s params, the same way it already owns every other piece of vocabulary.
|
|
20
|
+
*/
|
|
21
|
+
export type EntityTextResolver<Id = string> = (id: Id) => string;
|
|
22
|
+
/**
|
|
23
|
+
* Optional linguistic metadata about one entity - gender, number, or a proper-noun flag a
|
|
24
|
+
* catalog's own grammar rules may need to pick an article or an agreement. MWG never
|
|
25
|
+
* interprets this itself; it exists so a game's `EntityTextResolver` and catalog can agree
|
|
26
|
+
* on a common shape instead of each game inventing its own.
|
|
27
|
+
*/
|
|
28
|
+
export interface GrammaticalEntity {
|
|
29
|
+
gender?: 'masculine' | 'feminine' | 'neuter' | 'common';
|
|
30
|
+
plural?: boolean;
|
|
31
|
+
properNoun?: boolean;
|
|
32
|
+
/** other lexical forms a catalog's grammar might need - a possessive, a vocative */
|
|
33
|
+
forms?: Record<string, string>;
|
|
34
|
+
}
|
|
35
|
+
/** Where the same semantic message ends up: a game log line, a compact HUD number, an
|
|
36
|
+
* accessibility announcement, or a debug dump - one simulation event, several presentations. */
|
|
37
|
+
export type MessageChannel = 'log' | 'compact' | 'accessibility' | 'debug';
|
|
38
|
+
export interface MessageFormatter {
|
|
39
|
+
format(message: SemanticMessage, channel: MessageChannel): string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The reference `MessageFormatter`: looks up `${type}.${channel}` in the active catalog
|
|
43
|
+
* (`setBase`/`setActive`, `src/i18n/index.ts`), falling back to `${type}` alone for a message
|
|
44
|
+
* that reads the same on every channel, then formats through `t()` - the same interpolation,
|
|
45
|
+
* pluralisation and RTL handling every other message in the game already gets. A catalog
|
|
46
|
+
* missing both keys fails the same observable way `t()` already does for any key: returning
|
|
47
|
+
* the lookup key itself, rather than throwing or going silent.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { setBase, createCatalogFormatter, type SemanticMessage } from '@datamoc/mw_games/i18n';
|
|
52
|
+
*
|
|
53
|
+
* setBase({
|
|
54
|
+
* locale: 'en',
|
|
55
|
+
* direction: 'ltr',
|
|
56
|
+
* messages: {
|
|
57
|
+
* 'combat.damage.log': 'The {target} takes {amount} damage.',
|
|
58
|
+
* 'combat.damage.compact': '-{amount} HP',
|
|
59
|
+
* },
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
* const formatter = createCatalogFormatter();
|
|
63
|
+
* const message: SemanticMessage = { type: 'combat.damage', params: { target: 'gnoll', amount: 7 } };
|
|
64
|
+
*
|
|
65
|
+
* console.log(formatter.format(message, 'log')); // 'The gnoll takes 7 damage.'
|
|
66
|
+
* console.log(formatter.format(message, 'compact')); // '-7 HP'
|
|
67
|
+
* console.log(formatter.format(message, 'debug')); // falls back to the bare type: the key itself, if undeclared
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function createCatalogFormatter(): MessageFormatter;
|
|
71
|
+
//# sourceMappingURL=SemanticMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemanticMessage.d.ts","sourceRoot":"","sources":["../../src/i18n/SemanticMessage.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe,CAC/B,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjE,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;gGACgG;AAChG,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,eAAe,GAAG,OAAO,CAAC;AAE3E,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC;CAClE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAQzD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { t, has } from './index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The reference `MessageFormatter`: looks up `${type}.${channel}` in the active catalog
|
|
4
|
+
* (`setBase`/`setActive`, `src/i18n/index.ts`), falling back to `${type}` alone for a message
|
|
5
|
+
* that reads the same on every channel, then formats through `t()` - the same interpolation,
|
|
6
|
+
* pluralisation and RTL handling every other message in the game already gets. A catalog
|
|
7
|
+
* missing both keys fails the same observable way `t()` already does for any key: returning
|
|
8
|
+
* the lookup key itself, rather than throwing or going silent.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { setBase, createCatalogFormatter, type SemanticMessage } from '@datamoc/mw_games/i18n';
|
|
13
|
+
*
|
|
14
|
+
* setBase({
|
|
15
|
+
* locale: 'en',
|
|
16
|
+
* direction: 'ltr',
|
|
17
|
+
* messages: {
|
|
18
|
+
* 'combat.damage.log': 'The {target} takes {amount} damage.',
|
|
19
|
+
* 'combat.damage.compact': '-{amount} HP',
|
|
20
|
+
* },
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* const formatter = createCatalogFormatter();
|
|
24
|
+
* const message: SemanticMessage = { type: 'combat.damage', params: { target: 'gnoll', amount: 7 } };
|
|
25
|
+
*
|
|
26
|
+
* console.log(formatter.format(message, 'log')); // 'The gnoll takes 7 damage.'
|
|
27
|
+
* console.log(formatter.format(message, 'compact')); // '-7 HP'
|
|
28
|
+
* console.log(formatter.format(message, 'debug')); // falls back to the bare type: the key itself, if undeclared
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function createCatalogFormatter() {
|
|
32
|
+
return {
|
|
33
|
+
format(message, channel) {
|
|
34
|
+
const key = `${message.type}.${channel}`;
|
|
35
|
+
const params = message.params;
|
|
36
|
+
return has(key) ? t(key, params) : t(message.type, params);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=SemanticMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemanticMessage.js","sourceRoot":"","sources":["../../src/i18n/SemanticMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,GAAG,EAAsB,MAAM,YAAY,CAAC;AAkDxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,sBAAsB;IACrC,OAAO;QACN,MAAM,CAAC,OAAwB,EAAE,OAAuB;YACvD,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAuB,CAAC;YAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Catalog } from './index.ts';
|
|
2
|
+
/** the keys two catalogs disagree on - what a translation catalog missing a key, or one
|
|
3
|
+
* abandoned key nobody removed, looks like structurally. */
|
|
4
|
+
export interface CatalogKeyDiff {
|
|
5
|
+
/** in `reference` but not `other` - an untranslated key */
|
|
6
|
+
missing: readonly string[];
|
|
7
|
+
/** in `other` but not `reference` - a stale or misspelled key */
|
|
8
|
+
extra: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Compares two catalogs' key sets - typically a base language against a translation, so a
|
|
12
|
+
* missing or stray key is caught before a player sees a raw key fall through `t()`'s own
|
|
13
|
+
* fallback, rather than after.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { diffCatalogKeys } from '@datamoc/mw_games/i18n';
|
|
18
|
+
*
|
|
19
|
+
* const en = { locale: 'en', direction: 'ltr' as const, messages: { greeting: 'Hello', farewell: 'Bye' } };
|
|
20
|
+
* const fr = { locale: 'fr', direction: 'ltr' as const, messages: { greeting: 'Bonjour', extra: 'oops' } };
|
|
21
|
+
*
|
|
22
|
+
* console.log(diffCatalogKeys(en, fr)); // { missing: ['farewell'], extra: ['extra'] }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function diffCatalogKeys(reference: Catalog, other: Catalog): CatalogKeyDiff;
|
|
26
|
+
export interface CatalogIssue {
|
|
27
|
+
key: string;
|
|
28
|
+
kind: 'empty-message' | 'plural-missing-other';
|
|
29
|
+
detail: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Structural problems inside one catalog, independent of any other: an empty string, or a
|
|
33
|
+
* plural form with no `other` branch - `Intl.PluralRules` guarantees `other` is always a
|
|
34
|
+
* valid category for every locale, so a form set lacking it will silently degrade for any
|
|
35
|
+
* count the more specific branches don't cover (`t()`'s own `resolvePlural` falls back to
|
|
36
|
+
* *any* form present, which hides exactly this mistake instead of surfacing it).
|
|
37
|
+
*
|
|
38
|
+
* This is deliberately not a parameter schema validator: `SemanticMessage<TType, TParams>`
|
|
39
|
+
* already gives a game compile-time checking of which params a message needs, which the
|
|
40
|
+
* source document calls the primary mechanism - a runtime schema on top would duplicate that
|
|
41
|
+
* for no case a game's own types do not already catch.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { validateCatalog } from '@datamoc/mw_games/i18n';
|
|
46
|
+
*
|
|
47
|
+
* const catalog = {
|
|
48
|
+
* locale: 'en', direction: 'ltr' as const,
|
|
49
|
+
* messages: { empty: '', broken: { few: 'a few' } },
|
|
50
|
+
* };
|
|
51
|
+
*
|
|
52
|
+
* console.log(validateCatalog(catalog).map((issue) => issue.key)); // ['empty', 'broken']
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function validateCatalog(catalog: Catalog): CatalogIssue[];
|
|
56
|
+
//# sourceMappingURL=Validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validate.d.ts","sourceRoot":"","sources":["../../src/i18n/Validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,YAAY,CAAC;AAExD;4DAC4D;AAC5D,MAAM,WAAW,cAAc;IAC9B,2DAA2D;IAC3D,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAOlF;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,eAAe,GAAG,sBAAsB,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAchE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two catalogs' key sets - typically a base language against a translation, so a
|
|
3
|
+
* missing or stray key is caught before a player sees a raw key fall through `t()`'s own
|
|
4
|
+
* fallback, rather than after.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { diffCatalogKeys } from '@datamoc/mw_games/i18n';
|
|
9
|
+
*
|
|
10
|
+
* const en = { locale: 'en', direction: 'ltr' as const, messages: { greeting: 'Hello', farewell: 'Bye' } };
|
|
11
|
+
* const fr = { locale: 'fr', direction: 'ltr' as const, messages: { greeting: 'Bonjour', extra: 'oops' } };
|
|
12
|
+
*
|
|
13
|
+
* console.log(diffCatalogKeys(en, fr)); // { missing: ['farewell'], extra: ['extra'] }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export function diffCatalogKeys(reference, other) {
|
|
17
|
+
const referenceKeys = new Set(Object.keys(reference.messages));
|
|
18
|
+
const otherKeys = new Set(Object.keys(other.messages));
|
|
19
|
+
return {
|
|
20
|
+
missing: [...referenceKeys].filter((key) => !otherKeys.has(key)),
|
|
21
|
+
extra: [...otherKeys].filter((key) => !referenceKeys.has(key)),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Structural problems inside one catalog, independent of any other: an empty string, or a
|
|
26
|
+
* plural form with no `other` branch - `Intl.PluralRules` guarantees `other` is always a
|
|
27
|
+
* valid category for every locale, so a form set lacking it will silently degrade for any
|
|
28
|
+
* count the more specific branches don't cover (`t()`'s own `resolvePlural` falls back to
|
|
29
|
+
* *any* form present, which hides exactly this mistake instead of surfacing it).
|
|
30
|
+
*
|
|
31
|
+
* This is deliberately not a parameter schema validator: `SemanticMessage<TType, TParams>`
|
|
32
|
+
* already gives a game compile-time checking of which params a message needs, which the
|
|
33
|
+
* source document calls the primary mechanism - a runtime schema on top would duplicate that
|
|
34
|
+
* for no case a game's own types do not already catch.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* import { validateCatalog } from '@datamoc/mw_games/i18n';
|
|
39
|
+
*
|
|
40
|
+
* const catalog = {
|
|
41
|
+
* locale: 'en', direction: 'ltr' as const,
|
|
42
|
+
* messages: { empty: '', broken: { few: 'a few' } },
|
|
43
|
+
* };
|
|
44
|
+
*
|
|
45
|
+
* console.log(validateCatalog(catalog).map((issue) => issue.key)); // ['empty', 'broken']
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function validateCatalog(catalog) {
|
|
49
|
+
const issues = [];
|
|
50
|
+
for (const [key, value] of Object.entries(catalog.messages)) {
|
|
51
|
+
if (typeof value === 'string') {
|
|
52
|
+
if (value === '')
|
|
53
|
+
issues.push({ key, kind: 'empty-message', detail: 'message resolves to an empty string' });
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (isPluralForms(value) && value.other === undefined) {
|
|
57
|
+
issues.push({ key, kind: 'plural-missing-other', detail: 'plural forms have no "other" branch' });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return issues;
|
|
61
|
+
}
|
|
62
|
+
function isPluralForms(value) {
|
|
63
|
+
return typeof value === 'object' && value !== null && !('format' in value);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=Validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../src/i18n/Validate.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAC,SAAkB,EAAE,KAAc;IACjE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,OAAO;QACN,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9D,CAAC;AACH,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC/C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,KAAK,KAAK,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC,CAAC;YAC7G,SAAS;QACV,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC,CAAC;QACnG,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAmB;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;AAC5E,CAAC"}
|
package/dist/i18n/index.d.ts
CHANGED
|
@@ -13,6 +13,40 @@
|
|
|
13
13
|
* A missing key in the active language falls back to the base language rather than showing
|
|
14
14
|
* a raw key to the player - a translation catalog is nearly always incomplete somewhere,
|
|
15
15
|
* and a placeholder key breaks immersion far worse than the wrong language would.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { setBase, setActive, t, locale, direction, typographic, parseFTL, reset } from '@datamoc/mw_games/i18n';
|
|
20
|
+
*
|
|
21
|
+
* setBase({ locale: 'en', direction: 'ltr', messages: { greeting: 'Hello, {name}!' } });
|
|
22
|
+
*
|
|
23
|
+
* const french = parseFTL('fr', 'greeting = Bonjour, { $name } !');
|
|
24
|
+
* setActive(french);
|
|
25
|
+
*
|
|
26
|
+
* console.log(t('greeting', { name: 'Ada' })); // 'Bonjour, Ada !'
|
|
27
|
+
* console.log(locale(), direction()); // 'fr' 'ltr'
|
|
28
|
+
* console.log(typographic("aujourd'hui")); // "aujourd’hui"
|
|
29
|
+
*
|
|
30
|
+
* reset(); // back to unset, for the next test or a language switch from scratch
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* `createCatalogFormatter` (`SemanticMessage.ts`) sits on top of the same catalog: a
|
|
34
|
+
* simulation emits one typed `SemanticMessage` and a game renders it differently per channel
|
|
35
|
+
* (log line, compact HUD, accessibility, debug) without touching the message itself.
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { setBase, createCatalogFormatter, type SemanticMessage } from '@datamoc/mw_games/i18n';
|
|
38
|
+
*
|
|
39
|
+
* setBase({
|
|
40
|
+
* locale: 'en',
|
|
41
|
+
* direction: 'ltr',
|
|
42
|
+
* messages: { 'combat.damage.log': 'The {target} takes {amount} damage.', 'combat.damage.compact': '-{amount} HP' },
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* const formatter = createCatalogFormatter();
|
|
46
|
+
* const message: SemanticMessage = { type: 'combat.damage', params: { target: 'gnoll', amount: 7 } };
|
|
47
|
+
* console.log(formatter.format(message, 'log'), formatter.format(message, 'compact'));
|
|
48
|
+
* // 'The gnoll takes 7 damage.' '-7 HP'
|
|
49
|
+
* ```
|
|
16
50
|
*/
|
|
17
51
|
/** left-to-right is the default; right-to-left is the other case `mwg/ui` mirrors against */
|
|
18
52
|
export type Direction = 'ltr' | 'rtl';
|
|
@@ -62,4 +96,9 @@ export declare function has(key: string): boolean;
|
|
|
62
96
|
export declare function reset(): void;
|
|
63
97
|
export { parseFTL } from './Fluent.ts';
|
|
64
98
|
export type { FluentOptions } from './Fluent.ts';
|
|
99
|
+
export { createCatalogFormatter } from './SemanticMessage.ts';
|
|
100
|
+
export type { SemanticMessage, EntityTextResolver, GrammaticalEntity, MessageChannel, MessageFormatter } from './SemanticMessage.ts';
|
|
101
|
+
export { formatNumber, formatDate, formatList } from './Format.ts';
|
|
102
|
+
export { diffCatalogKeys, validateCatalog } from './Validate.ts';
|
|
103
|
+
export type { CatalogKeyDiff, CatalogIssue } from './Validate.ts';
|
|
65
104
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/i18n/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,6FAA6F;AAC7F,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAEtC,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;AAEhE,MAAM,WAAW,OAAO;IACvB,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,4FAA4F;IAC5F,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAOD,uEAAuE;AACvE,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAGvD;AAED,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED,6CAA6C;AAC7C,wBAAgB,SAAS,IAAI,SAAS,CAErC;AAED,MAAM,WAAW,aAAa;IAC7B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAkB7D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAW,GAAG,MAAM,CAGrE;AAED,kFAAkF;AAClF,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExC;AAsBD,gFAAgF;AAChF,wBAAgB,KAAK,IAAI,IAAI,CAI5B;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErI,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/i18n/index.js
CHANGED
|
@@ -13,6 +13,40 @@
|
|
|
13
13
|
* A missing key in the active language falls back to the base language rather than showing
|
|
14
14
|
* a raw key to the player - a translation catalog is nearly always incomplete somewhere,
|
|
15
15
|
* and a placeholder key breaks immersion far worse than the wrong language would.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { setBase, setActive, t, locale, direction, typographic, parseFTL, reset } from '@datamoc/mw_games/i18n';
|
|
20
|
+
*
|
|
21
|
+
* setBase({ locale: 'en', direction: 'ltr', messages: { greeting: 'Hello, {name}!' } });
|
|
22
|
+
*
|
|
23
|
+
* const french = parseFTL('fr', 'greeting = Bonjour, { $name } !');
|
|
24
|
+
* setActive(french);
|
|
25
|
+
*
|
|
26
|
+
* console.log(t('greeting', { name: 'Ada' })); // 'Bonjour, Ada !'
|
|
27
|
+
* console.log(locale(), direction()); // 'fr' 'ltr'
|
|
28
|
+
* console.log(typographic("aujourd'hui")); // "aujourd’hui"
|
|
29
|
+
*
|
|
30
|
+
* reset(); // back to unset, for the next test or a language switch from scratch
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* `createCatalogFormatter` (`SemanticMessage.ts`) sits on top of the same catalog: a
|
|
34
|
+
* simulation emits one typed `SemanticMessage` and a game renders it differently per channel
|
|
35
|
+
* (log line, compact HUD, accessibility, debug) without touching the message itself.
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { setBase, createCatalogFormatter, type SemanticMessage } from '@datamoc/mw_games/i18n';
|
|
38
|
+
*
|
|
39
|
+
* setBase({
|
|
40
|
+
* locale: 'en',
|
|
41
|
+
* direction: 'ltr',
|
|
42
|
+
* messages: { 'combat.damage.log': 'The {target} takes {amount} damage.', 'combat.damage.compact': '-{amount} HP' },
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* const formatter = createCatalogFormatter();
|
|
46
|
+
* const message: SemanticMessage = { type: 'combat.damage', params: { target: 'gnoll', amount: 7 } };
|
|
47
|
+
* console.log(formatter.format(message, 'log'), formatter.format(message, 'compact'));
|
|
48
|
+
* // 'The gnoll takes 7 damage.' '-7 HP'
|
|
49
|
+
* ```
|
|
16
50
|
*/
|
|
17
51
|
let base = null;
|
|
18
52
|
let active = null;
|
|
@@ -47,7 +81,17 @@ export function t(key, params) {
|
|
|
47
81
|
return key;
|
|
48
82
|
const text = typeof entry === 'string' ? entry : isFluentMessage(entry) ? entry.format(params) : resolvePlural(entry, params?.count);
|
|
49
83
|
const translated = params ? interpolate(text, params) : text;
|
|
50
|
-
|
|
84
|
+
const resolved = (active ?? base)?.typography === false ? translated : typographic(translated, locale());
|
|
85
|
+
// Canvas 2D's fillText (what every renderer here draws text through) always resolves
|
|
86
|
+
// bidi runs against an 'ltr' paragraph base, since nothing sets the context's own
|
|
87
|
+
// `direction`. A message that is mostly RTL but starts or ends with a weak/neutral
|
|
88
|
+
// character (a digit, an interpolated Latin name) then gets its runs ordered as if
|
|
89
|
+
// the paragraph were LTR. Wrapping the whole string in an explicit right-to-left
|
|
90
|
+
// isolate is a Unicode Bidi Algorithm formatting control, not a locale heuristic, so
|
|
91
|
+
// fillText honours it regardless of the canvas's own direction.
|
|
92
|
+
const RLI = ''; // right-to-left isolate
|
|
93
|
+
const PDI = ''; // pop directional isolate
|
|
94
|
+
return direction() === 'rtl' ? `${RLI}${resolved}${PDI}` : resolved;
|
|
51
95
|
}
|
|
52
96
|
/**
|
|
53
97
|
* Replaces apostrophes between letters for locales whose ordinary elisions use a curly
|
|
@@ -86,4 +130,7 @@ export function reset() {
|
|
|
86
130
|
activeRules = null;
|
|
87
131
|
}
|
|
88
132
|
export { parseFTL } from './Fluent.js';
|
|
133
|
+
export { createCatalogFormatter } from './SemanticMessage.js';
|
|
134
|
+
export { formatNumber, formatDate, formatList } from './Format.js';
|
|
135
|
+
export { diffCatalogKeys, validateCatalog } from './Validate.js';
|
|
89
136
|
//# sourceMappingURL=index.js.map
|
package/dist/i18n/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,15 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This is the whole surface in one place, which is also what the standalone
|
|
5
5
|
* `mw_games.global.js` build exposes as `window.mw_games`. Consumers using a bundler can
|
|
6
|
-
* import the narrower entry points instead: `mw_games/core`, `mw_games/
|
|
7
|
-
* `mw_games/roguelike`.
|
|
6
|
+
* import the narrower entry points instead: `mw_games/core`, `mw_games/two-d`,
|
|
7
|
+
* `mw_games/roguelike`. `mw_games/3d` is deliberately absent from here: it pulls in Babylon,
|
|
8
|
+
* which a 2D game should never pay for by importing the root.
|
|
8
9
|
*/
|
|
9
10
|
export { version } from './version.ts';
|
|
10
11
|
export * from './core/index.ts';
|
|
11
|
-
export * from './
|
|
12
|
+
export * from './two-d/index.ts';
|
|
12
13
|
export * as Resources from './assets/index.ts';
|
|
13
|
-
export * from './ui/index.ts';
|
|
14
|
-
export * from './stage/index.ts';
|
|
15
14
|
export * as Roguelike from './roguelike/index.ts';
|
|
16
15
|
export * as I18n from './i18n/index.ts';
|
|
17
16
|
export * as Actors from './actors/index.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,15 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This is the whole surface in one place, which is also what the standalone
|
|
5
5
|
* `mw_games.global.js` build exposes as `window.mw_games`. Consumers using a bundler can
|
|
6
|
-
* import the narrower entry points instead: `mw_games/core`, `mw_games/
|
|
7
|
-
* `mw_games/roguelike`.
|
|
6
|
+
* import the narrower entry points instead: `mw_games/core`, `mw_games/two-d`,
|
|
7
|
+
* `mw_games/roguelike`. `mw_games/3d` is deliberately absent from here: it pulls in Babylon,
|
|
8
|
+
* which a 2D game should never pay for by importing the root.
|
|
8
9
|
*/
|
|
9
10
|
export { version } from './version.js';
|
|
10
11
|
export * from './core/index.js';
|
|
11
|
-
export * from './
|
|
12
|
+
export * from './two-d/index.js';
|
|
12
13
|
export * as Resources from './assets/index.js';
|
|
13
|
-
export * from './ui/index.js';
|
|
14
|
-
export * from './stage/index.js';
|
|
15
14
|
export * as Roguelike from './roguelike/index.js';
|
|
16
15
|
export * as I18n from './i18n/index.js';
|
|
17
16
|
export * as Actors from './actors/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC"}
|