kiwiengine 0.5.2 → 0.5.3
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.ko.md +2 -2
- package/README.md +2 -2
- package/examples/auto-battle/assets/bgm/battle.mp3 +0 -0
- package/examples/auto-battle/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/auto-battle/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/auto-battle/assets/joystick/joystick.png +0 -0
- package/examples/auto-battle/assets/joystick/knob.png +0 -0
- package/examples/auto-battle/assets/sfx/hero/die/die.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/auto-battle/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/die/die.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/auto-battle/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/auto-battle/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/auto-battle/assets/spritesheets/hero.png +0 -0
- package/examples/auto-battle/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/auto-battle/assets/spritesheets/orc.png +0 -0
- package/examples/auto-battle/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/auto-battle/assets/spritesheets/potion.png +0 -0
- package/examples/auto-battle/dist/game.js +2 -0
- package/examples/auto-battle/dist/game.js.LICENSE.txt +35 -0
- package/examples/auto-battle/hud/damage-text.ts +46 -0
- package/examples/auto-battle/hud/heal-text.ts +46 -0
- package/examples/auto-battle/hud/hp-bar.ts +38 -0
- package/examples/auto-battle/index.ts +41 -0
- package/examples/auto-battle/objects/character.ts +95 -0
- package/examples/auto-battle/objects/hero.ts +119 -0
- package/examples/auto-battle/objects/orc.ts +107 -0
- package/examples/auto-battle/objects/potion.ts +27 -0
- package/examples/auto-battle/stage.ts +366 -0
- package/examples/battle-benchmark-matterjs/assets/bgm/battle.mp3 +0 -0
- package/examples/battle-benchmark-matterjs/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/battle-benchmark-matterjs/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/joystick/joystick.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/joystick/knob.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/die/die.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/die/die.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/hero.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/orc.png +0 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/battle-benchmark-matterjs/assets/spritesheets/potion.png +0 -0
- package/examples/battle-benchmark-matterjs/dist/game.js +2 -0
- package/examples/battle-benchmark-matterjs/dist/game.js.LICENSE.txt +35 -0
- package/examples/battle-benchmark-matterjs/hud/damage-text.ts +46 -0
- package/examples/battle-benchmark-matterjs/hud/heal-text.ts +46 -0
- package/examples/battle-benchmark-matterjs/hud/hp-bar.ts +38 -0
- package/examples/battle-benchmark-matterjs/index.html +24 -0
- package/examples/battle-benchmark-matterjs/index.ts +41 -0
- package/examples/battle-benchmark-matterjs/objects/character.ts +95 -0
- package/examples/battle-benchmark-matterjs/objects/hero.ts +111 -0
- package/examples/battle-benchmark-matterjs/objects/orc.ts +107 -0
- package/examples/battle-benchmark-matterjs/objects/potion.ts +27 -0
- package/examples/battle-benchmark-matterjs/stage.ts +177 -0
- package/examples/battle-benchmark-separation/assets/bgm/battle.mp3 +0 -0
- package/examples/battle-benchmark-separation/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/battle-benchmark-separation/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/battle-benchmark-separation/assets/joystick/joystick.png +0 -0
- package/examples/battle-benchmark-separation/assets/joystick/knob.png +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/die/die.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/die/die.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/hero.png +0 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/orc.png +0 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/battle-benchmark-separation/assets/spritesheets/potion.png +0 -0
- package/examples/battle-benchmark-separation/dist/game.js +2 -0
- package/examples/battle-benchmark-separation/dist/game.js.LICENSE.txt +35 -0
- package/examples/battle-benchmark-separation/hud/damage-text.ts +46 -0
- package/examples/battle-benchmark-separation/hud/heal-text.ts +46 -0
- package/examples/battle-benchmark-separation/hud/hp-bar.ts +38 -0
- package/examples/battle-benchmark-separation/index.html +24 -0
- package/examples/battle-benchmark-separation/index.ts +41 -0
- package/examples/battle-benchmark-separation/objects/character.ts +225 -0
- package/examples/battle-benchmark-separation/objects/hero.ts +110 -0
- package/examples/battle-benchmark-separation/objects/orc.ts +213 -0
- package/examples/battle-benchmark-separation/objects/potion.ts +27 -0
- package/examples/battle-benchmark-separation/stage.ts +178 -0
- package/examples/battle-benchmark-separation2/assets/bgm/battle.mp3 +0 -0
- package/examples/battle-benchmark-separation2/assets/bitmap-fonts/white-peaberry.fnt +107 -0
- package/examples/battle-benchmark-separation2/assets/bitmap-fonts/white-peaberry.png +0 -0
- package/examples/battle-benchmark-separation2/assets/joystick/joystick.png +0 -0
- package/examples/battle-benchmark-separation2/assets/joystick/knob.png +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/die/die.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/heal/heal.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/hero/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/die/die.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/hit/hit3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss1.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss2.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/sfx/orc/miss/miss3.wav +0 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/hero-atlas.json +246 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/hero.png +0 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/orc-atlas.json +246 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/orc.png +0 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/potion-atlas.json +68 -0
- package/examples/battle-benchmark-separation2/assets/spritesheets/potion.png +0 -0
- package/examples/battle-benchmark-separation2/dist/game.js +2 -0
- package/examples/battle-benchmark-separation2/dist/game.js.LICENSE.txt +35 -0
- package/examples/battle-benchmark-separation2/hud/damage-text.ts +46 -0
- package/examples/battle-benchmark-separation2/hud/heal-text.ts +46 -0
- package/examples/battle-benchmark-separation2/hud/hp-bar.ts +38 -0
- package/examples/battle-benchmark-separation2/index.html +24 -0
- package/examples/battle-benchmark-separation2/index.ts +41 -0
- package/examples/battle-benchmark-separation2/objects/character.ts +195 -0
- package/examples/battle-benchmark-separation2/objects/hero.ts +110 -0
- package/examples/battle-benchmark-separation2/objects/orc.ts +213 -0
- package/examples/battle-benchmark-separation2/objects/potion.ts +27 -0
- package/examples/battle-benchmark-separation2/stage.ts +178 -0
- package/examples/dom-sprite-test/index.ts +6 -9
- package/examples/simple-battle/assets/spritesheets/hero-atlas.json +180 -223
- package/examples/simple-battle/assets/spritesheets/orc-atlas.json +180 -223
- package/examples/simple-battle/assets/spritesheets/potion-atlas.json +46 -61
- package/examples/simple-battle/hud/damage-text.ts +1 -0
- package/examples/simple-battle/hud/heal-text.ts +1 -0
- package/examples/simple-battle/objects/character.ts +3 -3
- package/examples/simple-battle/objects/hero.ts +3 -5
- package/examples/simple-battle/objects/orc.ts +3 -5
- package/examples/simple-battle/objects/potion.ts +0 -2
- package/examples/simple-battle/stage.ts +2 -4
- package/examples/sprite-test/index.ts +6 -9
- package/examples/webpack.config.js +4 -1
- package/lib/asset/loaders/audio.js +4 -1
- package/lib/asset/loaders/audio.js.map +1 -1
- package/lib/asset/loaders/binary.js +4 -1
- package/lib/asset/loaders/binary.js.map +1 -1
- package/lib/asset/loaders/bitmap-font.js +24 -21
- package/lib/asset/loaders/bitmap-font.js.map +1 -1
- package/lib/asset/loaders/font.js +3 -0
- package/lib/asset/loaders/font.js.map +1 -1
- package/lib/asset/loaders/spritesheet.js +12 -1
- package/lib/asset/loaders/spritesheet.js.map +1 -1
- package/lib/asset/loaders/text.js +3 -0
- package/lib/asset/loaders/text.js.map +1 -1
- package/lib/asset/loaders/texture.js +21 -26
- package/lib/asset/loaders/texture.js.map +1 -1
- package/lib/asset/preload.js.map +1 -1
- package/lib/collision/check-collision.js +16 -16
- package/lib/collision/check-collision.js.map +1 -1
- package/lib/dom/dom-animated-sprite.js +21 -36
- package/lib/dom/dom-animated-sprite.js.map +1 -1
- package/lib/dom/dom-game-object.js +9 -7
- package/lib/dom/dom-game-object.js.map +1 -1
- package/lib/dom/dom-particle.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/node/core/dirty-number.js +0 -19
- package/lib/node/core/dirty-number.js.map +1 -1
- package/lib/node/core/renderable.js +7 -0
- package/lib/node/core/renderable.js.map +1 -1
- package/lib/node/core/transform.js +22 -11
- package/lib/node/core/transform.js.map +1 -1
- package/lib/node/ext/animated-sprite.js +3 -22
- package/lib/node/ext/animated-sprite.js.map +1 -1
- package/lib/node/ext/bitmap-text.js +7 -3
- package/lib/node/ext/bitmap-text.js.map +1 -1
- package/lib/node/ext/circle.js +18 -3
- package/lib/node/ext/circle.js.map +1 -1
- package/lib/node/ext/deplay.js +2 -0
- package/lib/node/ext/deplay.js.map +1 -1
- package/lib/node/ext/dom-container.js +2 -2
- package/lib/node/ext/dom-container.js.map +1 -1
- package/lib/node/ext/interval.js +2 -0
- package/lib/node/ext/interval.js.map +1 -1
- package/lib/node/ext/particle.js.map +1 -1
- package/lib/node/ext/rectangle.js +24 -4
- package/lib/node/ext/rectangle.js.map +1 -1
- package/lib/node/physics/physics-object.js +9 -29
- package/lib/node/physics/physics-object.js.map +1 -1
- package/lib/node/physics/physics-world.js +2 -0
- package/lib/node/physics/physics-world.js.map +1 -1
- package/lib/node/physics/rigidbodies.js +7 -0
- package/lib/node/physics/rigidbodies.js.map +1 -0
- package/lib/renderer/renderer.js +3 -2
- package/lib/renderer/renderer.js.map +1 -1
- package/lib/types/animation-atlas.js +2 -0
- package/lib/types/animation-atlas.js.map +1 -0
- package/lib/types/asset/loaders/audio.d.ts +1 -0
- package/lib/types/asset/loaders/audio.d.ts.map +1 -1
- package/lib/types/asset/loaders/binary.d.ts +1 -0
- package/lib/types/asset/loaders/binary.d.ts.map +1 -1
- package/lib/types/asset/loaders/bitmap-font.d.ts +1 -0
- package/lib/types/asset/loaders/bitmap-font.d.ts.map +1 -1
- package/lib/types/asset/loaders/font.d.ts +1 -0
- package/lib/types/asset/loaders/font.d.ts.map +1 -1
- package/lib/types/asset/loaders/spritesheet.d.ts +11 -3
- package/lib/types/asset/loaders/spritesheet.d.ts.map +1 -1
- package/lib/types/asset/loaders/text.d.ts +1 -0
- package/lib/types/asset/loaders/text.d.ts.map +1 -1
- package/lib/types/asset/loaders/texture.d.ts +1 -1
- package/lib/types/asset/loaders/texture.d.ts.map +1 -1
- package/lib/types/asset/preload.d.ts +2 -2
- package/lib/types/asset/preload.d.ts.map +1 -1
- package/lib/types/atlas copy.js +2 -0
- package/lib/types/atlas copy.js.map +1 -0
- package/lib/types/atlas.js +2 -0
- package/lib/types/atlas.js.map +1 -0
- package/lib/types/dom/dom-animated-sprite.d.ts +4 -10
- package/lib/types/dom/dom-animated-sprite.d.ts.map +1 -1
- package/lib/types/dom/dom-game-object.d.ts +1 -1
- package/lib/types/dom/dom-game-object.d.ts.map +1 -1
- package/lib/types/dom/dom-particle.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/node/core/dirty-number.d.ts +0 -8
- package/lib/types/node/core/dirty-number.d.ts.map +1 -1
- package/lib/types/node/core/renderable.d.ts +1 -0
- package/lib/types/node/core/renderable.d.ts.map +1 -1
- package/lib/types/node/core/transform.d.ts +4 -2
- package/lib/types/node/core/transform.d.ts.map +1 -1
- package/lib/types/node/ext/animated-sprite.d.ts +4 -10
- package/lib/types/node/ext/animated-sprite.d.ts.map +1 -1
- package/lib/types/node/ext/bitmap-text.d.ts.map +1 -1
- package/lib/types/node/ext/circle.d.ts +3 -3
- package/lib/types/node/ext/circle.d.ts.map +1 -1
- package/lib/types/node/ext/deplay.d.ts.map +1 -1
- package/lib/types/node/ext/dom-container.d.ts +1 -1
- package/lib/types/node/ext/dom-container.d.ts.map +1 -1
- package/lib/types/node/ext/interval.d.ts.map +1 -1
- package/lib/types/node/ext/particle.d.ts.map +1 -1
- package/lib/types/node/ext/rectangle.d.ts +4 -4
- package/lib/types/node/ext/rectangle.d.ts.map +1 -1
- package/lib/types/node/physics/physics-object.d.ts +2 -2
- package/lib/types/node/physics/physics-object.d.ts.map +1 -1
- package/lib/types/node/physics/physics-world.d.ts.map +1 -1
- package/lib/types/node/physics/rigidbodies.d.ts +23 -0
- package/lib/types/node/physics/rigidbodies.d.ts.map +1 -0
- package/lib/types/renderer/renderer.d.ts.map +1 -1
- package/lib/types/sprite-atlas.js +2 -0
- package/lib/types/sprite-atlas.js.map +1 -0
- package/lib/types/types/animation-atlas.d.ts +14 -0
- package/lib/types/types/animation-atlas.d.ts.map +1 -0
- package/lib/types/types/atlas copy.d.ts +12 -0
- package/lib/types/types/atlas copy.d.ts.map +1 -0
- package/lib/types/types/atlas.d.ts +16 -0
- package/lib/types/types/atlas.d.ts.map +1 -0
- package/lib/types/types/sprite-atlas.d.ts +13 -0
- package/lib/types/types/sprite-atlas.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/asset/loaders/audio.ts +5 -2
- package/src/asset/loaders/binary.ts +5 -1
- package/src/asset/loaders/bitmap-font.ts +33 -27
- package/src/asset/loaders/font.ts +4 -0
- package/src/asset/loaders/spritesheet.ts +18 -5
- package/src/asset/loaders/text.ts +4 -0
- package/src/asset/loaders/texture.ts +19 -27
- package/src/asset/preload.ts +4 -8
- package/src/collision/check-collision.ts +16 -16
- package/src/dom/dom-animated-sprite.ts +24 -45
- package/src/dom/dom-game-object.ts +9 -6
- package/src/dom/dom-particle.ts +1 -1
- package/src/index.ts +1 -0
- package/src/node/core/dirty-number.ts +0 -24
- package/src/node/core/renderable.ts +7 -0
- package/src/node/core/transform.ts +23 -11
- package/src/node/ext/animated-sprite.ts +9 -29
- package/src/node/ext/bitmap-text.ts +7 -3
- package/src/node/ext/circle.ts +18 -3
- package/src/node/ext/deplay.ts +1 -0
- package/src/node/ext/dom-container.ts +2 -2
- package/src/node/ext/interval.ts +1 -0
- package/src/node/ext/particle.ts +1 -1
- package/src/node/ext/rectangle.ts +24 -4
- package/src/node/physics/physics-object.ts +11 -40
- package/src/node/physics/physics-world.ts +1 -0
- package/src/node/physics/rigidbodies.ts +14 -0
- package/src/renderer/renderer.ts +4 -3
- package/src/types/atlas.ts +17 -0
- package/examples/flappy-cat/assets/bgm/bgm.ogg +0 -0
- package/examples/flappy-cat/assets/images/base.png +0 -0
- package/examples/flappy-cat/assets/images/bg.png +0 -0
- package/examples/flappy-cat/assets/images/cat.png +0 -0
- package/examples/flappy-cat/assets/images/pipe-green.png +0 -0
- package/examples/flappy-cat/assets/images/pipe-red.png +0 -0
- package/examples/flappy-cat/assets/sfx/die.wav +0 -0
- package/examples/flappy-cat/assets/sfx/hit.wav +0 -0
- package/examples/flappy-cat/assets/sfx/point.wav +0 -0
- package/examples/flappy-cat/assets/sfx/wing.wav +0 -0
- package/examples/flappy-cat/dist/game.js +0 -0
- package/examples/flappy-cat/index.ts +0 -0
- /package/examples/{flappy-cat → auto-battle}/index.html +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnimatedSpriteNode, ColliderType, DelayNode, GameObjectOptions, sfxPlayer } from '../../../src/index'
|
|
1
|
+
import { AnimatedSpriteNode, ColliderType, DelayNode, GameObjectOptions, RigidbodyType, sfxPlayer } from '../../../src/index'
|
|
2
2
|
import heroAtlas from '../assets/spritesheets/hero-atlas.json'
|
|
3
3
|
import { Character } from './character'
|
|
4
4
|
|
|
@@ -22,7 +22,7 @@ export class Hero extends Character<{
|
|
|
22
22
|
...options,
|
|
23
23
|
maxHp: 1000,
|
|
24
24
|
hp: 1000,
|
|
25
|
-
|
|
25
|
+
rigidbody: { type: RigidbodyType.Rectangle, width: 30, height: 30 },
|
|
26
26
|
hitbox: { type: ColliderType.Rectangle, width: 32, height: 52, x: HERO_HITBOX_X, y: -8 },
|
|
27
27
|
hurtbox: { type: ColliderType.Rectangle, width: 24, height: 40, x: 0, y: -4 },
|
|
28
28
|
isStatic: true
|
|
@@ -32,8 +32,6 @@ export class Hero extends Character<{
|
|
|
32
32
|
src: 'assets/spritesheets/hero.png',
|
|
33
33
|
atlas: heroAtlas,
|
|
34
34
|
animation: 'idle',
|
|
35
|
-
fps: 10,
|
|
36
|
-
loop: true,
|
|
37
35
|
scale: 2
|
|
38
36
|
})
|
|
39
37
|
this._sprite.on('animationend', (animation) => {
|
|
@@ -74,6 +72,7 @@ export class Hero extends Character<{
|
|
|
74
72
|
}
|
|
75
73
|
|
|
76
74
|
protected override update(dt: number) {
|
|
75
|
+
if (this.paused) return
|
|
77
76
|
super.update(dt)
|
|
78
77
|
|
|
79
78
|
this.x += this.#cachedVelX * dt
|
|
@@ -103,7 +102,6 @@ export class Hero extends Character<{
|
|
|
103
102
|
|
|
104
103
|
protected override onDie() {
|
|
105
104
|
this._sprite.animation = 'die'
|
|
106
|
-
this._sprite.loop = false
|
|
107
105
|
this.#cachedVelX = 0
|
|
108
106
|
this.#cachedVelY = 0
|
|
109
107
|
this.disableCollisions()
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnimatedSpriteNode, ColliderType, DelayNode, GameObjectOptions, sfxPlayer } from '../../../src/index'
|
|
1
|
+
import { AnimatedSpriteNode, ColliderType, DelayNode, GameObjectOptions, RigidbodyType, sfxPlayer } from '../../../src/index'
|
|
2
2
|
import orcAtlas from '../assets/spritesheets/orc-atlas.json'
|
|
3
3
|
import { Character } from './character'
|
|
4
4
|
|
|
@@ -21,7 +21,7 @@ export class Orc extends Character<{
|
|
|
21
21
|
...options,
|
|
22
22
|
maxHp: 100,
|
|
23
23
|
hp: 100,
|
|
24
|
-
|
|
24
|
+
rigidbody: { type: RigidbodyType.Rectangle, width: 30, height: 30 },
|
|
25
25
|
hitbox: { type: ColliderType.Rectangle, width: 32, height: 52, x: ORC_HITBOX_X, y: -8 },
|
|
26
26
|
hurtbox: { type: ColliderType.Rectangle, width: 24, height: 32, x: 0, y: 0 },
|
|
27
27
|
})
|
|
@@ -30,8 +30,6 @@ export class Orc extends Character<{
|
|
|
30
30
|
src: 'assets/spritesheets/orc.png',
|
|
31
31
|
atlas: orcAtlas,
|
|
32
32
|
animation: 'idle',
|
|
33
|
-
fps: 10,
|
|
34
|
-
loop: true,
|
|
35
33
|
scale: 2
|
|
36
34
|
})
|
|
37
35
|
this._sprite.on('animationend', (animation) => {
|
|
@@ -83,6 +81,7 @@ export class Orc extends Character<{
|
|
|
83
81
|
}
|
|
84
82
|
|
|
85
83
|
protected override update(dt: number) {
|
|
84
|
+
if (this.paused) return
|
|
86
85
|
super.update(dt)
|
|
87
86
|
this.velocityX = this.#cachedVelX
|
|
88
87
|
this.velocityY = this.#cachedVelY
|
|
@@ -99,7 +98,6 @@ export class Orc extends Character<{
|
|
|
99
98
|
|
|
100
99
|
protected override onDie() {
|
|
101
100
|
this._sprite.animation = 'die'
|
|
102
|
-
this._sprite.loop = false
|
|
103
101
|
this.#cachedVelX = 0
|
|
104
102
|
this.#cachedVelY = 0
|
|
105
103
|
this.disableCollisions()
|
|
@@ -38,10 +38,6 @@ export class Stage extends PhysicsWorld {
|
|
|
38
38
|
this.add(this.#spawnOrcInterval = new IntervalNode(1, () => this.#spawnOrc()))
|
|
39
39
|
this.add(this.#spawnPotionInterval = new IntervalNode(3, () => this.#spawnPotion()))
|
|
40
40
|
|
|
41
|
-
//for (let i = 0; i < 1000; i++) {
|
|
42
|
-
//this.#spawnOrc()
|
|
43
|
-
//}
|
|
44
|
-
|
|
45
41
|
const joystickImage = new Image()
|
|
46
42
|
joystickImage.src = 'assets/joystick/joystick.png'
|
|
47
43
|
|
|
@@ -148,7 +144,9 @@ export class Stage extends PhysicsWorld {
|
|
|
148
144
|
}
|
|
149
145
|
|
|
150
146
|
protected override update(dt: number) {
|
|
147
|
+
if (this.paused) return
|
|
151
148
|
super.update(dt)
|
|
149
|
+
|
|
152
150
|
if (this.#isGameOver) return
|
|
153
151
|
|
|
154
152
|
const h = this.#hero
|
|
@@ -23,19 +23,16 @@ const animatedSprite = new AnimatedSpriteNode({
|
|
|
23
23
|
src: 'assets/fire.png',
|
|
24
24
|
atlas: {
|
|
25
25
|
frames: {
|
|
26
|
-
fire1: {
|
|
27
|
-
fire2: {
|
|
28
|
-
fire3: {
|
|
29
|
-
fire4: {
|
|
30
|
-
fire5: {
|
|
26
|
+
fire1: { x: 0, y: 0, w: 64, h: 64 },
|
|
27
|
+
fire2: { x: 64, y: 0, w: 64, h: 64 },
|
|
28
|
+
fire3: { x: 128, y: 0, w: 64, h: 64 },
|
|
29
|
+
fire4: { x: 192, y: 0, w: 64, h: 64 },
|
|
30
|
+
fire5: { x: 256, y: 0, w: 64, h: 64 },
|
|
31
31
|
},
|
|
32
|
-
meta: { scale: 1 },
|
|
33
32
|
animations: {
|
|
34
|
-
fire: ['fire1', 'fire2', 'fire3', 'fire4', 'fire5'],
|
|
33
|
+
fire: { frames: ['fire1', 'fire2', 'fire3', 'fire4', 'fire5'], fps: 12, loop: true },
|
|
35
34
|
},
|
|
36
35
|
},
|
|
37
36
|
animation: 'fire',
|
|
38
|
-
fps: 12,
|
|
39
|
-
loop: true,
|
|
40
37
|
})
|
|
41
38
|
renderer.add(animatedSprite)
|
|
@@ -12,8 +12,11 @@ module.exports = {
|
|
|
12
12
|
'dom-sprite-test': './dom-sprite-test/index.ts',
|
|
13
13
|
'dom-particle-test': './dom-particle-test/index.ts',
|
|
14
14
|
|
|
15
|
-
'flappy-cat': './flappy-cat/index.ts',
|
|
16
15
|
'simple-battle': './simple-battle/index.ts',
|
|
16
|
+
'auto-battle': './auto-battle/index.ts',
|
|
17
|
+
'battle-benchmark-matterjs': './battle-benchmark-matterjs/index.ts',
|
|
18
|
+
'battle-benchmark-separation': './battle-benchmark-separation/index.ts',
|
|
19
|
+
'battle-benchmark-separation2': './battle-benchmark-separation2/index.ts',
|
|
17
20
|
},
|
|
18
21
|
output: {
|
|
19
22
|
filename: '[name]/dist/game.js',
|
|
@@ -8,8 +8,8 @@ class AudioLoader extends Loader {
|
|
|
8
8
|
console.error(`Failed to load audio data: ${src}`);
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
|
-
const arrayBuffer = await response.arrayBuffer();
|
|
12
11
|
try {
|
|
12
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
13
13
|
const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);
|
|
14
14
|
this.loadingPromises.delete(src);
|
|
15
15
|
if (this.hasActiveRef(src)) {
|
|
@@ -30,6 +30,9 @@ class AudioLoader extends Loader {
|
|
|
30
30
|
this.loadingPromises.set(src, loadingPromise);
|
|
31
31
|
return await loadingPromise;
|
|
32
32
|
}
|
|
33
|
+
async load(src) {
|
|
34
|
+
return await super.load(src);
|
|
35
|
+
}
|
|
33
36
|
}
|
|
34
37
|
export const audioLoader = new AudioLoader();
|
|
35
38
|
//# sourceMappingURL=audio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../src/asset/loaders/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,WAAY,SAAQ,MAAmB;IACxB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;gBAClD,OAAM;YACR,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../src/asset/loaders/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,WAAY,SAAQ,MAAmB;IACxB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;gBAClD,OAAM;YACR,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;gBAChD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;gBAEnE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAEhC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/B,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAA;oBACtD,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;wBACvC,OAAO,WAAW,CAAA;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;gBAC3D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAClC,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QAC7C,OAAO,MAAM,cAAc,CAAA;IAC7B,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,GAAW;QAC7B,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA","sourcesContent":["import { audioContext } from '../audio'\nimport { Loader } from './loader'\n\nclass AudioLoader extends Loader<AudioBuffer> {\n protected override async doLoad(src: string) {\n const loadingPromise = (async () => {\n const response = await fetch(src)\n if (!response.ok) {\n console.error(`Failed to load audio data: ${src}`)\n return\n }\n\n try {\n const arrayBuffer = await response.arrayBuffer()\n const audioBuffer = await audioContext.decodeAudioData(arrayBuffer)\n\n this.loadingPromises.delete(src)\n\n if (this.hasActiveRef(src)) {\n if (this.cachedAssets.has(src)) {\n console.error(`Audio buffer already exists: ${src}`)\n } else {\n this.cachedAssets.set(src, audioBuffer)\n return audioBuffer\n }\n }\n } catch (error) {\n console.error(`Failed to decode audio data: ${src}`, error)\n this.loadingPromises.delete(src)\n }\n })()\n\n this.loadingPromises.set(src, loadingPromise)\n return await loadingPromise\n }\n\n override async load(src: string) {\n return await super.load(src)\n }\n}\n\nexport const audioLoader = new AudioLoader()\n"]}
|
|
@@ -8,13 +8,13 @@ class BinaryLoader extends Loader {
|
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
10
|
const arrayBuffer = await response.arrayBuffer();
|
|
11
|
-
const data = new Uint8Array(arrayBuffer);
|
|
12
11
|
this.loadingPromises.delete(src);
|
|
13
12
|
if (this.hasActiveRef(src)) {
|
|
14
13
|
if (this.cachedAssets.has(src)) {
|
|
15
14
|
console.error(`Binary data already exists: ${src}`);
|
|
16
15
|
}
|
|
17
16
|
else {
|
|
17
|
+
const data = new Uint8Array(arrayBuffer);
|
|
18
18
|
this.cachedAssets.set(src, data);
|
|
19
19
|
return data;
|
|
20
20
|
}
|
|
@@ -23,6 +23,9 @@ class BinaryLoader extends Loader {
|
|
|
23
23
|
this.loadingPromises.set(src, loadingPromise);
|
|
24
24
|
return await loadingPromise;
|
|
25
25
|
}
|
|
26
|
+
async load(src) {
|
|
27
|
+
return await super.load(src);
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
30
|
export const binaryLoader = new BinaryLoader();
|
|
28
31
|
//# sourceMappingURL=binary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../src/asset/loaders/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,YAAa,SAAQ,MAAkB;IACxB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;gBACnD,OAAM;YACR,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../src/asset/loaders/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,YAAa,SAAQ,MAAkB;IACxB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;gBACnD,OAAM;YACR,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;YAEhD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEhC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;gBACrD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;oBACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;oBAChC,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QAC7C,OAAO,MAAM,cAAc,CAAA;IAC7B,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,GAAW;QAC7B,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA","sourcesContent":["import { Loader } from './loader'\n\nclass BinaryLoader extends Loader<Uint8Array> {\n protected override async doLoad(src: string) {\n const loadingPromise = (async () => {\n const response = await fetch(src)\n if (!response.ok) {\n console.error(`Failed to load binary data: ${src}`)\n return\n }\n\n const arrayBuffer = await response.arrayBuffer()\n\n this.loadingPromises.delete(src)\n\n if (this.hasActiveRef(src)) {\n if (this.cachedAssets.has(src)) {\n console.error(`Binary data already exists: ${src}`)\n } else {\n const data = new Uint8Array(arrayBuffer)\n this.cachedAssets.set(src, data)\n return data\n }\n }\n })()\n\n this.loadingPromises.set(src, loadingPromise)\n return await loadingPromise\n }\n\n override async load(src: string) {\n return await super.load(src)\n }\n}\n\nexport const binaryLoader = new BinaryLoader()\n"]}
|
|
@@ -17,34 +17,34 @@ class BitmapFontLoader extends Loader {
|
|
|
17
17
|
}
|
|
18
18
|
try {
|
|
19
19
|
const text = await response.text();
|
|
20
|
-
const parser = new DOMParser();
|
|
21
|
-
const xmlDoc = parser.parseFromString(text, 'application/xml');
|
|
22
|
-
const infoEl = xmlDoc.getElementsByTagName('info')[0];
|
|
23
|
-
const commonEl = xmlDoc.getElementsByTagName('common')[0];
|
|
24
|
-
const charEls = xmlDoc.getElementsByTagName('char');
|
|
25
|
-
const size = parseInt(infoEl.getAttribute('size') || '16', 10);
|
|
26
|
-
const lineHeight = parseInt(commonEl.getAttribute('lineHeight') || '32', 10);
|
|
27
|
-
const chars = {};
|
|
28
|
-
for (let i = 0; i < charEls.length; i++) {
|
|
29
|
-
const charEl = charEls[i];
|
|
30
|
-
const id = parseInt(charEl.getAttribute('id'), 10);
|
|
31
|
-
const x = parseInt(charEl.getAttribute('x'), 10);
|
|
32
|
-
const y = parseInt(charEl.getAttribute('y'), 10);
|
|
33
|
-
const width = parseInt(charEl.getAttribute('width'), 10);
|
|
34
|
-
const height = parseInt(charEl.getAttribute('height'), 10);
|
|
35
|
-
const xoffset = parseInt(charEl.getAttribute('xoffset'), 10);
|
|
36
|
-
const yoffset = parseInt(charEl.getAttribute('yoffset'), 10);
|
|
37
|
-
const xadvance = parseInt(charEl.getAttribute('xadvance'), 10);
|
|
38
|
-
chars[id] = { x, y, width, height, xoffset, yoffset, xadvance };
|
|
39
|
-
}
|
|
40
20
|
this.loadingPromises.delete(fnt);
|
|
41
|
-
const bitmapFont = { src, chars, texture, size, lineHeight };
|
|
42
21
|
if (this.hasActiveRef(fnt)) {
|
|
43
22
|
if (this.cachedAssets.has(fnt)) {
|
|
44
23
|
textureLoader.release(src);
|
|
45
24
|
console.error(`Bitmap font already exists: ${fnt}`);
|
|
46
25
|
}
|
|
47
26
|
else {
|
|
27
|
+
const parser = new DOMParser();
|
|
28
|
+
const xmlDoc = parser.parseFromString(text, 'application/xml');
|
|
29
|
+
const infoEl = xmlDoc.getElementsByTagName('info')[0];
|
|
30
|
+
const commonEl = xmlDoc.getElementsByTagName('common')[0];
|
|
31
|
+
const charEls = xmlDoc.getElementsByTagName('char');
|
|
32
|
+
const size = parseInt(infoEl.getAttribute('size') || '16', 10);
|
|
33
|
+
const lineHeight = parseInt(commonEl.getAttribute('lineHeight') || '32', 10);
|
|
34
|
+
const chars = {};
|
|
35
|
+
for (let i = 0; i < charEls.length; i++) {
|
|
36
|
+
const charEl = charEls[i];
|
|
37
|
+
const id = parseInt(charEl.getAttribute('id'), 10);
|
|
38
|
+
const x = parseInt(charEl.getAttribute('x'), 10);
|
|
39
|
+
const y = parseInt(charEl.getAttribute('y'), 10);
|
|
40
|
+
const width = parseInt(charEl.getAttribute('width'), 10);
|
|
41
|
+
const height = parseInt(charEl.getAttribute('height'), 10);
|
|
42
|
+
const xoffset = parseInt(charEl.getAttribute('xoffset'), 10);
|
|
43
|
+
const yoffset = parseInt(charEl.getAttribute('yoffset'), 10);
|
|
44
|
+
const xadvance = parseInt(charEl.getAttribute('xadvance'), 10);
|
|
45
|
+
chars[id] = { x, y, width, height, xoffset, yoffset, xadvance };
|
|
46
|
+
}
|
|
47
|
+
const bitmapFont = { src, chars, texture, size, lineHeight };
|
|
48
48
|
this.cachedAssets.set(fnt, bitmapFont);
|
|
49
49
|
return bitmapFont;
|
|
50
50
|
}
|
|
@@ -66,6 +66,9 @@ class BitmapFontLoader extends Loader {
|
|
|
66
66
|
if (src)
|
|
67
67
|
textureLoader.release(src);
|
|
68
68
|
}
|
|
69
|
+
async load(fnt, src) {
|
|
70
|
+
return await super.load(fnt, src);
|
|
71
|
+
}
|
|
69
72
|
}
|
|
70
73
|
export const bitmapFontLoader = new BitmapFontLoader();
|
|
71
74
|
//# sourceMappingURL=bitmap-font.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitmap-font.js","sourceRoot":"","sources":["../../../src/asset/loaders/bitmap-font.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,gBAAiB,SAAQ,MAAkB;IAC/C,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAElB,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,GAAW;QACtD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAE5B,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAA;gBAC/C,OAAM;YACR,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;gBAChD,OAAM;YACR,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBAElC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"bitmap-font.js","sourceRoot":"","sources":["../../../src/asset/loaders/bitmap-font.ts"],"names":[],"mappings":"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","sourcesContent":["import { BitmapFont, Char } from '../../types/bitmap-font'\nimport { Loader } from './loader'\nimport { textureLoader } from './texture'\n\nclass BitmapFontLoader extends Loader<BitmapFont> {\n #fntToSrc = new Map<string, string>()\n\n protected override async doLoad(fnt: string, src: string) {\n this.#fntToSrc.set(fnt, src)\n\n const loadingPromise = (async () => {\n const texture = await textureLoader.load(src)\n if (!texture) {\n console.error(`Failed to load texture: ${src}`)\n return\n }\n\n const response = await fetch(fnt)\n if (!response.ok) {\n console.error(`Failed to load font xml: ${fnt}`)\n return\n }\n\n try {\n const text = await response.text()\n\n this.loadingPromises.delete(fnt)\n\n if (this.hasActiveRef(fnt)) {\n if (this.cachedAssets.has(fnt)) {\n textureLoader.release(src)\n console.error(`Bitmap font already exists: ${fnt}`)\n } else {\n\n const parser = new DOMParser()\n const xmlDoc = parser.parseFromString(text, 'application/xml')\n\n const infoEl = xmlDoc.getElementsByTagName('info')[0]\n const commonEl = xmlDoc.getElementsByTagName('common')[0]\n const charEls = xmlDoc.getElementsByTagName('char')\n\n const size = parseInt(infoEl.getAttribute('size') || '16', 10)\n const lineHeight = parseInt(commonEl.getAttribute('lineHeight') || '32', 10)\n\n const chars: Record<number, Char> = {}\n\n for (let i = 0; i < charEls.length; i++) {\n const charEl = charEls[i]\n\n const id = parseInt(charEl.getAttribute('id')!, 10)\n const x = parseInt(charEl.getAttribute('x')!, 10)\n const y = parseInt(charEl.getAttribute('y')!, 10)\n const width = parseInt(charEl.getAttribute('width')!, 10)\n const height = parseInt(charEl.getAttribute('height')!, 10)\n const xoffset = parseInt(charEl.getAttribute('xoffset')!, 10)\n const yoffset = parseInt(charEl.getAttribute('yoffset')!, 10)\n const xadvance = parseInt(charEl.getAttribute('xadvance')!, 10)\n\n chars[id] = { x, y, width, height, xoffset, yoffset, xadvance }\n }\n\n const bitmapFont = { src, chars, texture, size, lineHeight }\n\n this.cachedAssets.set(fnt, bitmapFont)\n return bitmapFont\n }\n } else {\n textureLoader.release(src)\n }\n\n } catch (error) {\n console.error(`Failed to decode font xml: ${fnt}`, error)\n this.loadingPromises.delete(fnt)\n }\n })()\n\n this.loadingPromises.set(fnt, loadingPromise)\n return await loadingPromise\n }\n\n protected override cleanup(fnt: string) {\n const src = this.#fntToSrc.get(fnt)\n if (src) textureLoader.release(src)\n }\n\n override async load(fnt: string, src: string) {\n return await super.load(fnt, src)\n }\n}\n\nexport const bitmapFontLoader = new BitmapFontLoader()\n"]}
|
|
@@ -22,6 +22,9 @@ class FontFamilyLoader extends Loader {
|
|
|
22
22
|
this.loadingPromises.set(fontName, loadingPromise);
|
|
23
23
|
return await loadingPromise;
|
|
24
24
|
}
|
|
25
|
+
async load(fontName) {
|
|
26
|
+
return await super.load(fontName);
|
|
27
|
+
}
|
|
25
28
|
}
|
|
26
29
|
export const fontFamilyLoader = new FontFamilyLoader();
|
|
27
30
|
//# sourceMappingURL=font.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font.js","sourceRoot":"","sources":["../../../src/asset/loaders/font.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,gBAAiB,SAAQ,MAAe;IACzB,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC9C,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAA;oBAC5C,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAA;oBAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACrC,OAAO,IAAI,CAAA;gBACb,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;oBACxD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBAClE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;QAClD,OAAO,MAAM,cAAc,CAAA;IAC7B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAA","sourcesContent":["import { Loader } from './loader'\n\nclass FontFamilyLoader extends Loader<boolean> {\n protected override async doLoad(fontName: string) {\n const loadingPromise = (async () => {\n if ('fonts' in document) {\n try {\n await document.fonts.load(`1em ${fontName}`)\n await document.fonts.ready\n this.loadingPromises.delete(fontName)\n return true\n } catch (error) {\n console.error(`Failed to load font: ${fontName}`, error)\n this.loadingPromises.delete(fontName)\n }\n } else {\n console.warn(`This browser does not support the Font Loading API`)\n this.loadingPromises.delete(fontName)\n }\n })()\n\n this.loadingPromises.set(fontName, loadingPromise)\n return await loadingPromise\n }\n}\n\nexport const fontFamilyLoader = new FontFamilyLoader()\n"]}
|
|
1
|
+
{"version":3,"file":"font.js","sourceRoot":"","sources":["../../../src/asset/loaders/font.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,gBAAiB,SAAQ,MAAe;IACzB,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC9C,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAA;oBAC5C,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAA;oBAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACrC,OAAO,IAAI,CAAA;gBACb,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;oBACxD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBAClE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;QAClD,OAAO,MAAM,cAAc,CAAA;IAC7B,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,QAAgB;QAClC,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAA","sourcesContent":["import { Loader } from './loader'\n\nclass FontFamilyLoader extends Loader<boolean> {\n protected override async doLoad(fontName: string) {\n const loadingPromise = (async () => {\n if ('fonts' in document) {\n try {\n await document.fonts.load(`1em ${fontName}`)\n await document.fonts.ready\n this.loadingPromises.delete(fontName)\n return true\n } catch (error) {\n console.error(`Failed to load font: ${fontName}`, error)\n this.loadingPromises.delete(fontName)\n }\n } else {\n console.warn(`This browser does not support the Font Loading API`)\n this.loadingPromises.delete(fontName)\n }\n })()\n\n this.loadingPromises.set(fontName, loadingPromise)\n return await loadingPromise\n }\n\n override async load(fontName: string) {\n return await super.load(fontName)\n }\n}\n\nexport const fontFamilyLoader = new FontFamilyLoader()\n"]}
|
|
@@ -24,7 +24,15 @@ class SpritesheetLoader extends Loader {
|
|
|
24
24
|
console.error(`Failed to load texture: ${src}`);
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
|
-
const
|
|
27
|
+
const frames = {};
|
|
28
|
+
for (const [key, value] of Object.entries(atlas.frames)) {
|
|
29
|
+
frames[key] = { frame: value };
|
|
30
|
+
}
|
|
31
|
+
const animations = {};
|
|
32
|
+
for (const [key, value] of Object.entries(atlas.animations)) {
|
|
33
|
+
animations[key] = value.frames;
|
|
34
|
+
}
|
|
35
|
+
const spritesheet = new Spritesheet(texture, { frames, meta: { scale: 1 }, animations });
|
|
28
36
|
await spritesheet.parse();
|
|
29
37
|
this.loadingPromises.delete(id);
|
|
30
38
|
if (this.hasActiveRef(id)) {
|
|
@@ -50,6 +58,9 @@ class SpritesheetLoader extends Loader {
|
|
|
50
58
|
if (src)
|
|
51
59
|
textureLoader.release(src);
|
|
52
60
|
}
|
|
61
|
+
async load(id, src, atlas) {
|
|
62
|
+
return await super.load(id, src, atlas);
|
|
63
|
+
}
|
|
53
64
|
}
|
|
54
65
|
export const spritesheetLoader = new SpritesheetLoader();
|
|
55
66
|
//# sourceMappingURL=spritesheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spritesheet.js","sourceRoot":"","sources":["../../../src/asset/loaders/spritesheet.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"spritesheet.js","sourceRoot":"","sources":["../../../src/asset/loaders/spritesheet.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dict, Spritesheet, SpritesheetFrameData } from 'pixi.js'\nimport { Atlas } from '../../types/atlas'\nimport { Loader } from './loader'\nimport { textureLoader } from './texture'\n\nconst atlasIdCache = new WeakMap<Atlas, Map<string, string>>()\nlet idCounter = 0\n\nexport function getCachedAtlasId(src: string, atlas: Atlas): string {\n let innerMap = atlasIdCache.get(atlas)\n if (!innerMap) {\n innerMap = new Map<string, string>()\n atlasIdCache.set(atlas, innerMap)\n }\n\n if (!innerMap.has(src)) {\n innerMap.set(src, `${src}#${idCounter++}`)\n }\n\n return innerMap.get(src)!\n}\n\nclass SpritesheetLoader extends Loader<Spritesheet> {\n #idToSrc = new Map<string, string>();\n\n protected override async doLoad(id: string, src: string, atlas: Atlas) {\n this.#idToSrc.set(id, src)\n\n const loadingPromise = (async () => {\n const texture = await textureLoader.load(src)\n if (!texture) {\n console.error(`Failed to load texture: ${src}`)\n return\n }\n\n const frames: Dict<SpritesheetFrameData> = {}\n for (const [key, value] of Object.entries(atlas.frames)) {\n frames[key] = { frame: value }\n }\n const animations: Dict<string[]> = {}\n for (const [key, value] of Object.entries(atlas.animations)) {\n animations[key] = value.frames\n }\n const spritesheet = new Spritesheet(texture, { frames, meta: { scale: 1 }, animations })\n await spritesheet.parse()\n\n this.loadingPromises.delete(id)\n\n if (this.hasActiveRef(id)) {\n if (this.cachedAssets.has(id)) {\n textureLoader.release(src)\n console.error(`Spritesheet already exists: ${src}`)\n } else {\n this.cachedAssets.set(id, spritesheet)\n return spritesheet\n }\n } else {\n textureLoader.release(src)\n }\n })()\n\n this.loadingPromises.set(id, loadingPromise)\n return await loadingPromise\n }\n\n protected override cleanup(id: string, spritesheet: Spritesheet) {\n spritesheet.destroy()\n\n const src = this.#idToSrc.get(id)\n if (src) textureLoader.release(src)\n }\n\n override async load(id: string, src: string, atlas: Atlas) {\n return await super.load(id, src, atlas)\n }\n}\n\nexport const spritesheetLoader = new SpritesheetLoader()\n"]}
|
|
@@ -22,6 +22,9 @@ class TextLoader extends Loader {
|
|
|
22
22
|
this.loadingPromises.set(src, loadingPromise);
|
|
23
23
|
return await loadingPromise;
|
|
24
24
|
}
|
|
25
|
+
async load(src) {
|
|
26
|
+
return await super.load(src);
|
|
27
|
+
}
|
|
25
28
|
}
|
|
26
29
|
export const textLoader = new TextLoader();
|
|
27
30
|
//# sourceMappingURL=text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/asset/loaders/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,UAAW,SAAQ,MAAc;IAClB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;gBAC5C,OAAM;YACR,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAElC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEhC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;gBAC9C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;oBAChC,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QAC7C,OAAO,MAAM,cAAc,CAAA;IAC7B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA","sourcesContent":["import { Loader } from './loader'\n\nclass TextLoader extends Loader<string> {\n protected override async doLoad(src: string) {\n const loadingPromise = (async () => {\n const response = await fetch(src)\n if (!response.ok) {\n console.error(`Failed to load text: ${src}`)\n return\n }\n\n const text = await response.text()\n\n this.loadingPromises.delete(src)\n\n if (this.hasActiveRef(src)) {\n if (this.cachedAssets.has(src)) {\n console.error(`Text already exists: ${src}`)\n } else {\n this.cachedAssets.set(src, text)\n return text\n }\n }\n })()\n\n this.loadingPromises.set(src, loadingPromise)\n return await loadingPromise\n }\n}\n\nexport const textLoader = new TextLoader()\n"]}
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/asset/loaders/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,UAAW,SAAQ,MAAc;IAClB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;gBAC5C,OAAM;YACR,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAElC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEhC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;gBAC9C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;oBAChC,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QAC7C,OAAO,MAAM,cAAc,CAAA;IAC7B,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,GAAW;QAC7B,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA","sourcesContent":["import { Loader } from './loader'\n\nclass TextLoader extends Loader<string> {\n protected override async doLoad(src: string) {\n const loadingPromise = (async () => {\n const response = await fetch(src)\n if (!response.ok) {\n console.error(`Failed to load text: ${src}`)\n return\n }\n\n const text = await response.text()\n\n this.loadingPromises.delete(src)\n\n if (this.hasActiveRef(src)) {\n if (this.cachedAssets.has(src)) {\n console.error(`Text already exists: ${src}`)\n } else {\n this.cachedAssets.set(src, text)\n return text\n }\n }\n })()\n\n this.loadingPromises.set(src, loadingPromise)\n return await loadingPromise\n }\n\n override async load(src: string) {\n return await super.load(src)\n }\n}\n\nexport const textLoader = new TextLoader()\n"]}
|
|
@@ -2,37 +2,32 @@ import { Texture } from 'pixi.js';
|
|
|
2
2
|
import { Loader } from './loader';
|
|
3
3
|
class TextureLoader extends Loader {
|
|
4
4
|
async doLoad(src) {
|
|
5
|
-
const loadingPromise =
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
const loadingPromise = (async () => {
|
|
6
|
+
const response = await fetch(src);
|
|
7
|
+
if (!response.ok) {
|
|
8
|
+
console.error(`Failed to load texture: ${src}`);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const blob = await response.blob();
|
|
12
|
+
const bitmap = await createImageBitmap(blob, { premultiplyAlpha: 'premultiply' });
|
|
13
|
+
this.loadingPromises.delete(src);
|
|
14
|
+
if (this.hasActiveRef(src)) {
|
|
15
15
|
if (this.cachedAssets.has(src)) {
|
|
16
|
-
console.error(`Texture already
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
console.error(`Texture already exists: ${src}`);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
const texture = Texture.from(bitmap);
|
|
20
|
+
texture.source.scaleMode = 'nearest';
|
|
21
|
+
this.cachedAssets.set(src, texture);
|
|
22
|
+
return texture;
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.cachedAssets.set(src, texture);
|
|
23
|
-
resolve(texture);
|
|
24
|
-
};
|
|
25
|
-
image.onerror = (error) => {
|
|
26
|
-
this.loadingPromises.delete(src);
|
|
27
|
-
console.error(`Failed to load texture: ${src}`, error);
|
|
28
|
-
resolve(undefined);
|
|
29
|
-
};
|
|
30
|
-
});
|
|
24
|
+
}
|
|
25
|
+
})();
|
|
31
26
|
this.loadingPromises.set(src, loadingPromise);
|
|
32
27
|
return await loadingPromise;
|
|
33
28
|
}
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
async load(src) {
|
|
30
|
+
return await super.load(src);
|
|
36
31
|
}
|
|
37
32
|
}
|
|
38
33
|
export const textureLoader = new TextureLoader();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture.js","sourceRoot":"","sources":["../../../src/asset/loaders/texture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,aAAc,SAAQ,MAAe;IACtB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"texture.js","sourceRoot":"","sources":["../../../src/asset/loaders/texture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,aAAc,SAAQ,MAAe;IACtB,KAAK,CAAC,MAAM,CAAC,GAAW;QACzC,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAA;gBAC/C,OAAM;YACR,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAA;YAEjF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEhC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAA;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACpC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;oBACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;oBACnC,OAAO,OAAO,CAAA;gBAChB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QAC7C,OAAO,MAAM,cAAc,CAAA;IAC7B,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,GAAW;QAC7B,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA","sourcesContent":["import { Texture } from 'pixi.js'\nimport { Loader } from './loader'\n\nclass TextureLoader extends Loader<Texture> {\n protected override async doLoad(src: string) {\n const loadingPromise = (async () => {\n const response = await fetch(src)\n if (!response.ok) {\n console.error(`Failed to load texture: ${src}`)\n return\n }\n\n const blob = await response.blob()\n const bitmap = await createImageBitmap(blob, { premultiplyAlpha: 'premultiply' })\n\n this.loadingPromises.delete(src)\n\n if (this.hasActiveRef(src)) {\n if (this.cachedAssets.has(src)) {\n console.error(`Texture already exists: ${src}`)\n } else {\n const texture = Texture.from(bitmap)\n texture.source.scaleMode = 'nearest'\n this.cachedAssets.set(src, texture)\n return texture\n }\n }\n })()\n\n this.loadingPromises.set(src, loadingPromise)\n return await loadingPromise\n }\n\n override async load(src: string) {\n return await super.load(src)\n }\n}\n\nexport const textureLoader = new TextureLoader()\n"]}
|
package/lib/asset/preload.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/asset/preload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/asset/preload.ts"],"names":[],"mappings":"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","sourcesContent":["import { Atlas } from '../types/atlas'\nimport { audioLoader } from './loaders/audio'\nimport { binaryLoader } from './loaders/binary'\nimport { bitmapFontLoader } from './loaders/bitmap-font'\nimport { fontFamilyLoader } from './loaders/font'\nimport { Loader } from './loaders/loader'\nimport { getCachedAtlasId, spritesheetLoader } from './loaders/spritesheet'\nimport { textLoader } from './loaders/text'\nimport { textureLoader } from './loaders/texture'\n\nexport type AssetSource = string\n | { src: string, atlas: Atlas }\n | { fnt: string, src: string }\n\nconst loaderForPathMap: Array<{ check: (path: string) => boolean, loader: Loader<any> }> = [\n { check: (p) => p.endsWith('.json') || p.endsWith('.atlas'), loader: textLoader },\n { check: (p) => p.endsWith('.skel'), loader: binaryLoader },\n { check: (p) => /\\.(png|jpe?g|gif|webp)$/.test(p), loader: textureLoader },\n { check: (p) => /\\.(mp3|wav|ogg)$/.test(p), loader: audioLoader },\n { check: (p) => !p.includes('.'), loader: fontFamilyLoader }\n]\n\nfunction getLoaderForPath(path: string): Loader<any> | undefined {\n return loaderForPathMap.find(({ check }) => check(path))?.loader\n}\n\nasync function loadAsset(asset: AssetSource): Promise<void> {\n if (typeof asset === 'string') {\n const loader = getLoaderForPath(asset)\n if (!loader) {\n console.warn(`No loader found for asset: ${asset}`)\n return\n }\n await loader.load(asset)\n } else if ('atlas' in asset) {\n const id = getCachedAtlasId(asset.src, asset.atlas)\n await spritesheetLoader.load(id, asset.src, asset.atlas)\n } else if ('fnt' in asset) {\n await bitmapFontLoader.load(asset.fnt, asset.src)\n } else {\n console.warn(`Unknown asset type: ${asset}`)\n }\n}\n\nfunction releaseAsset(asset: AssetSource): void {\n if (typeof asset === 'string') {\n const loader = getLoaderForPath(asset)\n if (!loader) {\n console.warn(`No loader found for asset: ${asset}`)\n return\n }\n loader.release(asset)\n } else if ('atlas' in asset) {\n const id = getCachedAtlasId(asset.src, asset.atlas)\n spritesheetLoader.release(id)\n } else if ('fnt' in asset) {\n bitmapFontLoader.release(asset.fnt)\n } else {\n console.warn(`Unknown asset type: ${asset}`)\n }\n}\n\nexport async function preload(\n assets: AssetSource[],\n progressCallback?: (progress: number) => void\n): Promise<() => void> {\n let loaded = 0\n const total = assets.length\n\n await Promise.all(\n assets.map(async (asset) => {\n try {\n await loadAsset(asset)\n loaded++\n progressCallback?.(loaded / total)\n } catch (err) {\n console.error(`Failed to load asset:`, asset, err)\n }\n })\n )\n\n return () => assets.forEach(releaseAsset)\n}\n"]}
|