@datamoc/mw_games 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -32
- package/dist/actors/Appearances.js +1 -1
- package/dist/actors/Aura.d.ts +29 -0
- package/dist/actors/Aura.d.ts.map +1 -0
- package/dist/actors/Aura.js +69 -0
- package/dist/actors/Aura.js.map +1 -0
- package/dist/actors/ItemStatusEffect.d.ts +27 -0
- package/dist/actors/ItemStatusEffect.d.ts.map +1 -0
- package/dist/actors/ItemStatusEffect.js +35 -0
- package/dist/actors/ItemStatusEffect.js.map +1 -0
- package/dist/actors/Resource.d.ts.map +1 -1
- package/dist/actors/Resource.js +13 -5
- package/dist/actors/Resource.js.map +1 -1
- package/dist/actors/Support.d.ts +32 -0
- package/dist/actors/Support.d.ts.map +1 -0
- package/dist/actors/Support.js +60 -0
- package/dist/actors/Support.js.map +1 -0
- package/dist/actors/Traits.d.ts +29 -0
- package/dist/actors/Traits.d.ts.map +1 -0
- package/dist/actors/Traits.js +21 -0
- package/dist/actors/Traits.js.map +1 -0
- package/dist/actors/craft.d.ts.map +1 -1
- package/dist/actors/craft.js +6 -2
- package/dist/actors/craft.js.map +1 -1
- package/dist/actors/index.d.ts +8 -0
- package/dist/actors/index.d.ts.map +1 -1
- package/dist/actors/index.js +4 -0
- package/dist/actors/index.js.map +1 -1
- package/dist/assets/Streaming.d.ts +40 -0
- package/dist/assets/Streaming.d.ts.map +1 -0
- package/dist/assets/Streaming.js +79 -0
- package/dist/assets/Streaming.js.map +1 -0
- package/dist/assets/index.d.ts +14 -1
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +19 -0
- package/dist/assets/index.js.map +1 -1
- package/dist/audio/Captions.d.ts +15 -0
- package/dist/audio/Captions.d.ts.map +1 -0
- package/dist/audio/Captions.js +4 -0
- package/dist/audio/Captions.js.map +1 -0
- package/dist/audio/Midi.d.ts +75 -0
- package/dist/audio/Midi.d.ts.map +1 -0
- package/dist/audio/Midi.js +186 -0
- package/dist/audio/Midi.js.map +1 -0
- package/dist/audio/Orchestrator.d.ts +40 -0
- package/dist/audio/Orchestrator.d.ts.map +1 -0
- package/dist/audio/Orchestrator.js +48 -0
- package/dist/audio/Orchestrator.js.map +1 -0
- package/dist/audio/Sound.d.ts +3 -0
- package/dist/audio/Sound.d.ts.map +1 -1
- package/dist/audio/Sound.js +4 -0
- package/dist/audio/Sound.js.map +1 -1
- package/dist/audio/Synth.d.ts +35 -0
- package/dist/audio/Synth.d.ts.map +1 -0
- package/dist/audio/Synth.js +96 -0
- package/dist/audio/Synth.js.map +1 -0
- package/dist/audio/index.d.ts +8 -0
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +4 -0
- package/dist/audio/index.js.map +1 -1
- package/dist/battle/Party.d.ts.map +1 -1
- package/dist/battle/Party.js +2 -0
- package/dist/battle/Party.js.map +1 -1
- package/dist/board/Army.d.ts +17 -0
- package/dist/board/Army.d.ts.map +1 -0
- package/dist/board/Army.js +48 -0
- package/dist/board/Army.js.map +1 -0
- package/dist/board/Classics.d.ts.map +1 -1
- package/dist/board/Classics.js +14 -6
- package/dist/board/Classics.js.map +1 -1
- package/dist/board/FogOfWar.d.ts +23 -0
- package/dist/board/FogOfWar.d.ts.map +1 -0
- package/dist/board/FogOfWar.js +40 -0
- package/dist/board/FogOfWar.js.map +1 -0
- package/dist/board/Tactics.d.ts +2 -0
- package/dist/board/Tactics.d.ts.map +1 -1
- package/dist/board/Tactics.js +36 -8
- package/dist/board/Tactics.js.map +1 -1
- package/dist/board/index.d.ts +5 -1
- package/dist/board/index.d.ts.map +1 -1
- package/dist/board/index.js +3 -1
- package/dist/board/index.js.map +1 -1
- package/dist/core/Feedback.d.ts +23 -0
- package/dist/core/Feedback.d.ts.map +1 -0
- package/dist/core/Feedback.js +35 -0
- package/dist/core/Feedback.js.map +1 -0
- package/dist/core/Game.d.ts +27 -1
- package/dist/core/Game.d.ts.map +1 -1
- package/dist/core/Game.js +61 -5
- package/dist/core/Game.js.map +1 -1
- package/dist/core/Input.d.ts +59 -1
- package/dist/core/Input.d.ts.map +1 -1
- package/dist/core/Input.js +135 -0
- package/dist/core/Input.js.map +1 -1
- package/dist/core/Loading.d.ts +48 -0
- package/dist/core/Loading.d.ts.map +1 -0
- package/dist/core/Loading.js +102 -0
- package/dist/core/Loading.js.map +1 -0
- package/dist/core/News.d.ts +46 -0
- package/dist/core/News.d.ts.map +1 -0
- package/dist/core/News.js +79 -0
- package/dist/core/News.js.map +1 -0
- package/dist/core/PlayerInput.d.ts +38 -0
- package/dist/core/PlayerInput.d.ts.map +1 -0
- package/dist/core/PlayerInput.js +57 -0
- package/dist/core/PlayerInput.js.map +1 -0
- package/dist/core/Random.d.ts +2 -2
- package/dist/core/Random.js +2 -2
- package/dist/core/RunHistory.d.ts +43 -0
- package/dist/core/RunHistory.d.ts.map +1 -0
- package/dist/core/RunHistory.js +41 -0
- package/dist/core/RunHistory.js.map +1 -0
- package/dist/core/Sanitize.d.ts +56 -0
- package/dist/core/Sanitize.d.ts.map +1 -0
- package/dist/core/Sanitize.js +87 -0
- package/dist/core/Sanitize.js.map +1 -0
- package/dist/core/Save.d.ts +31 -7
- package/dist/core/Save.d.ts.map +1 -1
- package/dist/core/Save.js +56 -0
- package/dist/core/Save.js.map +1 -1
- package/dist/core/SaveSync.d.ts +26 -0
- package/dist/core/SaveSync.d.ts.map +1 -0
- package/dist/core/SaveSync.js +52 -0
- package/dist/core/SaveSync.js.map +1 -0
- package/dist/core/Scramble.d.ts +13 -0
- package/dist/core/Scramble.d.ts.map +1 -0
- package/dist/core/Scramble.js +44 -0
- package/dist/core/Scramble.js.map +1 -0
- package/dist/core/Session.d.ts +21 -0
- package/dist/core/Session.d.ts.map +1 -0
- package/dist/core/Session.js +11 -0
- package/dist/core/Session.js.map +1 -0
- package/dist/core/Spawner.d.ts +48 -0
- package/dist/core/Spawner.d.ts.map +1 -0
- package/dist/core/Spawner.js +65 -0
- package/dist/core/Spawner.js.map +1 -0
- package/dist/core/Tween.d.ts +25 -0
- package/dist/core/Tween.d.ts.map +1 -0
- package/dist/core/Tween.js +60 -0
- package/dist/core/Tween.js.map +1 -0
- package/dist/core/UndoHistory.d.ts +37 -0
- package/dist/core/UndoHistory.d.ts.map +1 -0
- package/dist/core/UndoHistory.js +49 -0
- package/dist/core/UndoHistory.js.map +1 -0
- package/dist/core/index.d.ts +22 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -1
- package/dist/i18n/Fluent.d.ts +7 -0
- package/dist/i18n/Fluent.d.ts.map +1 -0
- package/dist/i18n/Fluent.js +86 -0
- package/dist/i18n/Fluent.js.map +1 -0
- package/dist/i18n/index.d.ts +15 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +17 -2
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mw_games.global.js +351 -79
- package/dist/render/Camera.d.ts +32 -4
- package/dist/render/Camera.d.ts.map +1 -1
- package/dist/render/Camera.js +58 -23
- package/dist/render/Camera.js.map +1 -1
- package/dist/render/Capabilities.d.ts +51 -0
- package/dist/render/Capabilities.d.ts.map +1 -0
- package/dist/render/Capabilities.js +56 -0
- package/dist/render/Capabilities.js.map +1 -0
- package/dist/render/ColorBlindness.d.ts +16 -0
- package/dist/render/ColorBlindness.d.ts.map +1 -0
- package/dist/render/ColorBlindness.js +41 -0
- package/dist/render/ColorBlindness.js.map +1 -0
- package/dist/render/ColorTransformBatcher.d.ts +9 -0
- package/dist/render/ColorTransformBatcher.d.ts.map +1 -1
- package/dist/render/ColorTransformBatcher.js +131 -19
- package/dist/render/ColorTransformBatcher.js.map +1 -1
- package/dist/render/Minimap.d.ts +52 -0
- package/dist/render/Minimap.d.ts.map +1 -0
- package/dist/render/Minimap.js +95 -0
- package/dist/render/Minimap.js.map +1 -0
- package/dist/render/TileMap.d.ts +2 -2
- package/dist/render/TileMap.d.ts.map +1 -1
- package/dist/render/TileMap.js +12 -12
- package/dist/render/TileMap.js.map +1 -1
- package/dist/render/TintedSprite.d.ts +1 -8
- package/dist/render/TintedSprite.d.ts.map +1 -1
- package/dist/render/TintedSprite.js +3 -111
- package/dist/render/TintedSprite.js.map +1 -1
- package/dist/render/Viewport.d.ts +46 -0
- package/dist/render/Viewport.d.ts.map +1 -0
- package/dist/render/Viewport.js +52 -0
- package/dist/render/Viewport.js.map +1 -0
- package/dist/render/index.d.ts +9 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +5 -1
- package/dist/render/index.js.map +1 -1
- package/dist/roguelike/FieldOfView.d.ts +1 -1
- package/dist/roguelike/Level.d.ts +2 -2
- package/dist/roguelike/Level.d.ts.map +1 -1
- package/dist/roguelike/Level.js +1 -1
- package/dist/roguelike/Level.js.map +1 -1
- package/dist/roguelike/Pathfinder.d.ts +3 -3
- package/dist/roguelike/Pathfinder.js +2 -2
- package/dist/roguelike/Scheduler.d.ts +1 -1
- package/dist/roguelike/Scheduler.js +1 -1
- package/dist/roguelike/Stealth.d.ts +34 -0
- package/dist/roguelike/Stealth.d.ts.map +1 -0
- package/dist/roguelike/Stealth.js +35 -0
- package/dist/roguelike/Stealth.js.map +1 -0
- package/dist/roguelike/generate.d.ts +3 -3
- package/dist/roguelike/generate.js +1 -1
- package/dist/roguelike/generate.js.map +1 -1
- package/dist/roguelike/index.d.ts +2 -0
- package/dist/roguelike/index.d.ts.map +1 -1
- package/dist/roguelike/index.js +1 -0
- package/dist/roguelike/index.js.map +1 -1
- package/dist/rpg/Collision.d.ts +42 -0
- package/dist/rpg/Collision.d.ts.map +1 -0
- package/dist/rpg/Collision.js +77 -0
- package/dist/rpg/Collision.js.map +1 -0
- package/dist/rpg/FreeMover.d.ts +45 -0
- package/dist/rpg/FreeMover.d.ts.map +1 -0
- package/dist/rpg/FreeMover.js +68 -0
- package/dist/rpg/FreeMover.js.map +1 -0
- package/dist/rpg/Marshal.d.ts +65 -0
- package/dist/rpg/Marshal.d.ts.map +1 -0
- package/dist/rpg/Marshal.js +393 -0
- package/dist/rpg/Marshal.js.map +1 -0
- package/dist/rpg/Quest.d.ts +41 -0
- package/dist/rpg/Quest.d.ts.map +1 -1
- package/dist/rpg/Quest.js +39 -6
- package/dist/rpg/Quest.js.map +1 -1
- package/dist/rpg/index.d.ts +7 -1
- package/dist/rpg/index.d.ts.map +1 -1
- package/dist/rpg/index.js +3 -0
- package/dist/rpg/index.js.map +1 -1
- package/dist/stage/DialogueStage.d.ts +2 -3
- package/dist/stage/DialogueStage.d.ts.map +1 -1
- package/dist/stage/DialogueStage.js +21 -30
- package/dist/stage/DialogueStage.js.map +1 -1
- package/dist/stage/index.d.ts +1 -1
- package/dist/stage/index.d.ts.map +1 -1
- package/dist/stage/script.d.ts +32 -3
- package/dist/stage/script.d.ts.map +1 -1
- package/dist/stage/script.js +0 -0
- package/dist/stage/script.js.map +1 -1
- package/dist/three-d/Character3D.d.ts +48 -0
- package/dist/three-d/Character3D.d.ts.map +1 -0
- package/dist/three-d/Character3D.js +96 -0
- package/dist/three-d/Character3D.js.map +1 -0
- package/dist/three-d/Engine3D.d.ts +23 -0
- package/dist/three-d/Engine3D.d.ts.map +1 -0
- package/dist/three-d/Engine3D.js +45 -0
- package/dist/three-d/Engine3D.js.map +1 -0
- package/dist/three-d/Grid.d.ts +14 -0
- package/dist/three-d/Grid.d.ts.map +1 -0
- package/dist/three-d/Grid.js +13 -0
- package/dist/three-d/Grid.js.map +1 -0
- package/dist/three-d/Heightmap.d.ts +35 -0
- package/dist/three-d/Heightmap.d.ts.map +1 -0
- package/dist/three-d/Heightmap.js +29 -0
- package/dist/three-d/Heightmap.js.map +1 -0
- package/dist/three-d/Models.d.ts +12 -0
- package/dist/three-d/Models.d.ts.map +1 -0
- package/dist/three-d/Models.js +14 -0
- package/dist/three-d/Models.js.map +1 -0
- package/dist/three-d/TileGrid3D.d.ts +21 -0
- package/dist/three-d/TileGrid3D.d.ts.map +1 -0
- package/dist/three-d/TileGrid3D.js +65 -0
- package/dist/three-d/TileGrid3D.js.map +1 -0
- package/dist/three-d/Vox.d.ts +24 -0
- package/dist/three-d/Vox.d.ts.map +1 -0
- package/dist/three-d/Vox.js +93 -0
- package/dist/three-d/Vox.js.map +1 -0
- package/dist/three-d/index.d.ts +13 -0
- package/dist/three-d/index.d.ts.map +1 -0
- package/dist/three-d/index.js +7 -0
- package/dist/three-d/index.js.map +1 -0
- package/dist/ui/Bar.d.ts +49 -0
- package/dist/ui/Bar.d.ts.map +1 -0
- package/dist/ui/Bar.js +70 -0
- package/dist/ui/Bar.js.map +1 -0
- package/dist/ui/BitmapLabel.d.ts +42 -0
- package/dist/ui/BitmapLabel.d.ts.map +1 -0
- package/dist/ui/BitmapLabel.js +59 -0
- package/dist/ui/BitmapLabel.js.map +1 -0
- package/dist/ui/Button.d.ts +52 -0
- package/dist/ui/Button.d.ts.map +1 -0
- package/dist/ui/Button.js +147 -0
- package/dist/ui/Button.js.map +1 -0
- package/dist/ui/FloatingText.d.ts +28 -0
- package/dist/ui/FloatingText.d.ts.map +1 -0
- package/dist/ui/FloatingText.js +39 -0
- package/dist/ui/FloatingText.js.map +1 -0
- package/dist/ui/HelpScreen.d.ts +29 -0
- package/dist/ui/HelpScreen.d.ts.map +1 -0
- package/dist/ui/HelpScreen.js +39 -0
- package/dist/ui/HelpScreen.js.map +1 -0
- package/dist/ui/IconGrid.d.ts +8 -0
- package/dist/ui/IconGrid.d.ts.map +1 -1
- package/dist/ui/IconGrid.js +27 -1
- package/dist/ui/IconGrid.js.map +1 -1
- package/dist/ui/Label.d.ts +10 -1
- package/dist/ui/Label.d.ts.map +1 -1
- package/dist/ui/Label.js +25 -2
- package/dist/ui/Label.js.map +1 -1
- package/dist/ui/ListView.d.ts +12 -1
- package/dist/ui/ListView.d.ts.map +1 -1
- package/dist/ui/ListView.js +56 -2
- package/dist/ui/ListView.js.map +1 -1
- package/dist/ui/LoadingScreen.d.ts +31 -0
- package/dist/ui/LoadingScreen.d.ts.map +1 -0
- package/dist/ui/LoadingScreen.js +60 -0
- package/dist/ui/LoadingScreen.js.map +1 -0
- package/dist/ui/MessageBox.d.ts +27 -1
- package/dist/ui/MessageBox.d.ts.map +1 -1
- package/dist/ui/MessageBox.js +63 -14
- package/dist/ui/MessageBox.js.map +1 -1
- package/dist/ui/RebindScreen.d.ts +55 -0
- package/dist/ui/RebindScreen.d.ts.map +1 -0
- package/dist/ui/RebindScreen.js +114 -0
- package/dist/ui/RebindScreen.js.map +1 -0
- package/dist/ui/Toast.d.ts +44 -0
- package/dist/ui/Toast.d.ts.map +1 -0
- package/dist/ui/Toast.js +89 -0
- package/dist/ui/Toast.js.map +1 -0
- package/dist/ui/VerticalLabel.d.ts +5 -0
- package/dist/ui/VerticalLabel.d.ts.map +1 -1
- package/dist/ui/VerticalLabel.js +18 -7
- package/dist/ui/VerticalLabel.js.map +1 -1
- package/dist/ui/Window.d.ts +6 -0
- package/dist/ui/Window.d.ts.map +1 -1
- package/dist/ui/Window.js +16 -1
- package/dist/ui/Window.js.map +1 -1
- package/dist/ui/WindowStack.d.ts +1 -0
- package/dist/ui/WindowStack.d.ts.map +1 -1
- package/dist/ui/WindowStack.js +4 -1
- package/dist/ui/WindowStack.js.map +1 -1
- package/dist/ui/index.d.ts +17 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +9 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/theme.d.ts +21 -0
- package/dist/ui/theme.d.ts.map +1 -1
- package/dist/ui/theme.js +42 -0
- package/dist/ui/theme.js.map +1 -1
- package/dist/version.d.ts +13 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +13 -0
- package/dist/version.js.map +1 -0
- package/dist/world/Environment.d.ts +35 -0
- package/dist/world/Environment.d.ts.map +1 -0
- package/dist/world/Environment.js +55 -0
- package/dist/world/Environment.js.map +1 -0
- package/dist/world/index.d.ts +2 -0
- package/dist/world/index.d.ts.map +1 -1
- package/dist/world/index.js +1 -0
- package/dist/world/index.js.map +1 -1
- package/package.json +40 -4
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ruby's `Marshal` binary serialisation format (version 4.8, unchanged since Ruby 1.8) -
|
|
3
|
+
* the container `Game.rxdata` and every other RPG Maker XP/VX save are written in. This is
|
|
4
|
+
* format engineering, not RPG Maker's own code or content: the byte layout below is Ruby's
|
|
5
|
+
* own standard-library format, learned the ordinary way any undocumented format is, by
|
|
6
|
+
* reading real files in it. Nothing here knows what an RPG Maker save's own classes
|
|
7
|
+
* (`Game_Party`, `Game_Actor`) mean; it only turns the container's bytes into a faithful,
|
|
8
|
+
* generic JS shape a game can then interpret however it needs to. See CLAUDE.md's licence
|
|
9
|
+
* convention and ROADMAP.md item 100 for where this line sits.
|
|
10
|
+
*
|
|
11
|
+
* What decodes: nil, true, false, Fixnum, Bignum, Float, String, Symbol, Array, Hash
|
|
12
|
+
* (including one with a default value, read separately via `hashDefaultOf` rather than as a
|
|
13
|
+
* fake entry - a real Hash key equal to any string sentinel would otherwise collide with
|
|
14
|
+
* it), and Object (`o`, a class name plus its instance variables) - everything a plain-data
|
|
15
|
+
* save file actually needs. `_dump`/`_load` values
|
|
16
|
+
* (`u`) decode to their class name plus the opaque bytes their own `_load` would need,
|
|
17
|
+
* since that per-class binary layout is a second, undocumented format nested inside this
|
|
18
|
+
* one and out of scope the same way a container format never explains the media it holds.
|
|
19
|
+
* `marshal_dump`/`marshal_load` values (`U`) decode fully, since their payload is an
|
|
20
|
+
* ordinary Marshal value. Backreferences (`@`, `;`) resolve against the same link tables a
|
|
21
|
+
* real Ruby `Marshal.load` keeps, so a value referenced twice decodes to the same object
|
|
22
|
+
* twice rather than being duplicated.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Marks a JS string as a Ruby Symbol rather than a String when encoding - `decodeMarshal`
|
|
26
|
+
* maps both to a plain JS string (the distinction rarely matters for reading a save back),
|
|
27
|
+
* but writing needs to know which one to produce. `RubyObject.ivars`' keys are always
|
|
28
|
+
* written as symbols regardless, since that half of the format has no other option.
|
|
29
|
+
*/
|
|
30
|
+
export class RubySymbol {
|
|
31
|
+
constructor(name) {
|
|
32
|
+
this.name = name;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const MARSHAL_MAJOR = 4;
|
|
36
|
+
const MARSHAL_MINOR = 8;
|
|
37
|
+
//a Hash.new(default)'s default value, keyed by the decoded Map itself rather than a fake
|
|
38
|
+
//entry - a real Hash key equal to any string sentinel would otherwise be overwritten
|
|
39
|
+
const hashDefaults = new WeakMap();
|
|
40
|
+
/** the default value of a Hash decoded from `Hash.new(default)` (Marshal's `}` tag), if any */
|
|
41
|
+
export function hashDefaultOf(hash) {
|
|
42
|
+
return hashDefaults.get(hash);
|
|
43
|
+
}
|
|
44
|
+
/** marks a Map for `encodeMarshal` to write back out as a `Hash.new(default)`, tag `}` */
|
|
45
|
+
export function withHashDefault(hash, defaultValue) {
|
|
46
|
+
hashDefaults.set(hash, defaultValue);
|
|
47
|
+
return hash;
|
|
48
|
+
}
|
|
49
|
+
class Reader {
|
|
50
|
+
constructor(bytes) {
|
|
51
|
+
this.pos = 0;
|
|
52
|
+
this.symbols = [];
|
|
53
|
+
this.objects = [];
|
|
54
|
+
this.bytes = bytes;
|
|
55
|
+
}
|
|
56
|
+
byte() {
|
|
57
|
+
if (this.pos >= this.bytes.length)
|
|
58
|
+
throw new Error('Marshal: unexpected end of input');
|
|
59
|
+
return this.bytes[this.pos++];
|
|
60
|
+
}
|
|
61
|
+
take(count) {
|
|
62
|
+
//a negative count (a corrupt length-prefixed field) would otherwise pass the length
|
|
63
|
+
//check below silently, since subarray(pos, pos + count) with count < 0 clamps to an
|
|
64
|
+
//empty slice rather than throwing, and rewind pos backward instead of erroring
|
|
65
|
+
if (count < 0)
|
|
66
|
+
throw new Error('Marshal: negative length');
|
|
67
|
+
const slice = this.bytes.subarray(this.pos, this.pos + count);
|
|
68
|
+
if (slice.length < count)
|
|
69
|
+
throw new Error('Marshal: unexpected end of input');
|
|
70
|
+
this.pos += count;
|
|
71
|
+
return slice;
|
|
72
|
+
}
|
|
73
|
+
/** Ruby's variable-length integer encoding - see the module doc for the byte layout */
|
|
74
|
+
readFixnum() {
|
|
75
|
+
const c = this.byte() << 24 >> 24; // reinterpret as signed 8-bit
|
|
76
|
+
if (c === 0)
|
|
77
|
+
return 0;
|
|
78
|
+
if (c >= 5 && c <= 127)
|
|
79
|
+
return c - 5;
|
|
80
|
+
if (c <= -5 && c >= -128)
|
|
81
|
+
return c + 5;
|
|
82
|
+
if (c > 0) {
|
|
83
|
+
let value = 0;
|
|
84
|
+
for (let i = 0; i < c; i++)
|
|
85
|
+
value |= this.byte() << (8 * i);
|
|
86
|
+
return value >>> 0;
|
|
87
|
+
}
|
|
88
|
+
const n = -c;
|
|
89
|
+
let value = 0;
|
|
90
|
+
for (let i = 0; i < n; i++)
|
|
91
|
+
value |= this.byte() << (8 * i);
|
|
92
|
+
return (value >>> 0) - 2 ** (8 * n);
|
|
93
|
+
}
|
|
94
|
+
readBytes() {
|
|
95
|
+
return this.take(this.readFixnum());
|
|
96
|
+
}
|
|
97
|
+
readSymbol() {
|
|
98
|
+
const name = new TextDecoder().decode(this.readBytes());
|
|
99
|
+
this.symbols.push(name);
|
|
100
|
+
return name;
|
|
101
|
+
}
|
|
102
|
+
readSymbolLink() {
|
|
103
|
+
const index = this.readFixnum();
|
|
104
|
+
const name = this.symbols[index];
|
|
105
|
+
if (name === undefined)
|
|
106
|
+
throw new Error(`Marshal: symbol link ${index} out of range`);
|
|
107
|
+
return name;
|
|
108
|
+
}
|
|
109
|
+
/** reads whichever of `:` (a new symbol) or `;` (a link to one already seen) comes next */
|
|
110
|
+
readSymbolValue() {
|
|
111
|
+
const tag = String.fromCharCode(this.byte());
|
|
112
|
+
if (tag === ':')
|
|
113
|
+
return this.readSymbol();
|
|
114
|
+
if (tag === ';')
|
|
115
|
+
return this.readSymbolLink();
|
|
116
|
+
throw new Error(`Marshal: expected a symbol, got tag "${tag}"`);
|
|
117
|
+
}
|
|
118
|
+
link(value) {
|
|
119
|
+
this.objects.push(value);
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A Bignum decodes to a plain JS `number`, not a `bigint` - correct up to
|
|
124
|
+
* `Number.MAX_SAFE_INTEGER` (2^53), silently imprecise past it, the same rounding a plain
|
|
125
|
+
* `JSON.parse` of a huge integer already has. RPG Maker save data has no legitimate use
|
|
126
|
+
* for an integer that large (`Game_Party`'s gold, item counts, switch/variable ids are
|
|
127
|
+
* all ordinary Fixnum range), so this stays a `number` for a uniform return type rather
|
|
128
|
+
* than `number | bigint` for a case no real `.rxdata` file exercises.
|
|
129
|
+
*/
|
|
130
|
+
readBignum() {
|
|
131
|
+
const sign = String.fromCharCode(this.byte()) === '-' ? -1 : 1;
|
|
132
|
+
const words = this.readFixnum();
|
|
133
|
+
let value = 0;
|
|
134
|
+
let multiplier = 1;
|
|
135
|
+
for (let i = 0; i < words; i++) {
|
|
136
|
+
value += (this.byte() | (this.byte() << 8)) * multiplier;
|
|
137
|
+
multiplier *= 65536;
|
|
138
|
+
}
|
|
139
|
+
return sign * value;
|
|
140
|
+
}
|
|
141
|
+
readFloat() {
|
|
142
|
+
const text = new TextDecoder().decode(this.readBytes());
|
|
143
|
+
if (text === 'inf')
|
|
144
|
+
return Infinity;
|
|
145
|
+
if (text === '-inf')
|
|
146
|
+
return -Infinity;
|
|
147
|
+
if (text === 'nan')
|
|
148
|
+
return NaN;
|
|
149
|
+
return Number(text);
|
|
150
|
+
}
|
|
151
|
+
readArray() {
|
|
152
|
+
const array = [];
|
|
153
|
+
this.link(array);
|
|
154
|
+
const length = this.readFixnum();
|
|
155
|
+
for (let i = 0; i < length; i++)
|
|
156
|
+
array.push(this.readValue());
|
|
157
|
+
return array;
|
|
158
|
+
}
|
|
159
|
+
readHash(withDefault) {
|
|
160
|
+
const map = new Map();
|
|
161
|
+
this.link(map);
|
|
162
|
+
const length = this.readFixnum();
|
|
163
|
+
for (let i = 0; i < length; i++)
|
|
164
|
+
map.set(this.readValue(), this.readValue());
|
|
165
|
+
//a Hash.new(default)'s default lives out of band, in hashDefaults - never as a fake
|
|
166
|
+
//entry, which a real key equal to that sentinel would silently collide with
|
|
167
|
+
if (withDefault)
|
|
168
|
+
hashDefaults.set(map, this.readValue());
|
|
169
|
+
return map;
|
|
170
|
+
}
|
|
171
|
+
readIvars(count) {
|
|
172
|
+
const ivars = {};
|
|
173
|
+
for (let i = 0; i < count; i++)
|
|
174
|
+
ivars[this.readSymbolValue()] = this.readValue();
|
|
175
|
+
return ivars;
|
|
176
|
+
}
|
|
177
|
+
readObject() {
|
|
178
|
+
const object = { class: '', ivars: {} };
|
|
179
|
+
this.link(object);
|
|
180
|
+
object.class = this.readSymbolValue();
|
|
181
|
+
object.ivars = this.readIvars(this.readFixnum());
|
|
182
|
+
return object;
|
|
183
|
+
}
|
|
184
|
+
/** a string, possibly wrapped in `I` (instance-variable) metadata such as its encoding */
|
|
185
|
+
readIvarWrapped() {
|
|
186
|
+
const value = this.readValue();
|
|
187
|
+
this.readIvars(this.readFixnum()); // encoding/other ivars are metadata this reader does not expose
|
|
188
|
+
return value;
|
|
189
|
+
}
|
|
190
|
+
readUserDefined() {
|
|
191
|
+
const value = { class: '', raw: new Uint8Array() };
|
|
192
|
+
this.link(value);
|
|
193
|
+
value.class = this.readSymbolValue();
|
|
194
|
+
value.raw = this.readBytes().slice();
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
197
|
+
readUserMarshal() {
|
|
198
|
+
const wrapper = { class: '', value: null };
|
|
199
|
+
this.link(wrapper);
|
|
200
|
+
wrapper.class = this.readSymbolValue();
|
|
201
|
+
wrapper.value = this.readValue();
|
|
202
|
+
return wrapper;
|
|
203
|
+
}
|
|
204
|
+
readValue() {
|
|
205
|
+
const tag = String.fromCharCode(this.byte());
|
|
206
|
+
switch (tag) {
|
|
207
|
+
case '0':
|
|
208
|
+
return null;
|
|
209
|
+
case 'T':
|
|
210
|
+
return true;
|
|
211
|
+
case 'F':
|
|
212
|
+
return false;
|
|
213
|
+
case 'i':
|
|
214
|
+
return this.readFixnum();
|
|
215
|
+
case 'l':
|
|
216
|
+
return this.link(this.readBignum());
|
|
217
|
+
case 'f':
|
|
218
|
+
return this.link(this.readFloat());
|
|
219
|
+
case ':':
|
|
220
|
+
return this.readSymbol();
|
|
221
|
+
case ';':
|
|
222
|
+
return this.readSymbolLink();
|
|
223
|
+
case '"':
|
|
224
|
+
return this.link(new TextDecoder().decode(this.readBytes()));
|
|
225
|
+
case '[':
|
|
226
|
+
return this.readArray();
|
|
227
|
+
case '{':
|
|
228
|
+
return this.readHash(false);
|
|
229
|
+
case '}':
|
|
230
|
+
return this.readHash(true);
|
|
231
|
+
case 'o':
|
|
232
|
+
return this.readObject();
|
|
233
|
+
case 'I':
|
|
234
|
+
return this.readIvarWrapped();
|
|
235
|
+
case 'u':
|
|
236
|
+
return this.readUserDefined();
|
|
237
|
+
case 'U':
|
|
238
|
+
return this.readUserMarshal();
|
|
239
|
+
case '@': {
|
|
240
|
+
const index = this.readFixnum();
|
|
241
|
+
const value = this.objects[index];
|
|
242
|
+
if (value === undefined)
|
|
243
|
+
throw new Error(`Marshal: object link ${index} out of range`);
|
|
244
|
+
return value;
|
|
245
|
+
}
|
|
246
|
+
default:
|
|
247
|
+
throw new Error(`Marshal: unsupported tag "${tag}" (0x${tag.charCodeAt(0).toString(16)})`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
readDocument() {
|
|
251
|
+
const major = this.byte();
|
|
252
|
+
const minor = this.byte();
|
|
253
|
+
if (major !== MARSHAL_MAJOR || minor > MARSHAL_MINOR) {
|
|
254
|
+
throw new Error(`Marshal: unsupported version ${major}.${minor} (expected ${MARSHAL_MAJOR}.${MARSHAL_MINOR} or lower)`);
|
|
255
|
+
}
|
|
256
|
+
return this.readValue();
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/** decodes one Marshal document (a whole `.rxdata` file, or any other Marshal dump) */
|
|
260
|
+
export function decodeMarshal(bytes) {
|
|
261
|
+
return new Reader(bytes).readDocument();
|
|
262
|
+
}
|
|
263
|
+
function isRubyObject(value) {
|
|
264
|
+
return typeof value === 'object' && value !== null && 'class' in value && 'ivars' in value;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Encodes one Marshal document from the same shapes `decodeMarshal` produces: `null`,
|
|
268
|
+
* `boolean`, `number` (written as a Fixnum when it is a safe integer, a Float otherwise),
|
|
269
|
+
* `string` (a Marshal String, unless wrapped in `RubySymbol`), `Array`, `Map` (a Hash, key
|
|
270
|
+
* order preserved), and `RubyObject`.
|
|
271
|
+
*
|
|
272
|
+
* Every value is written fresh rather than reusing Ruby's own backreference scheme for a
|
|
273
|
+
* repeated string, symbol or object - valid Marshal either way, since backreferences are an
|
|
274
|
+
* optional size optimisation, not something a reader is required to produce. A save written
|
|
275
|
+
* this way is larger than Ruby's own `Marshal.dump` would make it, never incorrect.
|
|
276
|
+
* `RubyUserDefined` (a `_dump`/`_load` value) cannot be re-encoded at all, for the same
|
|
277
|
+
* reason `decodeMarshal` cannot interpret its bytes: that per-class binary layout is a
|
|
278
|
+
* second format this module was never taught.
|
|
279
|
+
*/
|
|
280
|
+
export function encodeMarshal(value) {
|
|
281
|
+
const chunks = [MARSHAL_MAJOR, MARSHAL_MINOR];
|
|
282
|
+
writeValue(chunks, value);
|
|
283
|
+
return new Uint8Array(chunks);
|
|
284
|
+
}
|
|
285
|
+
function writeValue(out, value) {
|
|
286
|
+
if (value === null || value === undefined) {
|
|
287
|
+
out.push(char('0'));
|
|
288
|
+
}
|
|
289
|
+
else if (value === true) {
|
|
290
|
+
out.push(char('T'));
|
|
291
|
+
}
|
|
292
|
+
else if (value === false) {
|
|
293
|
+
out.push(char('F'));
|
|
294
|
+
}
|
|
295
|
+
else if (value instanceof RubySymbol) {
|
|
296
|
+
out.push(char(':'));
|
|
297
|
+
writeByteString(out, value.name);
|
|
298
|
+
}
|
|
299
|
+
else if (typeof value === 'number') {
|
|
300
|
+
if (Number.isInteger(value) && Math.abs(value) < 2 ** 30) {
|
|
301
|
+
out.push(char('i'));
|
|
302
|
+
writeFixnum(out, value);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
out.push(char('f'));
|
|
306
|
+
writeByteString(out, Number.isFinite(value) ? String(value) : value > 0 ? 'inf' : value < 0 ? '-inf' : 'nan');
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
else if (typeof value === 'string') {
|
|
310
|
+
out.push(char('"'));
|
|
311
|
+
writeByteString(out, value);
|
|
312
|
+
}
|
|
313
|
+
else if (Array.isArray(value)) {
|
|
314
|
+
out.push(char('['));
|
|
315
|
+
writeFixnum(out, value.length);
|
|
316
|
+
for (const item of value)
|
|
317
|
+
writeValue(out, item);
|
|
318
|
+
}
|
|
319
|
+
else if (value instanceof Map) {
|
|
320
|
+
const hasDefault = hashDefaults.has(value);
|
|
321
|
+
out.push(char(hasDefault ? '}' : '{'));
|
|
322
|
+
writeFixnum(out, value.size);
|
|
323
|
+
for (const [key, entry] of value) {
|
|
324
|
+
writeValue(out, key);
|
|
325
|
+
writeValue(out, entry);
|
|
326
|
+
}
|
|
327
|
+
if (hasDefault)
|
|
328
|
+
writeValue(out, hashDefaults.get(value));
|
|
329
|
+
}
|
|
330
|
+
else if (isRubyObject(value)) {
|
|
331
|
+
out.push(char('o'));
|
|
332
|
+
out.push(char(':'));
|
|
333
|
+
writeByteString(out, value.class);
|
|
334
|
+
const entries = Object.entries(value.ivars);
|
|
335
|
+
writeFixnum(out, entries.length);
|
|
336
|
+
for (const [name, ivarValue] of entries) {
|
|
337
|
+
out.push(char(':'));
|
|
338
|
+
writeByteString(out, name);
|
|
339
|
+
writeValue(out, ivarValue);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
throw new Error(`Marshal: cannot encode a value of type ${typeof value}`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
function char(c) {
|
|
347
|
+
return c.charCodeAt(0);
|
|
348
|
+
}
|
|
349
|
+
function writeByteString(out, text) {
|
|
350
|
+
const bytes = new TextEncoder().encode(text);
|
|
351
|
+
writeFixnum(out, bytes.length);
|
|
352
|
+
for (const byte of bytes)
|
|
353
|
+
out.push(byte);
|
|
354
|
+
}
|
|
355
|
+
/** the inverse of `Reader`'s `readFixnum` - see the module doc for the encoding this mirrors */
|
|
356
|
+
function writeFixnum(out, value) {
|
|
357
|
+
if (value === 0) {
|
|
358
|
+
out.push(0);
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
if (value > 0 && value <= 122) {
|
|
362
|
+
out.push(value + 5);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
if (value < 0 && value >= -123) {
|
|
366
|
+
out.push((value - 5) & 0xff);
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
//falls back to the smallest byte count (1-4) that round-trips through readFixnum
|
|
370
|
+
if (value > 0) {
|
|
371
|
+
for (let n = 1; n <= 4; n++) {
|
|
372
|
+
if (value < 2 ** (8 * n)) {
|
|
373
|
+
out.push(n);
|
|
374
|
+
for (let i = 0; i < n; i++)
|
|
375
|
+
out.push((value >>> (8 * i)) & 0xff);
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
for (let n = 1; n <= 4; n++) {
|
|
382
|
+
if (value >= -(2 ** (8 * n))) {
|
|
383
|
+
out.push((-n) & 0xff);
|
|
384
|
+
const unsigned = value + 2 ** (8 * n);
|
|
385
|
+
for (let i = 0; i < n; i++)
|
|
386
|
+
out.push((unsigned >>> (8 * i)) & 0xff);
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
throw new Error(`Marshal: integer ${value} is out of range for a Fixnum`);
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=Marshal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Marshal.js","sourceRoot":"","sources":["../../src/rpg/Marshal.ts"],"names":[],"mappings":"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"}
|
package/dist/rpg/Quest.d.ts
CHANGED
|
@@ -15,6 +15,17 @@ export interface QuestStage {
|
|
|
15
15
|
};
|
|
16
16
|
/** shown in a quest log's progress readout; `mwg` never reads this itself */
|
|
17
17
|
description?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Where this stage is satisfied, if anywhere in particular - "kill 5 rats" can
|
|
20
|
+
* optionally also say where the rats are. `mwg` only carries this data; turning it into
|
|
21
|
+
* a route or a compass arrow is `roguelike.Pathfinder`'s job (already has everything
|
|
22
|
+
* needed: `find`/`step`/`distanceMap`) plus the game's own presentation.
|
|
23
|
+
*/
|
|
24
|
+
location?: {
|
|
25
|
+
map?: string;
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
};
|
|
18
29
|
}
|
|
19
30
|
export interface QuestDefinition {
|
|
20
31
|
id: string;
|
|
@@ -23,6 +34,15 @@ export interface QuestDefinition {
|
|
|
23
34
|
requires?: string[];
|
|
24
35
|
}
|
|
25
36
|
export type QuestStatus = 'unavailable' | 'available' | 'active' | 'complete';
|
|
37
|
+
/**
|
|
38
|
+
* What an NPC (or anything else tied to a quest) currently has to offer the player, derived
|
|
39
|
+
* the same way `Achievements`' unlocking already is rather than stored separately:
|
|
40
|
+
* `'offer'` if any tied quest could be started, `'turnIn'` if any is active and its current
|
|
41
|
+
* stage is already satisfied (ready to close out, whether or not the player has actually
|
|
42
|
+
* walked up and done so), `'none'` otherwise. The actual `!`, its colour, and where it
|
|
43
|
+
* floats above a sprite stay the game's own art and UI - this is only the derived bit.
|
|
44
|
+
*/
|
|
45
|
+
export type QuestMarker = 'offer' | 'turnIn' | 'none';
|
|
26
46
|
/**
|
|
27
47
|
* Tracks which stage every known quest is on, against `GameState`'s existing switches and
|
|
28
48
|
* variables - not a storage mechanism of its own. A quest's *definition* (its stages, its
|
|
@@ -33,7 +53,24 @@ export declare class QuestLog {
|
|
|
33
53
|
private definitions;
|
|
34
54
|
/** the stage index a started quest is on; absent means not yet started */
|
|
35
55
|
private stageIndex;
|
|
56
|
+
/** the one active quest a game currently points the player towards, if any */
|
|
57
|
+
private tracked;
|
|
36
58
|
define(quest: QuestDefinition): void;
|
|
59
|
+
/** marks `id` as the quest a game currently guides the player towards; `null` to clear it */
|
|
60
|
+
track(id: string | null): void;
|
|
61
|
+
/** the currently tracked quest id, or `null` if none is tracked or it is no longer active */
|
|
62
|
+
trackedQuest(): string | null;
|
|
63
|
+
/** where the tracked quest's current stage is satisfied, if it says anywhere at all */
|
|
64
|
+
trackedLocation(): {
|
|
65
|
+
map?: string;
|
|
66
|
+
x: number;
|
|
67
|
+
y: number;
|
|
68
|
+
} | null;
|
|
69
|
+
/**
|
|
70
|
+
* Derives what an NPC tied to `ids` currently has to offer - see `QuestMarker`. Checking
|
|
71
|
+
* several ids at once covers an NPC that gives one quest and takes in another.
|
|
72
|
+
*/
|
|
73
|
+
markerFor(ids: readonly string[], state: GameState): QuestMarker;
|
|
37
74
|
/** whether every prerequisite is already complete, so the quest could be started */
|
|
38
75
|
canStart(id: string): boolean;
|
|
39
76
|
/** begins a quest; throws if a prerequisite is not yet complete */
|
|
@@ -55,13 +92,17 @@ export declare class QuestLog {
|
|
|
55
92
|
* @returns true if a stage (or the whole quest) completed this call
|
|
56
93
|
*/
|
|
57
94
|
advance(id: string, state: GameState): boolean;
|
|
95
|
+
/** whether the current stage's condition or counter already holds, without advancing it */
|
|
96
|
+
private stageSatisfied;
|
|
58
97
|
private require;
|
|
59
98
|
toJSON(): {
|
|
60
99
|
stageIndex: [string, number][];
|
|
100
|
+
tracked: string | null;
|
|
61
101
|
};
|
|
62
102
|
/** rebuilds a log from save data - `definitions` are supplied fresh, the same as `ITEMS` */
|
|
63
103
|
static fromJSON(definitions: QuestDefinition[], data: {
|
|
64
104
|
stageIndex: [string, number][];
|
|
105
|
+
tracked?: string | null;
|
|
65
106
|
}): QuestLog;
|
|
66
107
|
}
|
|
67
108
|
//# sourceMappingURL=Quest.d.ts.map
|
package/dist/rpg/Quest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quest.d.ts","sourceRoot":"","sources":["../../src/rpg/Quest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IAC1B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAE/C,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Quest.d.ts","sourceRoot":"","sources":["../../src/rpg/Quest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IAC1B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAE/C,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,EAAE,CAAC;IAErB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD;;;;;GAKG;AACH,qBAAa,QAAQ;IACpB,OAAO,CAAC,WAAW,CAAsC;IAEzD,0EAA0E;IAC1E,OAAO,CAAC,UAAU,CAA6B;IAE/C,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAuB;IAEtC,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEnC;IAED,6FAA6F;IAC7F,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAG7B;IAED,6FAA6F;IAC7F,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,uFAAuF;IACvF,eAAe,IAAI;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAG/D;IAED;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,CAI/D;IAED,oFAAoF;IACpF,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAG5B;IAED,mEAAmE;IACnE,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGtB;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAK9B;IAED,uFAAuF;IACvF,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG1C;IAED,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAIpD;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAK7C;IAED,2FAA2F;IAC3F,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,OAAO;IAMf,MAAM,IAAI;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAEnE;IAED,4FAA4F;IAC5F,MAAM,CAAC,QAAQ,CACd,WAAW,EAAE,eAAe,EAAE,EAC9B,IAAI,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAC/D,QAAQ,CAMV;CACD"}
|
package/dist/rpg/Quest.js
CHANGED
|
@@ -10,10 +10,38 @@ export class QuestLog {
|
|
|
10
10
|
this.definitions = new Map();
|
|
11
11
|
/** the stage index a started quest is on; absent means not yet started */
|
|
12
12
|
this.stageIndex = new Map();
|
|
13
|
+
/** the one active quest a game currently points the player towards, if any */
|
|
14
|
+
this.tracked = null;
|
|
13
15
|
}
|
|
14
16
|
define(quest) {
|
|
15
17
|
this.definitions.set(quest.id, quest);
|
|
16
18
|
}
|
|
19
|
+
/** marks `id` as the quest a game currently guides the player towards; `null` to clear it */
|
|
20
|
+
track(id) {
|
|
21
|
+
if (id !== null)
|
|
22
|
+
this.require(id);
|
|
23
|
+
this.tracked = id;
|
|
24
|
+
}
|
|
25
|
+
/** the currently tracked quest id, or `null` if none is tracked or it is no longer active */
|
|
26
|
+
trackedQuest() {
|
|
27
|
+
return this.tracked !== null && this.status(this.tracked) === 'active' ? this.tracked : null;
|
|
28
|
+
}
|
|
29
|
+
/** where the tracked quest's current stage is satisfied, if it says anywhere at all */
|
|
30
|
+
trackedLocation() {
|
|
31
|
+
const id = this.trackedQuest();
|
|
32
|
+
return id ? (this.currentStage(id)?.location ?? null) : null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Derives what an NPC tied to `ids` currently has to offer - see `QuestMarker`. Checking
|
|
36
|
+
* several ids at once covers an NPC that gives one quest and takes in another.
|
|
37
|
+
*/
|
|
38
|
+
markerFor(ids, state) {
|
|
39
|
+
if (ids.some((id) => this.status(id) === 'active' && this.stageSatisfied(id, state)))
|
|
40
|
+
return 'turnIn';
|
|
41
|
+
if (ids.some((id) => this.status(id) === 'available'))
|
|
42
|
+
return 'offer';
|
|
43
|
+
return 'none';
|
|
44
|
+
}
|
|
17
45
|
/** whether every prerequisite is already complete, so the quest could be started */
|
|
18
46
|
canStart(id) {
|
|
19
47
|
const quest = this.require(id);
|
|
@@ -57,18 +85,21 @@ export class QuestLog {
|
|
|
57
85
|
* @returns true if a stage (or the whole quest) completed this call
|
|
58
86
|
*/
|
|
59
87
|
advance(id, state) {
|
|
88
|
+
if (!this.stageSatisfied(id, state))
|
|
89
|
+
return false;
|
|
90
|
+
this.stageIndex.set(id, this.stageIndex.get(id) + 1);
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
/** whether the current stage's condition or counter already holds, without advancing it */
|
|
94
|
+
stageSatisfied(id, state) {
|
|
60
95
|
const stage = this.currentStage(id);
|
|
61
96
|
if (!stage)
|
|
62
97
|
return false;
|
|
63
|
-
|
|
98
|
+
return stage.condition
|
|
64
99
|
? conditionHolds(stage.condition, state)
|
|
65
100
|
: stage.counter
|
|
66
101
|
? state.variable(stage.counter.variable) >= stage.counter.target
|
|
67
102
|
: true;
|
|
68
|
-
if (!done)
|
|
69
|
-
return false;
|
|
70
|
-
this.stageIndex.set(id, this.stageIndex.get(id) + 1);
|
|
71
|
-
return true;
|
|
72
103
|
}
|
|
73
104
|
require(id) {
|
|
74
105
|
const quest = this.definitions.get(id);
|
|
@@ -77,7 +108,7 @@ export class QuestLog {
|
|
|
77
108
|
return quest;
|
|
78
109
|
}
|
|
79
110
|
toJSON() {
|
|
80
|
-
return { stageIndex: [...this.stageIndex] };
|
|
111
|
+
return { stageIndex: [...this.stageIndex], tracked: this.tracked };
|
|
81
112
|
}
|
|
82
113
|
/** rebuilds a log from save data - `definitions` are supplied fresh, the same as `ITEMS` */
|
|
83
114
|
static fromJSON(definitions, data) {
|
|
@@ -86,6 +117,8 @@ export class QuestLog {
|
|
|
86
117
|
log.define(quest);
|
|
87
118
|
for (const [id, index] of data.stageIndex)
|
|
88
119
|
log.stageIndex.set(id, index);
|
|
120
|
+
if (data.tracked)
|
|
121
|
+
log.tracked = data.tracked;
|
|
89
122
|
return log;
|
|
90
123
|
}
|
|
91
124
|
}
|
package/dist/rpg/Quest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quest.js","sourceRoot":"","sources":["../../src/rpg/Quest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAuB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Quest.js","sourceRoot":"","sources":["../../src/rpg/Quest.ts"],"names":[],"mappings":"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"}
|
package/dist/rpg/index.d.ts
CHANGED
|
@@ -9,6 +9,12 @@ export { EventRunner } from './EventRunner.ts';
|
|
|
9
9
|
export type { EventCommand, EventRunnerState, EventRunnerOptions, MoveStep } from './EventRunner.ts';
|
|
10
10
|
export { GridMover } from './GridMover.ts';
|
|
11
11
|
export type { GridMoverOptions, Direction4 } from './GridMover.ts';
|
|
12
|
+
export { FreeMover } from './FreeMover.ts';
|
|
13
|
+
export type { FreeMoverOptions } from './FreeMover.ts';
|
|
14
|
+
export { aabbOverlap, circleOverlap, circleAabbOverlap, resolveAabbAgainstTiles } from './Collision.ts';
|
|
15
|
+
export type { AABB, Circle, SolidTile, ResolveTileMoveOptions } from './Collision.ts';
|
|
12
16
|
export { QuestLog } from './Quest.ts';
|
|
13
|
-
export type { QuestStage, QuestDefinition, QuestStatus } from './Quest.ts';
|
|
17
|
+
export type { QuestStage, QuestDefinition, QuestStatus, QuestMarker } from './Quest.ts';
|
|
18
|
+
export { decodeMarshal, encodeMarshal, RubySymbol, hashDefaultOf, withHashDefault } from './Marshal.ts';
|
|
19
|
+
export type { RubyObject, RubyUserDefined } from './Marshal.ts';
|
|
14
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/rpg/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rpg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3H,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rpg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3H,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACxG,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxG,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/rpg/index.js
CHANGED
|
@@ -4,5 +4,8 @@ export { GameState } from './GameState.js';
|
|
|
4
4
|
export { activePage, conditionHolds } from './Event.js';
|
|
5
5
|
export { EventRunner } from './EventRunner.js';
|
|
6
6
|
export { GridMover } from './GridMover.js';
|
|
7
|
+
export { FreeMover } from './FreeMover.js';
|
|
8
|
+
export { aabbOverlap, circleOverlap, circleAabbOverlap, resolveAabbAgainstTiles } from './Collision.js';
|
|
7
9
|
export { QuestLog } from './Quest.js';
|
|
10
|
+
export { decodeMarshal, encodeMarshal, RubySymbol, hashDefaultOf, withHashDefault } from './Marshal.js';
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
package/dist/rpg/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rpg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rpg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAExG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|