@datamoc/mw_games 0.1.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/LICENSE +373 -0
- package/README.md +327 -0
- package/dist/actors/Advancement.d.ts +73 -0
- package/dist/actors/Advancement.d.ts.map +1 -0
- package/dist/actors/Advancement.js +98 -0
- package/dist/actors/Advancement.js.map +1 -0
- package/dist/actors/Affix.d.ts +44 -0
- package/dist/actors/Affix.d.ts.map +1 -0
- package/dist/actors/Affix.js +35 -0
- package/dist/actors/Affix.js.map +1 -0
- package/dist/actors/Appearances.d.ts +36 -0
- package/dist/actors/Appearances.d.ts.map +1 -0
- package/dist/actors/Appearances.js +50 -0
- package/dist/actors/Appearances.js.map +1 -0
- package/dist/actors/Charges.d.ts +31 -0
- package/dist/actors/Charges.d.ts.map +1 -0
- package/dist/actors/Charges.js +35 -0
- package/dist/actors/Charges.js.map +1 -0
- package/dist/actors/Equipment.d.ts +40 -0
- package/dist/actors/Equipment.d.ts.map +1 -0
- package/dist/actors/Equipment.js +57 -0
- package/dist/actors/Equipment.js.map +1 -0
- package/dist/actors/Inventory.d.ts +50 -0
- package/dist/actors/Inventory.d.ts.map +1 -0
- package/dist/actors/Inventory.js +56 -0
- package/dist/actors/Inventory.js.map +1 -0
- package/dist/actors/ItemState.d.ts +21 -0
- package/dist/actors/ItemState.d.ts.map +1 -0
- package/dist/actors/ItemState.js +34 -0
- package/dist/actors/ItemState.js.map +1 -0
- package/dist/actors/Loot.d.ts +24 -0
- package/dist/actors/Loot.d.ts.map +1 -0
- package/dist/actors/Loot.js +14 -0
- package/dist/actors/Loot.js.map +1 -0
- package/dist/actors/Progression.d.ts +30 -0
- package/dist/actors/Progression.d.ts.map +1 -0
- package/dist/actors/Progression.js +39 -0
- package/dist/actors/Progression.js.map +1 -0
- package/dist/actors/Resource.d.ts +23 -0
- package/dist/actors/Resource.d.ts.map +1 -0
- package/dist/actors/Resource.js +28 -0
- package/dist/actors/Resource.js.map +1 -0
- package/dist/actors/Scaling.d.ts +22 -0
- package/dist/actors/Scaling.d.ts.map +1 -0
- package/dist/actors/Scaling.js +9 -0
- package/dist/actors/Scaling.js.map +1 -0
- package/dist/actors/Shop.d.ts +25 -0
- package/dist/actors/Shop.d.ts.map +1 -0
- package/dist/actors/Shop.js +33 -0
- package/dist/actors/Shop.js.map +1 -0
- package/dist/actors/SkillPoints.d.ts +45 -0
- package/dist/actors/SkillPoints.d.ts.map +1 -0
- package/dist/actors/SkillPoints.js +58 -0
- package/dist/actors/SkillPoints.js.map +1 -0
- package/dist/actors/StatBlock.d.ts +52 -0
- package/dist/actors/StatBlock.d.ts.map +1 -0
- package/dist/actors/StatBlock.js +80 -0
- package/dist/actors/StatBlock.js.map +1 -0
- package/dist/actors/StatusEffect.d.ts +38 -0
- package/dist/actors/StatusEffect.d.ts.map +1 -0
- package/dist/actors/StatusEffect.js +28 -0
- package/dist/actors/StatusEffect.js.map +1 -0
- package/dist/actors/craft.d.ts +26 -0
- package/dist/actors/craft.d.ts.map +1 -0
- package/dist/actors/craft.js +34 -0
- package/dist/actors/craft.js.map +1 -0
- package/dist/actors/index.d.ts +33 -0
- package/dist/actors/index.d.ts.map +1 -0
- package/dist/actors/index.js +18 -0
- package/dist/actors/index.js.map +1 -0
- package/dist/actors/skillCheck.d.ts +13 -0
- package/dist/actors/skillCheck.d.ts.map +1 -0
- package/dist/actors/skillCheck.js +16 -0
- package/dist/actors/skillCheck.js.map +1 -0
- package/dist/assets/index.d.ts +37 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +62 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/audio/Music.d.ts +22 -0
- package/dist/audio/Music.d.ts.map +1 -0
- package/dist/audio/Music.js +67 -0
- package/dist/audio/Music.js.map +1 -0
- package/dist/audio/Playable.d.ts +16 -0
- package/dist/audio/Playable.d.ts.map +1 -0
- package/dist/audio/Playable.js +6 -0
- package/dist/audio/Playable.js.map +1 -0
- package/dist/audio/Sound.d.ts +23 -0
- package/dist/audio/Sound.d.ts.map +1 -0
- package/dist/audio/Sound.js +30 -0
- package/dist/audio/Sound.js.map +1 -0
- package/dist/audio/index.d.ts +7 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +4 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/battle/BattleAI.d.ts +24 -0
- package/dist/battle/BattleAI.d.ts.map +1 -0
- package/dist/battle/BattleAI.js +47 -0
- package/dist/battle/BattleAI.js.map +1 -0
- package/dist/battle/Evolution.d.ts +22 -0
- package/dist/battle/Evolution.d.ts.map +1 -0
- package/dist/battle/Evolution.js +25 -0
- package/dist/battle/Evolution.js.map +1 -0
- package/dist/battle/Field.d.ts +25 -0
- package/dist/battle/Field.d.ts.map +1 -0
- package/dist/battle/Field.js +31 -0
- package/dist/battle/Field.js.map +1 -0
- package/dist/battle/Hooks.d.ts +29 -0
- package/dist/battle/Hooks.d.ts.map +1 -0
- package/dist/battle/Hooks.js +20 -0
- package/dist/battle/Hooks.js.map +1 -0
- package/dist/battle/Move.d.ts +32 -0
- package/dist/battle/Move.d.ts.map +1 -0
- package/dist/battle/Move.js +10 -0
- package/dist/battle/Move.js.map +1 -0
- package/dist/battle/Party.d.ts +21 -0
- package/dist/battle/Party.d.ts.map +1 -0
- package/dist/battle/Party.js +49 -0
- package/dist/battle/Party.js.map +1 -0
- package/dist/battle/Species.d.ts +40 -0
- package/dist/battle/Species.d.ts.map +1 -0
- package/dist/battle/Species.js +31 -0
- package/dist/battle/Species.js.map +1 -0
- package/dist/battle/StatStages.d.ts +38 -0
- package/dist/battle/StatStages.d.ts.map +1 -0
- package/dist/battle/StatStages.js +50 -0
- package/dist/battle/StatStages.js.map +1 -0
- package/dist/battle/TypeMatrix.d.ts +14 -0
- package/dist/battle/TypeMatrix.d.ts.map +1 -0
- package/dist/battle/TypeMatrix.js +24 -0
- package/dist/battle/TypeMatrix.js.map +1 -0
- package/dist/battle/index.d.ts +16 -0
- package/dist/battle/index.d.ts.map +1 -0
- package/dist/battle/index.js +10 -0
- package/dist/battle/index.js.map +1 -0
- package/dist/board/Classics.d.ts +123 -0
- package/dist/board/Classics.d.ts.map +1 -0
- package/dist/board/Classics.js +260 -0
- package/dist/board/Classics.js.map +1 -0
- package/dist/board/Engine.d.ts +23 -0
- package/dist/board/Engine.d.ts.map +1 -0
- package/dist/board/Engine.js +87 -0
- package/dist/board/Engine.js.map +1 -0
- package/dist/board/Tactics.d.ts +46 -0
- package/dist/board/Tactics.d.ts.map +1 -0
- package/dist/board/Tactics.js +108 -0
- package/dist/board/Tactics.js.map +1 -0
- package/dist/board/chess.d.ts +67 -0
- package/dist/board/chess.d.ts.map +1 -0
- package/dist/board/chess.js +439 -0
- package/dist/board/chess.js.map +1 -0
- package/dist/board/index.d.ts +9 -0
- package/dist/board/index.d.ts.map +1 -0
- package/dist/board/index.js +5 -0
- package/dist/board/index.js.map +1 -0
- package/dist/core/Achievements.d.ts +53 -0
- package/dist/core/Achievements.d.ts.map +1 -0
- package/dist/core/Achievements.js +80 -0
- package/dist/core/Achievements.js.map +1 -0
- package/dist/core/Collection.d.ts +46 -0
- package/dist/core/Collection.d.ts.map +1 -0
- package/dist/core/Collection.js +61 -0
- package/dist/core/Collection.js.map +1 -0
- package/dist/core/Game.d.ts +115 -0
- package/dist/core/Game.d.ts.map +1 -0
- package/dist/core/Game.js +236 -0
- package/dist/core/Game.js.map +1 -0
- package/dist/core/Hex.d.ts +45 -0
- package/dist/core/Hex.d.ts.map +1 -0
- package/dist/core/Hex.js +120 -0
- package/dist/core/Hex.js.map +1 -0
- package/dist/core/Input.d.ts +41 -0
- package/dist/core/Input.d.ts.map +1 -0
- package/dist/core/Input.js +132 -0
- package/dist/core/Input.js.map +1 -0
- package/dist/core/Log.d.ts +39 -0
- package/dist/core/Log.d.ts.map +1 -0
- package/dist/core/Log.js +50 -0
- package/dist/core/Log.js.map +1 -0
- package/dist/core/Random.d.ts +64 -0
- package/dist/core/Random.d.ts.map +1 -0
- package/dist/core/Random.js +178 -0
- package/dist/core/Random.js.map +1 -0
- package/dist/core/Replay.d.ts +71 -0
- package/dist/core/Replay.d.ts.map +1 -0
- package/dist/core/Replay.js +102 -0
- package/dist/core/Replay.js.map +1 -0
- package/dist/core/Save.d.ts +52 -0
- package/dist/core/Save.d.ts.map +1 -0
- package/dist/core/Save.js +81 -0
- package/dist/core/Save.js.map +1 -0
- package/dist/core/Scene.d.ts +40 -0
- package/dist/core/Scene.d.ts.map +1 -0
- package/dist/core/Scene.js +56 -0
- package/dist/core/Scene.js.map +1 -0
- package/dist/core/SceneStack.d.ts +37 -0
- package/dist/core/SceneStack.d.ts.map +1 -0
- package/dist/core/SceneStack.js +67 -0
- package/dist/core/SceneStack.js.map +1 -0
- package/dist/core/Signal.d.ts +24 -0
- package/dist/core/Signal.d.ts.map +1 -0
- package/dist/core/Signal.js +41 -0
- package/dist/core/Signal.js.map +1 -0
- package/dist/core/index.d.ts +23 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/i18n/index.d.ts +51 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +74 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/mw_games.global.js +993 -0
- package/dist/render/ActorAnimator.d.ts +60 -0
- package/dist/render/ActorAnimator.d.ts.map +1 -0
- package/dist/render/ActorAnimator.js +76 -0
- package/dist/render/ActorAnimator.js.map +1 -0
- package/dist/render/AnimatedSprite.d.ts +57 -0
- package/dist/render/AnimatedSprite.d.ts.map +1 -0
- package/dist/render/AnimatedSprite.js +105 -0
- package/dist/render/AnimatedSprite.js.map +1 -0
- package/dist/render/Autotile.d.ts +42 -0
- package/dist/render/Autotile.d.ts.map +1 -0
- package/dist/render/Autotile.js +117 -0
- package/dist/render/Autotile.js.map +1 -0
- package/dist/render/Camera.d.ts +88 -0
- package/dist/render/Camera.d.ts.map +1 -0
- package/dist/render/Camera.js +145 -0
- package/dist/render/Camera.js.map +1 -0
- package/dist/render/ColorTransformBatcher.d.ts +57 -0
- package/dist/render/ColorTransformBatcher.d.ts.map +1 -0
- package/dist/render/ColorTransformBatcher.js +212 -0
- package/dist/render/ColorTransformBatcher.js.map +1 -0
- package/dist/render/LayeredSprite.d.ts +27 -0
- package/dist/render/LayeredSprite.d.ts.map +1 -0
- package/dist/render/LayeredSprite.js +53 -0
- package/dist/render/LayeredSprite.js.map +1 -0
- package/dist/render/Projectile.d.ts +37 -0
- package/dist/render/Projectile.d.ts.map +1 -0
- package/dist/render/Projectile.js +50 -0
- package/dist/render/Projectile.js.map +1 -0
- package/dist/render/SpriteSheet.d.ts +38 -0
- package/dist/render/SpriteSheet.d.ts.map +1 -0
- package/dist/render/SpriteSheet.js +79 -0
- package/dist/render/SpriteSheet.js.map +1 -0
- package/dist/render/TileMap.d.ts +188 -0
- package/dist/render/TileMap.d.ts.map +1 -0
- package/dist/render/TileMap.js +488 -0
- package/dist/render/TileMap.js.map +1 -0
- package/dist/render/TintedSprite.d.ts +47 -0
- package/dist/render/TintedSprite.d.ts.map +1 -0
- package/dist/render/TintedSprite.js +173 -0
- package/dist/render/TintedSprite.js.map +1 -0
- package/dist/render/index.d.ts +18 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +11 -0
- package/dist/render/index.js.map +1 -0
- package/dist/roguelike/Blob.d.ts +46 -0
- package/dist/roguelike/Blob.d.ts.map +1 -0
- package/dist/roguelike/Blob.js +98 -0
- package/dist/roguelike/Blob.js.map +1 -0
- package/dist/roguelike/Boss.d.ts +67 -0
- package/dist/roguelike/Boss.d.ts.map +1 -0
- package/dist/roguelike/Boss.js +114 -0
- package/dist/roguelike/Boss.js.map +1 -0
- package/dist/roguelike/Combat.d.ts +23 -0
- package/dist/roguelike/Combat.d.ts.map +1 -0
- package/dist/roguelike/Combat.js +27 -0
- package/dist/roguelike/Combat.js.map +1 -0
- package/dist/roguelike/Doors.d.ts +60 -0
- package/dist/roguelike/Doors.d.ts.map +1 -0
- package/dist/roguelike/Doors.js +102 -0
- package/dist/roguelike/Doors.js.map +1 -0
- package/dist/roguelike/Elevation.d.ts +26 -0
- package/dist/roguelike/Elevation.d.ts.map +1 -0
- package/dist/roguelike/Elevation.js +37 -0
- package/dist/roguelike/Elevation.js.map +1 -0
- package/dist/roguelike/FieldOfView.d.ts +72 -0
- package/dist/roguelike/FieldOfView.d.ts.map +1 -0
- package/dist/roguelike/FieldOfView.js +134 -0
- package/dist/roguelike/FieldOfView.js.map +1 -0
- package/dist/roguelike/Level.d.ts +96 -0
- package/dist/roguelike/Level.d.ts.map +1 -0
- package/dist/roguelike/Level.js +137 -0
- package/dist/roguelike/Level.js.map +1 -0
- package/dist/roguelike/MonsterAI.d.ts +40 -0
- package/dist/roguelike/MonsterAI.d.ts.map +1 -0
- package/dist/roguelike/MonsterAI.js +69 -0
- package/dist/roguelike/MonsterAI.js.map +1 -0
- package/dist/roguelike/Pathfinder.d.ts +82 -0
- package/dist/roguelike/Pathfinder.d.ts.map +1 -0
- package/dist/roguelike/Pathfinder.js +192 -0
- package/dist/roguelike/Pathfinder.js.map +1 -0
- package/dist/roguelike/Scheduler.d.ts +45 -0
- package/dist/roguelike/Scheduler.d.ts.map +1 -0
- package/dist/roguelike/Scheduler.js +82 -0
- package/dist/roguelike/Scheduler.js.map +1 -0
- package/dist/roguelike/Secrets.d.ts +44 -0
- package/dist/roguelike/Secrets.d.ts.map +1 -0
- package/dist/roguelike/Secrets.js +64 -0
- package/dist/roguelike/Secrets.js.map +1 -0
- package/dist/roguelike/Targeting.d.ts +66 -0
- package/dist/roguelike/Targeting.d.ts.map +1 -0
- package/dist/roguelike/Targeting.js +150 -0
- package/dist/roguelike/Targeting.js.map +1 -0
- package/dist/roguelike/generate.d.ts +44 -0
- package/dist/roguelike/generate.d.ts.map +1 -0
- package/dist/roguelike/generate.js +88 -0
- package/dist/roguelike/generate.js.map +1 -0
- package/dist/roguelike/index.d.ts +23 -0
- package/dist/roguelike/index.d.ts.map +1 -0
- package/dist/roguelike/index.js +15 -0
- package/dist/roguelike/index.js.map +1 -0
- package/dist/rpg/Event.d.ts +33 -0
- package/dist/rpg/Event.d.ts.map +1 -0
- package/dist/rpg/Event.js +19 -0
- package/dist/rpg/Event.js.map +1 -0
- package/dist/rpg/EventRunner.d.ts +72 -0
- package/dist/rpg/EventRunner.d.ts.map +1 -0
- package/dist/rpg/EventRunner.js +76 -0
- package/dist/rpg/EventRunner.js.map +1 -0
- package/dist/rpg/GameState.d.ts +22 -0
- package/dist/rpg/GameState.d.ts.map +1 -0
- package/dist/rpg/GameState.js +35 -0
- package/dist/rpg/GameState.js.map +1 -0
- package/dist/rpg/GridMover.d.ts +51 -0
- package/dist/rpg/GridMover.d.ts.map +1 -0
- package/dist/rpg/GridMover.js +91 -0
- package/dist/rpg/GridMover.js.map +1 -0
- package/dist/rpg/Quest.d.ts +67 -0
- package/dist/rpg/Quest.d.ts.map +1 -0
- package/dist/rpg/Quest.js +92 -0
- package/dist/rpg/Quest.js.map +1 -0
- package/dist/rpg/TiledMap.d.ts +107 -0
- package/dist/rpg/TiledMap.d.ts.map +1 -0
- package/dist/rpg/TiledMap.js +123 -0
- package/dist/rpg/TiledMap.js.map +1 -0
- package/dist/rpg/automap.d.ts +40 -0
- package/dist/rpg/automap.d.ts.map +1 -0
- package/dist/rpg/automap.js +81 -0
- package/dist/rpg/automap.js.map +1 -0
- package/dist/rpg/index.d.ts +14 -0
- package/dist/rpg/index.d.ts.map +1 -0
- package/dist/rpg/index.js +8 -0
- package/dist/rpg/index.js.map +1 -0
- package/dist/stage/DialogueStage.d.ts +75 -0
- package/dist/stage/DialogueStage.d.ts.map +1 -0
- package/dist/stage/DialogueStage.js +207 -0
- package/dist/stage/DialogueStage.js.map +1 -0
- package/dist/stage/index.d.ts +7 -0
- package/dist/stage/index.d.ts.map +1 -0
- package/dist/stage/index.js +4 -0
- package/dist/stage/index.js.map +1 -0
- package/dist/stage/script.d.ts +111 -0
- package/dist/stage/script.d.ts.map +1 -0
- package/dist/stage/script.js +133 -0
- package/dist/stage/script.js.map +1 -0
- package/dist/stage/twee.d.ts +42 -0
- package/dist/stage/twee.d.ts.map +1 -0
- package/dist/stage/twee.js +169 -0
- package/dist/stage/twee.js.map +1 -0
- package/dist/ui/IconGrid.d.ts +110 -0
- package/dist/ui/IconGrid.d.ts.map +1 -0
- package/dist/ui/IconGrid.js +284 -0
- package/dist/ui/IconGrid.js.map +1 -0
- package/dist/ui/Label.d.ts +26 -0
- package/dist/ui/Label.d.ts.map +1 -0
- package/dist/ui/Label.js +41 -0
- package/dist/ui/Label.js.map +1 -0
- package/dist/ui/ListView.d.ts +67 -0
- package/dist/ui/ListView.d.ts.map +1 -0
- package/dist/ui/ListView.js +167 -0
- package/dist/ui/ListView.js.map +1 -0
- package/dist/ui/MessageBox.d.ts +66 -0
- package/dist/ui/MessageBox.d.ts.map +1 -0
- package/dist/ui/MessageBox.js +161 -0
- package/dist/ui/MessageBox.js.map +1 -0
- package/dist/ui/NinePatch.d.ts +34 -0
- package/dist/ui/NinePatch.d.ts.map +1 -0
- package/dist/ui/NinePatch.js +45 -0
- package/dist/ui/NinePatch.js.map +1 -0
- package/dist/ui/VerticalLabel.d.ts +46 -0
- package/dist/ui/VerticalLabel.d.ts.map +1 -0
- package/dist/ui/VerticalLabel.js +81 -0
- package/dist/ui/VerticalLabel.js.map +1 -0
- package/dist/ui/Window.d.ts +71 -0
- package/dist/ui/Window.d.ts.map +1 -0
- package/dist/ui/Window.js +126 -0
- package/dist/ui/Window.js.map +1 -0
- package/dist/ui/WindowStack.d.ts +40 -0
- package/dist/ui/WindowStack.d.ts.map +1 -0
- package/dist/ui/WindowStack.js +106 -0
- package/dist/ui/WindowStack.js.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +10 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/theme.d.ts +50 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +36 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/world/Encounters.d.ts +20 -0
- package/dist/world/Encounters.d.ts.map +1 -0
- package/dist/world/Encounters.js +9 -0
- package/dist/world/Encounters.js.map +1 -0
- package/dist/world/Overworld.d.ts +25 -0
- package/dist/world/Overworld.d.ts.map +1 -0
- package/dist/world/Overworld.js +26 -0
- package/dist/world/Overworld.js.map +1 -0
- package/dist/world/TurnClock.d.ts +25 -0
- package/dist/world/TurnClock.d.ts.map +1 -0
- package/dist/world/TurnClock.js +33 -0
- package/dist/world/TurnClock.js.map +1 -0
- package/dist/world/World.d.ts +50 -0
- package/dist/world/World.d.ts.map +1 -0
- package/dist/world/World.js +77 -0
- package/dist/world/World.js.map +1 -0
- package/dist/world/index.d.ts +8 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +5 -0
- package/dist/world/index.js.map +1 -0
- package/package.json +76 -0
- package/tools/compile-resources.mjs +129 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Texture } from 'pixi.js';
|
|
2
|
+
/**
|
|
3
|
+
* A texture cut into numbered frames.
|
|
4
|
+
*
|
|
5
|
+
* Nearly every sheet in a tile-based game is a regular grid, so `grid` covers the common
|
|
6
|
+
* case and `name` labels the frames that matter. Frames are cut once and cached: asking
|
|
7
|
+
* for the same index twice returns the same Texture, so sprites sharing a frame also share
|
|
8
|
+
* a texture and stay in one batch.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SpriteSheet {
|
|
11
|
+
readonly texture: Texture;
|
|
12
|
+
readonly frameWidth: number;
|
|
13
|
+
readonly frameHeight: number;
|
|
14
|
+
readonly columns: number;
|
|
15
|
+
readonly rows: number;
|
|
16
|
+
private frames;
|
|
17
|
+
private names;
|
|
18
|
+
private constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Cuts a loaded texture into a grid, numbered left to right then top to bottom.
|
|
21
|
+
*
|
|
22
|
+
* @param path the asset path the texture was loaded with
|
|
23
|
+
*/
|
|
24
|
+
static grid(path: string, frameWidth: number, frameHeight?: number): SpriteSheet;
|
|
25
|
+
static fromTexture(texture: Texture, frameWidth: number, frameHeight?: number): SpriteSheet;
|
|
26
|
+
get count(): number;
|
|
27
|
+
/** gives a frame a name, so game code reads `sheet.get('door')` rather than `sheet.get(6)` */
|
|
28
|
+
name(name: string, index: number): this;
|
|
29
|
+
/** names several frames at once, from a plain object of name to index */
|
|
30
|
+
nameAll(names: Readonly<Record<string, number>>): this;
|
|
31
|
+
indexOf(name: string): number;
|
|
32
|
+
get(frame: number | string): Texture;
|
|
33
|
+
/** a run of consecutive frames, the usual way an animation is laid out */
|
|
34
|
+
range(from: number, to: number): Texture[];
|
|
35
|
+
/** specific frames, for an animation that holds or ping-pongs */
|
|
36
|
+
pick(...frames: Array<number | string>): Texture[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=SpriteSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteSheet.d.ts","sourceRoot":"","sources":["../../src/render/SpriteSheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,SAAS,CAAC;AAG7C;;;;;;;GAOG;AACH,qBAAa,WAAW;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,eAMN;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,SAAa,GAAG,WAAW,CAEnF;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,SAAa,GAAG,WAAW,CAE9F;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,8FAA8F;IAC9F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtC;IAED,yEAAyE;IACzE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAGrD;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5B;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAsBnC;IAED,0EAA0E;IAC1E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,EAAE,CAIzC;IAED,iEAAiE;IACjE,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,EAAE,CAEjD;CACD"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Rectangle, Texture } from 'pixi.js';
|
|
2
|
+
import * as Resources from '../assets/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* A texture cut into numbered frames.
|
|
5
|
+
*
|
|
6
|
+
* Nearly every sheet in a tile-based game is a regular grid, so `grid` covers the common
|
|
7
|
+
* case and `name` labels the frames that matter. Frames are cut once and cached: asking
|
|
8
|
+
* for the same index twice returns the same Texture, so sprites sharing a frame also share
|
|
9
|
+
* a texture and stay in one batch.
|
|
10
|
+
*/
|
|
11
|
+
export class SpriteSheet {
|
|
12
|
+
constructor(texture, frameWidth, frameHeight) {
|
|
13
|
+
this.frames = new Map();
|
|
14
|
+
this.names = new Map();
|
|
15
|
+
this.texture = texture;
|
|
16
|
+
this.frameWidth = frameWidth;
|
|
17
|
+
this.frameHeight = frameHeight;
|
|
18
|
+
this.columns = Math.floor(texture.width / frameWidth);
|
|
19
|
+
this.rows = Math.floor(texture.height / frameHeight);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Cuts a loaded texture into a grid, numbered left to right then top to bottom.
|
|
23
|
+
*
|
|
24
|
+
* @param path the asset path the texture was loaded with
|
|
25
|
+
*/
|
|
26
|
+
static grid(path, frameWidth, frameHeight = frameWidth) {
|
|
27
|
+
return new SpriteSheet(Resources.texture(path), frameWidth, frameHeight);
|
|
28
|
+
}
|
|
29
|
+
static fromTexture(texture, frameWidth, frameHeight = frameWidth) {
|
|
30
|
+
return new SpriteSheet(texture, frameWidth, frameHeight);
|
|
31
|
+
}
|
|
32
|
+
get count() {
|
|
33
|
+
return this.columns * this.rows;
|
|
34
|
+
}
|
|
35
|
+
/** gives a frame a name, so game code reads `sheet.get('door')` rather than `sheet.get(6)` */
|
|
36
|
+
name(name, index) {
|
|
37
|
+
this.names.set(name, index);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/** names several frames at once, from a plain object of name to index */
|
|
41
|
+
nameAll(names) {
|
|
42
|
+
for (const [key, index] of Object.entries(names))
|
|
43
|
+
this.names.set(key, index);
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
indexOf(name) {
|
|
47
|
+
const index = this.names.get(name);
|
|
48
|
+
if (index === undefined)
|
|
49
|
+
throw new Error(`this sheet has no frame named "${name}"`);
|
|
50
|
+
return index;
|
|
51
|
+
}
|
|
52
|
+
get(frame) {
|
|
53
|
+
const index = typeof frame === 'string' ? this.indexOf(frame) : frame;
|
|
54
|
+
const cached = this.frames.get(index);
|
|
55
|
+
if (cached)
|
|
56
|
+
return cached;
|
|
57
|
+
if (index < 0 || index >= this.count) {
|
|
58
|
+
throw new Error(`frame ${index} is outside this sheet, which holds ${this.count}`);
|
|
59
|
+
}
|
|
60
|
+
const texture = new Texture({
|
|
61
|
+
source: this.texture.source,
|
|
62
|
+
frame: new Rectangle((index % this.columns) * this.frameWidth, Math.floor(index / this.columns) * this.frameHeight, this.frameWidth, this.frameHeight),
|
|
63
|
+
});
|
|
64
|
+
this.frames.set(index, texture);
|
|
65
|
+
return texture;
|
|
66
|
+
}
|
|
67
|
+
/** a run of consecutive frames, the usual way an animation is laid out */
|
|
68
|
+
range(from, to) {
|
|
69
|
+
const out = [];
|
|
70
|
+
for (let i = from; i <= to; i++)
|
|
71
|
+
out.push(this.get(i));
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/** specific frames, for an animation that holds or ping-pongs */
|
|
75
|
+
pick(...frames) {
|
|
76
|
+
return frames.map((frame) => this.get(frame));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=SpriteSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteSheet.js","sourceRoot":"","sources":["../../src/render/SpriteSheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { Container } from 'pixi.js';
|
|
2
|
+
import type { SpriteSheet } from './SpriteSheet.ts';
|
|
3
|
+
import type { Camera } from './Camera.ts';
|
|
4
|
+
/** the frame value meaning "nothing here"; a cell holding it gets no sprite at all */
|
|
5
|
+
export declare const EMPTY = -1;
|
|
6
|
+
/**
|
|
7
|
+
* Packs a (sheet, frame) pair into one cell value, for a `TileMap` built over
|
|
8
|
+
* several sheets - a map whose tiles come from more than one Tiled tileset.
|
|
9
|
+
*
|
|
10
|
+
* Single-sheet maps never need this: a plain frame index already decodes as
|
|
11
|
+
* sheet 0, so every existing call site keeps working unchanged.
|
|
12
|
+
*/
|
|
13
|
+
export declare function tileFrame(sheet: number, frame: number): number;
|
|
14
|
+
/** the sheet half of a `tileFrame` pack, or 0 for a plain frame index */
|
|
15
|
+
export declare function tileFrameSheet(packed: number): number;
|
|
16
|
+
/** the frame half of a `tileFrame` pack, or the value itself for a plain index */
|
|
17
|
+
export declare function tileFrameIndex(packed: number): number;
|
|
18
|
+
export interface TileMapOptions {
|
|
19
|
+
/** in tiles */
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
/**
|
|
23
|
+
* The sheet tiles are drawn from, or one per tileset when a map mixes
|
|
24
|
+
* several. Cells then hold `tileFrame` packs rather than plain indices -
|
|
25
|
+
* see `tileFrame`. The first sheet sets the default tile size.
|
|
26
|
+
*/
|
|
27
|
+
sheet: SpriteSheet | readonly SpriteSheet[];
|
|
28
|
+
/** in world units; defaults to the sheet's frame size, which is the usual case */
|
|
29
|
+
tileWidth?: number;
|
|
30
|
+
tileHeight?: number;
|
|
31
|
+
/**
|
|
32
|
+
* How a cell's grid position becomes a pixel position.
|
|
33
|
+
*
|
|
34
|
+
* `'hex'` is the one that also changes which cells are neighbours - it is the same
|
|
35
|
+
* `shape` a `Level` can be given, and the two must agree for a hex map to make sense.
|
|
36
|
+
* `'isometric'` and `'staggered'` are pixel-only: the grid underneath is still an
|
|
37
|
+
* ordinary square one (four or eight neighbours, whatever a game's `Level` already is),
|
|
38
|
+
* this only changes where each cell draws - which is the whole difference between them
|
|
39
|
+
* and hex, and why `Level` has no equivalent option for either.
|
|
40
|
+
*/
|
|
41
|
+
shape?: 'square' | 'hex' | 'isometric' | 'staggered';
|
|
42
|
+
/**
|
|
43
|
+
* Tiles per chunk, per side.
|
|
44
|
+
*
|
|
45
|
+
* The map is cut into square chunks so that culling can switch off a whole block at
|
|
46
|
+
* once instead of testing every tile. 16 keeps chunks small enough to cull tightly
|
|
47
|
+
* and large enough that there are not many of them.
|
|
48
|
+
*/
|
|
49
|
+
chunkSize?: number;
|
|
50
|
+
/**
|
|
51
|
+
* Pixels of lift per elevation level; defaults to half a tile, the classic
|
|
52
|
+
* isometric block proportion. A cell raised to height `h` draws its top
|
|
53
|
+
* `h` steps higher, with side faces filling the bands between.
|
|
54
|
+
*/
|
|
55
|
+
heightStep?: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A grid of tiles, drawn as sprites.
|
|
59
|
+
*
|
|
60
|
+
* Layers stack in the order they are added: a floor, then whatever stands on it, then a
|
|
61
|
+
* roof. Every layer shares one grid, so a cell's lighting applies to all of them at once —
|
|
62
|
+
* which is what fog of war needs, since an unseen floor and the wall on it have to dim
|
|
63
|
+
* together.
|
|
64
|
+
*
|
|
65
|
+
* The map is chunked and culled against the camera, so its cost tracks what is on screen
|
|
66
|
+
* rather than how large the map is.
|
|
67
|
+
*
|
|
68
|
+
* Cells can also carry an elevation (`setCellHeight`): the top tile moves up by one
|
|
69
|
+
* `heightStep` per level, and on the diamond projections (isometric, staggered) each
|
|
70
|
+
* level grows two shaded side faces, the classic raised-block look. `tileCenter`
|
|
71
|
+
* rides along, so whoever stands on the cell stands on top of it.
|
|
72
|
+
*/
|
|
73
|
+
export declare class TileMap extends Container {
|
|
74
|
+
readonly widthInTiles: number;
|
|
75
|
+
readonly heightInTiles: number;
|
|
76
|
+
readonly tileWidth: number;
|
|
77
|
+
readonly tileHeight: number;
|
|
78
|
+
readonly shape: 'square' | 'hex' | 'isometric' | 'staggered';
|
|
79
|
+
/** pixels of lift per elevation level */
|
|
80
|
+
readonly heightStep: number;
|
|
81
|
+
private sheets;
|
|
82
|
+
private layers;
|
|
83
|
+
private layersByName;
|
|
84
|
+
private chunkSize;
|
|
85
|
+
private chunkColumns;
|
|
86
|
+
private chunkRows;
|
|
87
|
+
private chunks;
|
|
88
|
+
private cellTint;
|
|
89
|
+
private cellAdd;
|
|
90
|
+
private cellHeight;
|
|
91
|
+
private faces;
|
|
92
|
+
constructor(options: TileMapOptions);
|
|
93
|
+
get layerCount(): number;
|
|
94
|
+
/** world size, for setting camera bounds */
|
|
95
|
+
get worldWidth(): number;
|
|
96
|
+
get worldHeight(): number;
|
|
97
|
+
inside(x: number, y: number): boolean;
|
|
98
|
+
private index;
|
|
99
|
+
/**
|
|
100
|
+
* Adds a layer on top of the existing ones.
|
|
101
|
+
*
|
|
102
|
+
* @param data one frame index per cell, row-major, `EMPTY` for a blank cell. A missing
|
|
103
|
+
* array makes an empty layer to fill in later. On a multi-sheet map the values are
|
|
104
|
+
* `tileFrame` packs rather than plain indices.
|
|
105
|
+
*/
|
|
106
|
+
addLayer(name: string, data?: ArrayLike<number>): this;
|
|
107
|
+
private layerAt;
|
|
108
|
+
private chunkIndex;
|
|
109
|
+
/** the centre of a cell's tile, before the projections below settle on a shared contract */
|
|
110
|
+
private projectedCenter;
|
|
111
|
+
/** the cell under a pixel position - the inverse of `projectedCenter` */
|
|
112
|
+
private projectedTile;
|
|
113
|
+
/** top-left corner of a cell, in world units - where a sprite anchored at (0,0) belongs */
|
|
114
|
+
private cellOrigin;
|
|
115
|
+
/** resolves a cell value to a texture: plain indices read sheet 0, packs read their sheet */
|
|
116
|
+
private textureFor;
|
|
117
|
+
private buildSprite;
|
|
118
|
+
getTile(layer: string | number, x: number, y: number): number;
|
|
119
|
+
setTile(layer: string | number, x: number, y: number, frame: number): void;
|
|
120
|
+
/** fills a whole layer at once, which is what loading a map does */
|
|
121
|
+
setLayerData(layer: string | number, data: ArrayLike<number>): void;
|
|
122
|
+
/**
|
|
123
|
+
* Colours one cell across every layer.
|
|
124
|
+
*
|
|
125
|
+
* This is the fog-of-war and lighting hook. `tint` multiplies, so it darkens; `add` is
|
|
126
|
+
* the additive term, which is what lets an unseen-but-remembered tile wash out towards
|
|
127
|
+
* grey rather than merely going dark. Side faces take the tint but not the add -
|
|
128
|
+
* plain geometry has no batcher of its own to carry it.
|
|
129
|
+
*/
|
|
130
|
+
setCellColor(x: number, y: number, tint: number, add?: number): void;
|
|
131
|
+
getCellTint(x: number, y: number): number;
|
|
132
|
+
/** resets every cell to undimmed */
|
|
133
|
+
clearColors(): void;
|
|
134
|
+
/**
|
|
135
|
+
* Raises or lowers one cell, in whole levels.
|
|
136
|
+
*
|
|
137
|
+
* Every layer's top tile moves up by one `heightStep` per level, and on the
|
|
138
|
+
* diamond projections a raised cell grows two shaded side faces per level -
|
|
139
|
+
* the left and right walls of the block, drawn into the bottom layer's chunk
|
|
140
|
+
* behind the cell's own top, so rows in front still overlap correctly. Square
|
|
141
|
+
* and hex cells lift without faces. A cell with no bottom-layer tile grows no
|
|
142
|
+
* faces: nothing to be the side of. Negative heights sink the top with no
|
|
143
|
+
* faces - pits are a hole, not an inverted block.
|
|
144
|
+
*
|
|
145
|
+
* The usual source is an `Elevation`: `map.setCellHeight(x, y,
|
|
146
|
+
* elevation.heightAt(x, y))` over every cell, after the layers are added.
|
|
147
|
+
*/
|
|
148
|
+
setCellHeight(x: number, y: number, height: number): void;
|
|
149
|
+
/** the elevation of a cell in whole levels; off the map reads as ground */
|
|
150
|
+
getCellHeight(x: number, y: number): number;
|
|
151
|
+
/** how many cells currently draw side faces, for a debug overlay */
|
|
152
|
+
get faceCount(): number;
|
|
153
|
+
/** rebuilds or removes one cell's faces to match its height and bottom tile */
|
|
154
|
+
private syncFaces;
|
|
155
|
+
/**
|
|
156
|
+
* Draws one raised block: per level, a left and a right rhombus band stacking
|
|
157
|
+
* from the base diamond up to the lifted top. Band `k` spans the step between
|
|
158
|
+
* `(k-1) * heightStep` and `k * heightStep` above the base, so the bands tile
|
|
159
|
+
* the whole side exactly, whatever the step is.
|
|
160
|
+
*/
|
|
161
|
+
private drawFaces;
|
|
162
|
+
/** world point to tile coordinates */
|
|
163
|
+
toTile(worldX: number, worldY: number): {
|
|
164
|
+
x: number;
|
|
165
|
+
y: number;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* The centre of a tile, in world units — where a character standing on it belongs.
|
|
169
|
+
*
|
|
170
|
+
* Rides the cell's elevation: a raised cell reports its lifted top, so whoever
|
|
171
|
+
* is placed there stands on the block rather than inside it.
|
|
172
|
+
*/
|
|
173
|
+
tileCenter(x: number, y: number): {
|
|
174
|
+
x: number;
|
|
175
|
+
y: number;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Switches off chunks the camera cannot see.
|
|
179
|
+
*
|
|
180
|
+
* Call it once per frame. Culling by chunk rather than by tile is the point: a 200x200
|
|
181
|
+
* map is 40 000 tiles but only 169 chunks, so the test runs a couple of hundred times
|
|
182
|
+
* instead of forty thousand.
|
|
183
|
+
*/
|
|
184
|
+
cull(camera: Camera): void;
|
|
185
|
+
/** how many chunks are currently drawn, for a debug overlay */
|
|
186
|
+
get visibleChunks(): number;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=TileMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TileMap.d.ts","sourceRoot":"","sources":["../../src/render/TileMap.ts"],"names":[],"mappings":"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"}
|