diff --git a/dist/shattered_sword_assets/jsons/samplestory.json b/dist/shattered_sword_assets/jsons/samplestory.json index 90faec8..d584239 100644 --- a/dist/shattered_sword_assets/jsons/samplestory.json +++ b/dist/shattered_sword_assets/jsons/samplestory.json @@ -1,19 +1,67 @@ { - "resources": [ + "bgm": [ { - "type": "image", - "key": "hiro", - "path": "shattered_sword_assets/images/Logo.png" + "key": "test", + "path": "shattered_sword_assets/sounds/test.mp3" } ], "texts": [ { "speaker": "Hiro", - "content": "Hello world!" + "content": "Hello\r\n\nworld!", + "actions": [ + { + "type": "loadSprite", + "key": "hiro", + "path": "shattered_sword_assets/images/Logo.png", + "positon": [ + 500, + 500 + ], + "scale": [ + 1, + 1 + ] + } + ] }, { "speaker": "world", - "content": "Hello Hiro!" + "content": "Hello Hiro!", + "actions": [ + { + "type": "moveSprite", + "key": "hiro", + "positon": [ + 100, + 100 + ], + "scale": [ + 2, + 2 + ] + } + ] + }, + { + "speaker": "world", + "content": "this should hide the image", + "actions": [ + { + "type": "hideSprite", + "key": "hiro" + } + ] + }, + { + "speaker": "world", + "content": "this should show it again", + "actions": [ + { + "type": "showSprite", + "key": "hiro" + } + ] } ] } \ No newline at end of file diff --git a/dist/shattered_sword_assets/sounds/test.mp3 b/dist/shattered_sword_assets/sounds/test.mp3 new file mode 100644 index 0000000..695c58d Binary files /dev/null and b/dist/shattered_sword_assets/sounds/test.mp3 differ diff --git a/src/shattered_sword/Scenes/StorySceneTester.ts b/src/shattered_sword/Scenes/StorySceneTester.ts index 8f39ffd..7792506 100644 --- a/src/shattered_sword/Scenes/StorySceneTester.ts +++ b/src/shattered_sword/Scenes/StorySceneTester.ts @@ -7,15 +7,23 @@ import Vec2 from "../../Wolfie2D/DataTypes/Vec2"; import Color from "../../Wolfie2D/Utils/Color"; import Layer from "../../Wolfie2D/Scene/Layer"; import Sprite from "../../Wolfie2D/Nodes/Sprites/Sprite"; +import MapTemplate from "../Tools/DataTypes/MapTemplate"; +import { GameEventType } from "../../Wolfie2D/Events/GameEventType"; +enum Mode { + GAME_MODE = "GameMode", + STORY_MODE = "StoryMode", + PAUSE_MODE = "PauseMode", +} export default class StorySceneTester extends Scene { - private isInStoryMode: boolean = false; + private currentMode: Mode = Mode.GAME_MODE; private storytextLabel: Label; private storyLayer: Layer; private primary: Layer; private story: Story; private storyProgress: number; private storySprites: Array; + private storyBGMs: Array; private currentSpeaker: string; private currentContent: string; @@ -40,61 +48,120 @@ export default class StorySceneTester extends Scene { async storyLoader(storyPath: string) { const response = await (await fetch(storyPath)).json(); this.story = response; - this.story.resources.forEach((resource) => { - switch (resource.type) { - case "image": - this.load.image(resource.key, resource.path); - break; - case "spritesheet": - this.load.spritesheet(resource.key, resource.path); - break; - case "audio": - this.load.audio(resource.key, resource.path); - break; - default: - break; - } - }); + if (this.story.bgm) { + this.storyBGMs = new Array; + this.story.bgm.forEach((bgm) => { + this.load.audio(bgm.key, bgm.path); + console.log("audio:", bgm.key, "path:", bgm.path); + this.load.loadResourcesFromQueue(() => { + console.log("finished loading audio"); + this.emitter.fireEvent(GameEventType.PLAY_SOUND, { key: bgm.key, loop: false, holdReference: true }); + }); + this.storyBGMs.push(bgm.key); + }) + } this.currentSpeaker = this.story.texts[0].speaker; this.currentContent = this.story.texts[0].content; - this.storytextLabel =