From 6f75e8b7a4340b54312007eb4e1ccf31ebc4fbda Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Sun, 22 Jan 2023 14:00:30 -0800 Subject: [PATCH] Added talkey to texty --- src/dawn/display/RenderPipeline.cpp | 2 +- .../display/animation/SimpleAnimation.hpp | 15 ++++++ src/dawn/visualnovel/VisualNovelManager.hpp | 3 ++ .../components/VisualNovelCharacter.cpp | 4 +- .../components/VisualNovelCharacter.hpp | 10 ++++ .../events/VisualNovelTextboxEvent.cpp | 42 +++++++++++----- .../events/VisualNovelTextboxEvent.hpp | 8 ++- .../events/characters/CMakeLists.txt | 1 + .../VIsualNovelTransformItemEvent.hpp | 36 +++++++++++++ .../VisualNovelTransformItemEvent.cpp | 50 +++++++++++++++++++ src/dawn/visualnovel/scene/SimpleVNScene.cpp | 15 ++++-- .../visualnovel/ui/VisualNovelTextbox.cpp | 38 ++++++++++++++ .../visualnovel/ui/VisualNovelTextbox.hpp | 18 +++++++ .../scene/components/audio/AudioSource.cpp | 23 ++++++++- .../scene/components/audio/AudioSource.hpp | 15 ++++++ src/dawnpokergame/CMakeLists.txt | 2 +- src/dawnpokergame/game/DawnGame.cpp | 2 +- .../prefabs/characters/DeathPrefab.hpp | 11 +++- src/dawnpokergame/scenes/PixelVNScene.cpp | 2 +- src/dawnpokergame/scenes/Scene_1.hpp | 27 +--------- src/dawnpokergame/scenes/Scene_10.hpp | 2 +- src/dawnpokergame/scenes/Scene_11.hpp | 2 +- src/dawnpokergame/scenes/Scene_12.hpp | 2 +- src/dawnpokergame/scenes/Scene_13.hpp | 2 +- src/dawnpokergame/scenes/Scene_14.hpp | 2 +- src/dawnpokergame/scenes/Scene_15.hpp | 2 +- src/dawnpokergame/scenes/Scene_16.hpp | 2 +- src/dawnpokergame/scenes/Scene_17.hpp | 2 +- src/dawnpokergame/scenes/Scene_18.hpp | 2 +- src/dawnpokergame/scenes/Scene_2.hpp | 2 +- src/dawnpokergame/scenes/Scene_3.hpp | 2 +- src/dawnpokergame/scenes/Scene_4.hpp | 2 +- src/dawnpokergame/scenes/Scene_5.hpp | 2 +- src/dawnpokergame/scenes/Scene_6.hpp | 2 +- src/dawnpokergame/scenes/Scene_7.hpp | 2 +- src/dawnpokergame/scenes/Scene_8.hpp | 2 +- src/dawnpokergame/scenes/Scene_9.hpp | 2 +- 37 files changed, 289 insertions(+), 69 deletions(-) create mode 100644 src/dawn/visualnovel/events/characters/VIsualNovelTransformItemEvent.hpp create mode 100644 src/dawn/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp diff --git a/src/dawn/display/RenderPipeline.cpp b/src/dawn/display/RenderPipeline.cpp index 8f962dbb..7b1e0584 100644 --- a/src/dawn/display/RenderPipeline.cpp +++ b/src/dawn/display/RenderPipeline.cpp @@ -164,7 +164,7 @@ void RenderPipeline::renderSceneCamera(Scene *scene, Camera *camera) { std::sort( shaderPassItems.begin(), shaderPassItems.end(), - [](struct ShaderPassItem &a, struct ShaderPassItem &b){ + [](struct ShaderPassItem &a, struct ShaderPassItem &b) { if(a.priority == b.priority) { return a.w < b.w; } diff --git a/src/dawn/display/animation/SimpleAnimation.hpp b/src/dawn/display/animation/SimpleAnimation.hpp index 2917f284..a194451e 100644 --- a/src/dawn/display/animation/SimpleAnimation.hpp +++ b/src/dawn/display/animation/SimpleAnimation.hpp @@ -24,6 +24,19 @@ namespace Dawn { } + /** + * Sorts internal keyframes by their time to make them conform correctly. + */ + void sortKeyframes() { + std::sort( + this->keyframes.begin(), + this->keyframes.end(), + [](struct SimpleKeyframe &a, struct SimpleKeyframe &b) { + return a.time < b.time; + } + ); + } + public: easefunction_t *easing = &easeLinear; T *modifies; @@ -54,6 +67,8 @@ namespace Dawn { this->duration = mathMax(this->duration, time); this->finished = false; this->keyframes.push_back(keyframe); + + if(time < this->duration) this->sortKeyframes(); } /** diff --git a/src/dawn/visualnovel/VisualNovelManager.hpp b/src/dawn/visualnovel/VisualNovelManager.hpp index 6560186b..77f50ee2 100644 --- a/src/dawn/visualnovel/VisualNovelManager.hpp +++ b/src/dawn/visualnovel/VisualNovelManager.hpp @@ -19,6 +19,9 @@ namespace Dawn { UICanvas *uiCanvas = nullptr; VisualNovelTextbox *textBox = nullptr; VisualNovelFader *fader = nullptr; + + AudioSource *audioBackground = nullptr; + AudioSource *audioCharacter = nullptr; /** Event listener for unpaused scene updates. */ void onUnpausedUpdate(); diff --git a/src/dawn/visualnovel/components/VisualNovelCharacter.cpp b/src/dawn/visualnovel/components/VisualNovelCharacter.cpp index fb219e10..de086bdc 100644 --- a/src/dawn/visualnovel/components/VisualNovelCharacter.cpp +++ b/src/dawn/visualnovel/components/VisualNovelCharacter.cpp @@ -14,10 +14,12 @@ VisualNovelCharacter::VisualNovelCharacter(SceneItem *item) : std::vector VisualNovelCharacter::getDependencies() { return std::vector{ - (this->material = this->item->getComponent()) + (this->material = this->item->getComponent()), + (this->tiledSprite = this->item->getComponent()) }; } void VisualNovelCharacter::onStart() { assertNotNull(this->material); + assertNotNull(this->tiledSprite); } \ No newline at end of file diff --git a/src/dawn/visualnovel/components/VisualNovelCharacter.hpp b/src/dawn/visualnovel/components/VisualNovelCharacter.hpp index 38f2d7f6..42fd873c 100644 --- a/src/dawn/visualnovel/components/VisualNovelCharacter.hpp +++ b/src/dawn/visualnovel/components/VisualNovelCharacter.hpp @@ -5,13 +5,23 @@ #pragma once #include "scene/SceneItemComponent.hpp" +#include "asset/assets/AudioAsset.hpp" #include "scene/components/display/material/SimpleTexturedMaterial.hpp" +#include "scene/components/display/TiledSprite.hpp" +#include "scene/components/audio/AudioSource.hpp" namespace Dawn { + struct VisualNovelCharacterEmotion { + int32_t tile = 0; + AudioAsset *talkSound = nullptr; + AudioAsset *emotionSound = nullptr; + }; + class VisualNovelCharacter : public SceneItemComponent { public: std::string nameKey = "character.unknown"; SimpleTexturedMaterial *material = nullptr; + TiledSprite *tiledSprite = nullptr; /** * Visual Novel Character Component. Mostly logic-less but provides nice diff --git a/src/dawn/visualnovel/events/VisualNovelTextboxEvent.cpp b/src/dawn/visualnovel/events/VisualNovelTextboxEvent.cpp index 0a45575f..ce53d8d8 100644 --- a/src/dawn/visualnovel/events/VisualNovelTextboxEvent.cpp +++ b/src/dawn/visualnovel/events/VisualNovelTextboxEvent.cpp @@ -8,12 +8,22 @@ using namespace Dawn; VisualNovelTextboxEvent::VisualNovelTextboxEvent( - VisualNovelManager *manager, - VisualNovelCharacter *character, - std::string languageKey + VisualNovelManager *manager, + VisualNovelCharacter *character, + struct VisualNovelCharacterEmotion emotion, + std::string languageKey ) : IVisualNovelEvent(manager) { this->character = character; this->languageKey = languageKey; + this->emotion = emotion; +} + +VisualNovelTextboxEvent::VisualNovelTextboxEvent( + VisualNovelManager *manager, + std::string languageKey +) : IVisualNovelEvent(manager) { + this->character = nullptr; + this->languageKey = languageKey; } void VisualNovelTextboxEvent::onStart(IVisualNovelEvent *previous) { @@ -21,20 +31,26 @@ void VisualNovelTextboxEvent::onStart(IVisualNovelEvent *previous) { this->manager->textBox->setText(this->languageKey); this->manager->textBox->setCharacter(this->character); + + if(this->character != nullptr) { + this->character->tiledSprite->setTile(this->emotion.tile); + } + + if(this->emotion.emotionSound != nullptr) { + if(this->manager->audioCharacter != nullptr) { + this->manager->audioCharacter->stop(); + this->manager->audioCharacter->loop = false; + this->manager->audioCharacter->setAudioData(this->emotion.emotionSound); + this->manager->audioCharacter->play(); + } + } else if(this->emotion.talkSound != nullptr) { + this->manager->textBox->setTalkingSound(this->emotion.talkSound); + } + this->manager->textBox->show(); - this->hasSetText = true; } bool_t VisualNovelTextboxEvent::onUpdate() { - if(this->manager->textBox == nullptr) return true; - - if(!this->hasSetText) { - this->manager->textBox->setText(this->languageKey); - this->manager->textBox->setCharacter(this->character); - this->manager->textBox->show(); - this->hasSetText = true; - } - return this->manager->textBox->isVisible(); } diff --git a/src/dawn/visualnovel/events/VisualNovelTextboxEvent.hpp b/src/dawn/visualnovel/events/VisualNovelTextboxEvent.hpp index 086c8697..21602ef1 100644 --- a/src/dawn/visualnovel/events/VisualNovelTextboxEvent.hpp +++ b/src/dawn/visualnovel/events/VisualNovelTextboxEvent.hpp @@ -12,7 +12,7 @@ namespace Dawn { protected: std::string languageKey; VisualNovelCharacter *character; - bool_t hasSetText = false; + struct VisualNovelCharacterEmotion emotion; void onStart(IVisualNovelEvent *previous) override; bool_t onUpdate() override; @@ -30,6 +30,12 @@ namespace Dawn { VisualNovelTextboxEvent( VisualNovelManager *manager, VisualNovelCharacter *character, + struct VisualNovelCharacterEmotion emotion, + std::string languageKey + ); + + VisualNovelTextboxEvent( + VisualNovelManager *manager, std::string languageKey ); }; diff --git a/src/dawn/visualnovel/events/characters/CMakeLists.txt b/src/dawn/visualnovel/events/characters/CMakeLists.txt index cc223e7d..2a67eb44 100644 --- a/src/dawn/visualnovel/events/characters/CMakeLists.txt +++ b/src/dawn/visualnovel/events/characters/CMakeLists.txt @@ -7,4 +7,5 @@ target_sources(${DAWN_TARGET_NAME} PRIVATE VisualNovelFadeCharacterEvent.cpp + VisualNovelTransformItemEvent.cpp ) \ No newline at end of file diff --git a/src/dawn/visualnovel/events/characters/VIsualNovelTransformItemEvent.hpp b/src/dawn/visualnovel/events/characters/VIsualNovelTransformItemEvent.hpp new file mode 100644 index 00000000..974d0bdc --- /dev/null +++ b/src/dawn/visualnovel/events/characters/VIsualNovelTransformItemEvent.hpp @@ -0,0 +1,36 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "visualnovel/events/animation/VisualNovelSimpleCallbackAnimationEvent.hpp" + +namespace Dawn { + class VisualNovelTransformItemEvent : + public VisualNovelSimpleCallbackAnimationEvent + { + protected: + bool_t relative = false; + SceneItem *item = nullptr; + void onStart(IVisualNovelEvent *previous) override; + + public: + VisualNovelTransformItemEvent( + VisualNovelManager *man, + SceneItem *item, + glm::vec3 start, + glm::vec3 end, + easefunction_t *ease, + float_t duration + ); + + VisualNovelTransformItemEvent( + VisualNovelManager *man, + SceneItem *item, + glm::vec3 end, + easefunction_t *ease, + float_t duration + ); + }; +} \ No newline at end of file diff --git a/src/dawn/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp b/src/dawn/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp new file mode 100644 index 00000000..877201e0 --- /dev/null +++ b/src/dawn/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp @@ -0,0 +1,50 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VisualNovelTransformItemEvent.hpp" + +using namespace Dawn; + +VisualNovelTransformItemEvent::VisualNovelTransformItemEvent( + VisualNovelManager *man, + SceneItem *item, + glm::vec3 start, + glm::vec3 end, + easefunction_t *ease, + float_t duration +) : VisualNovelSimpleCallbackAnimationEvent(man) { + assertNotNull(item); + this->item = item; + + this->callbackAnimation.setCallback( + &item->transform, &Transform::setLocalPosition + ); + this->callbackAnimation.addKeyframe(0.0f, start); + this->callbackAnimation.addKeyframe(duration, end); +} + +VisualNovelTransformItemEvent::VisualNovelTransformItemEvent( + VisualNovelManager *man, + SceneItem *item, + glm::vec3 end, + easefunction_t *ease, + float_t duration +) : VisualNovelSimpleCallbackAnimationEvent(man) { + assertNotNull(item); + this->item = item; + + this->callbackAnimation.setCallback( + &item->transform, &Transform::setLocalPosition + ); + this->relative = true; + this->callbackAnimation.addKeyframe(duration, end); +} + +void VisualNovelTransformItemEvent::onStart(IVisualNovelEvent *previous) { + if(this->relative) { + this->callbackAnimation.addKeyframe(0.0f, this->item->transform.getLocalPosition()); + } + VisualNovelSimpleCallbackAnimationEvent::onStart(previous); +} \ No newline at end of file diff --git a/src/dawn/visualnovel/scene/SimpleVNScene.cpp b/src/dawn/visualnovel/scene/SimpleVNScene.cpp index 2dba1cf2..8389a34d 100644 --- a/src/dawn/visualnovel/scene/SimpleVNScene.cpp +++ b/src/dawn/visualnovel/scene/SimpleVNScene.cpp @@ -25,17 +25,12 @@ void SimpleVNScene::stage() { // Camera this->camera = Camera::create(this); - // this->camera->item->addComponent(); this->camera->transform->lookAtPixelPerfect( glm::vec3(0, 0, 0), glm::vec3(0, 0, 0), this->camera->getRenderTarget()->getHeight(), camera->fov ); - - // Audio - auto listenerItem = this->createSceneItem(); - this->audioListener = listenerItem->addComponent(); this->background = SimpleVisualNovelBackground::create(this); @@ -49,6 +44,16 @@ void SimpleVNScene::stage() { // VN Manager auto vnManagerItem = this->createSceneItem(); this->vnManager = vnManagerItem->addComponent(); + + // Audio + auto listenerItem = this->createSceneItem(); + this->audioListener = listenerItem->addComponent(); + + auto audioBackgroundItem = this->createSceneItem(); + vnManager->audioBackground = audioBackgroundItem->addComponent(); + + auto audioCharacterItem = this->createSceneItem(); + vnManager->audioCharacter = audioCharacterItem->addComponent(); // Fader (Drawn over the top of everything else) this->vnFader = VisualNovelFader::create(canvas); diff --git a/src/dawn/visualnovel/ui/VisualNovelTextbox.cpp b/src/dawn/visualnovel/ui/VisualNovelTextbox.cpp index 6f44d129..2b4334dd 100644 --- a/src/dawn/visualnovel/ui/VisualNovelTextbox.cpp +++ b/src/dawn/visualnovel/ui/VisualNovelTextbox.cpp @@ -5,6 +5,7 @@ #include "VisualNovelTextbox.hpp" #include "game/DawnGame.hpp" +#include "visualnovel/VisualNovelManager.hpp" using namespace Dawn; @@ -43,10 +44,29 @@ void VisualNovelTextbox::show() { if(this->isVisible()) return; this->visible = true; this->addChild(&this->selfParent); + + if(this->talkSound != nullptr) { + auto vnManager = this->getVisualNovelManager(); + assertNotNull(vnManager); + assertNotNull(vnManager->audioCharacter); + + vnManager->audioCharacter->stop(); + vnManager->audioCharacter->setAudioData(this->talkSound); + vnManager->audioCharacter->loop = true; + vnManager->audioCharacter->play(); + } } void VisualNovelTextbox::hide() { if(!this->isVisible()) return; + + if(this->talkSound != nullptr) { + auto vnManager = this->getVisualNovelManager(); + assertNotNull(vnManager); + assertNotNull(vnManager->audioCharacter); + vnManager->audioCharacter->stop(); + } + this->visible = false; this->removeChild(&this->selfParent); this->eventHidden.invoke(); @@ -56,6 +76,10 @@ bool_t VisualNovelTextbox::isVisible() { return this->visible; } +VisualNovelManager * VisualNovelTextbox::getVisualNovelManager() { + return this->getScene()->findComponent(); +} + void VisualNovelTextbox::updatePositions() { UIComponent::updatePositions(); @@ -110,6 +134,15 @@ void VisualNovelTextbox::textboxOnSceneUpdate() { this->eventNewPage.invoke(); } } + + + if(this->talkSound != nullptr) { + auto vnManager = this->getVisualNovelManager(); + assertNotNull(vnManager); + assertNotNull(vnManager->audioCharacter); + vnManager->audioCharacter->stop(); + } + return; } @@ -159,6 +192,11 @@ void VisualNovelTextbox::setText(std::string key, float_t fontSize) { void VisualNovelTextbox::setCharacter(VisualNovelCharacter *character) { this->character = character; + this->talkSound = nullptr; +} + +void VisualNovelTextbox::setTalkingSound(AudioAsset *asset) { + this->talkSound = asset; } void VisualNovelTextbox::setText(std::string key) { diff --git a/src/dawn/visualnovel/ui/VisualNovelTextbox.hpp b/src/dawn/visualnovel/ui/VisualNovelTextbox.hpp index a1ff10c4..70dd024b 100644 --- a/src/dawn/visualnovel/ui/VisualNovelTextbox.hpp +++ b/src/dawn/visualnovel/ui/VisualNovelTextbox.hpp @@ -15,6 +15,8 @@ #define VISUAL_NOVEL_TEXTBOX_SPEED_FASTER 40.0f namespace Dawn { + class VisualNovelManager; + class VisualNovelTextbox : public UIComponent { private: int32_t lineCurrent = 0; @@ -23,6 +25,7 @@ namespace Dawn { float_t timeCharacter = 0.0f; bool_t visible = false; VisualNovelCharacter *character = nullptr; + AudioAsset *talkSound = nullptr; void updatePositions() override; @@ -67,6 +70,13 @@ namespace Dawn { void hide(); bool_t isVisible(); + /** + * Returns the visual novel manager (if applicable). + * + * @return Visual Novel Manager instance. + */ + VisualNovelManager * getVisualNovelManager(); + /** * Sets the font for this vn textbox. Passed to the underlying label. * @@ -96,6 +106,14 @@ namespace Dawn { */ void setCharacter(VisualNovelCharacter *character); + /** + * Set the sound to use whenever the text is scrolling to represent a + * character talking. + * + * @param sound Sound asset to use. + */ + void setTalkingSound(AudioAsset *sound); + /** * Sets the font size to use. * diff --git a/src/dawnopenal/scene/components/audio/AudioSource.cpp b/src/dawnopenal/scene/components/audio/AudioSource.cpp index 440aa186..38bfec43 100644 --- a/src/dawnopenal/scene/components/audio/AudioSource.cpp +++ b/src/dawnopenal/scene/components/audio/AudioSource.cpp @@ -136,6 +136,18 @@ void AudioSource::setPlayMode(enum AudioSourcePlayMode playMode) { this->playMode = playMode; } +void AudioSource::stop() { + this->state = AUDIO_SOURCE_STATE_STOPPED; +} + +void AudioSource::play() { + this->state = AUDIO_SOURCE_STATE_PLAYING; +} + +void AudioSource::pause() { + this->state = AUDIO_SOURCE_STATE_PAUSED; +} + void AudioSource::onDispose() { assertTrue(this->ready); this->ready = false; @@ -152,11 +164,12 @@ void AudioSource::onSceneUpdate() { ALint buffersProcessed; assertTrue(this->ready); - assertTrue(this->data != nullptr); - assertTrue(this->data->loaded); // What is the user trying to do? if(this->state == AUDIO_SOURCE_STATE_PLAYING) { + assertTrue(this->data != nullptr); + assertTrue(this->data->loaded); + // Handle the special game-paused music-paused state. if(this->playMode == AUDIO_PLAY_MODE_UNPAUSED && this->getGame()->timeManager.isPaused) { if(this->internalState == AUDIO_SOURCE_STATE_PLAYING) { @@ -220,6 +233,9 @@ void AudioSource::onSceneUpdate() { assertUnreachable(); } } else if(this->state == AUDIO_SOURCE_STATE_PAUSED) { + assertTrue(this->data != nullptr); + assertTrue(this->data->loaded); + // Pause has been requested. if(this->internalState != AUDIO_SOURCE_STATE_PLAYING) return; @@ -231,6 +247,9 @@ void AudioSource::onSceneUpdate() { } else if(this->state == AUDIO_SOURCE_STATE_STOPPED) { if(this->internalState == AUDIO_SOURCE_STATE_STOPPED) return; + assertTrue(this->data != nullptr); + assertTrue(this->data->loaded); + // Release the buffers alSourceStop(this->source); this->detatchBuffers(); diff --git a/src/dawnopenal/scene/components/audio/AudioSource.hpp b/src/dawnopenal/scene/components/audio/AudioSource.hpp index be202e6f..830044fc 100644 --- a/src/dawnopenal/scene/components/audio/AudioSource.hpp +++ b/src/dawnopenal/scene/components/audio/AudioSource.hpp @@ -112,6 +112,21 @@ namespace Dawn { */ void setPlayMode(enum AudioSourcePlayMode mode); + /** + * Stop playing this audio source. Shorthand for setting the state. + */ + void stop(); + + /** + * Play this audio source. Shorthand for state setting. + */ + void play(); + + /** + * Pause this audio source. Shorthand for state setting. + */ + void pause(); + void onStart() override; void onDispose() override; }; diff --git a/src/dawnpokergame/CMakeLists.txt b/src/dawnpokergame/CMakeLists.txt index 2845dc1a..b3b28e96 100644 --- a/src/dawnpokergame/CMakeLists.txt +++ b/src/dawnpokergame/CMakeLists.txt @@ -36,7 +36,7 @@ tool_tileset(tileset_death texture_death ${DIR_GAME_ASSETS}/characters/death/she tool_truetype(truetype_alice ${DIR_GAME_ASSETS}/font/Alice-Regular.ttf truetype_alice 2048 2048 120) -tool_audio(audio_test borrowed/sample_long.wav) +tool_audio(audio_test borrowed/sample_short.wav) add_dependencies(${DAWN_TARGET_NAME} language_en diff --git a/src/dawnpokergame/game/DawnGame.cpp b/src/dawnpokergame/game/DawnGame.cpp index 8d2fd40e..ba89c229 100644 --- a/src/dawnpokergame/game/DawnGame.cpp +++ b/src/dawnpokergame/game/DawnGame.cpp @@ -25,7 +25,7 @@ int32_t DawnGame::init() { this->renderManager.init(); this->audioManager.init(); - this->scene = new SubSceneRendererScene(this); + this->scene = new Scene_1(this); return DAWN_GAME_INIT_RESULT_SUCCESS; } diff --git a/src/dawnpokergame/prefabs/characters/DeathPrefab.hpp b/src/dawnpokergame/prefabs/characters/DeathPrefab.hpp index 248a6634..b6092be1 100644 --- a/src/dawnpokergame/prefabs/characters/DeathPrefab.hpp +++ b/src/dawnpokergame/prefabs/characters/DeathPrefab.hpp @@ -18,10 +18,13 @@ namespace Dawn { VisualNovelCharacter *vnCharacter; AnimationController *animation; + struct VisualNovelCharacterEmotion emotionDefault; + static std::vector prefabAssets(AssetManager *assMan) { return std::vector{ assMan->get("texture_death"), - assMan->get("tileset_death") + assMan->get("tileset_death"), + assMan->get("audio_test") }; } @@ -33,6 +36,10 @@ namespace Dawn { void prefabInit(AssetManager *man) override { auto textureAsset = man->get("texture_death"); auto tilesetAsset = man->get("tileset_death"); + auto audioAsset = man->get("audio_test"); + + // Emotions + this->emotionDefault.talkSound = audioAsset; auto meshRenderer = this->addComponent(); auto meshHost = this->addComponent(); @@ -48,6 +55,8 @@ namespace Dawn { auto tiledSprite = this->addComponent(); tiledSprite->setTilesetAndSize(&tilesetAsset->tileset); tiledSprite->setTile(0); + + this->addComponent(); this->transform.setLocalPosition(glm::vec3(0, 0, 0)); } diff --git a/src/dawnpokergame/scenes/PixelVNScene.cpp b/src/dawnpokergame/scenes/PixelVNScene.cpp index 6a1d6c54..8dfa77ae 100644 --- a/src/dawnpokergame/scenes/PixelVNScene.cpp +++ b/src/dawnpokergame/scenes/PixelVNScene.cpp @@ -23,6 +23,6 @@ std::vector PixelVNScene::getRequiredAssets() { void PixelVNScene::vnStage() { this->renderTarget.setClearColor(COLOR_RED); - this->camera->setRenderTarget(&this->renderTarget); + // this->camera->setRenderTarget(&this->renderTarget); auto pixelPerfectCamera = this->camera->item->addComponent(); } \ No newline at end of file diff --git a/src/dawnpokergame/scenes/Scene_1.hpp b/src/dawnpokergame/scenes/Scene_1.hpp index 018d6f37..4ab8d577 100644 --- a/src/dawnpokergame/scenes/Scene_1.hpp +++ b/src/dawnpokergame/scenes/Scene_1.hpp @@ -7,23 +7,19 @@ #include "scenes/PixelVNScene.hpp" #include "scenes/Scene_2.hpp" #include "prefabs/characters/DeathPrefab.hpp" -#include "scene/components/audio/AudioListener.hpp" -#include "scene/components/audio/AudioSource.hpp" #include "visualnovel/events/characters/VisualNovelFadeCharacterEvent.hpp" +#include "visualnovel/events/characters/VIsualNovelTransformItemEvent.hpp" #include "visualnovel/events/timing/VisualNovelBatchEvent.hpp" namespace Dawn { class Scene_1 : public PixelVNScene { protected: DeathPrefab *death; - DeathPrefab *death2; void vnStage() override { PixelVNScene::vnStage(); this->death = DeathPrefab::create(this); - this->death2 = DeathPrefab::create(this); - this->death2->transform.setLocalPosition(glm::vec3(100, 0, 0)); } void onSceneEnded() { @@ -52,26 +48,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelBatchEvent( - vnManager, - std::vector{ - new VisualNovelFadeCharacterEvent( - vnManager, - this->death->vnCharacter, - true, - &easeLinear, - 2.0f - ), - new VisualNovelFadeCharacterEvent( - vnManager, - this->death2->vnCharacter, - false, - &easeLinear, - 2.0f - ) - } - )) - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.1.1")) + ->then(new VisualNovelTextboxEvent(vnManager, this->death->vnCharacter, this->death->emotionDefault, "scene.1.1")) // ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_1::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_10.hpp b/src/dawnpokergame/scenes/Scene_10.hpp index ddd814ae..54e9dd67 100644 --- a/src/dawnpokergame/scenes/Scene_10.hpp +++ b/src/dawnpokergame/scenes/Scene_10.hpp @@ -36,7 +36,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.10.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.10.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_10::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_11.hpp b/src/dawnpokergame/scenes/Scene_11.hpp index f9cb7d04..31c5a8fa 100644 --- a/src/dawnpokergame/scenes/Scene_11.hpp +++ b/src/dawnpokergame/scenes/Scene_11.hpp @@ -36,7 +36,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.11.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.11.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_11::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_12.hpp b/src/dawnpokergame/scenes/Scene_12.hpp index ca401e78..26638b46 100644 --- a/src/dawnpokergame/scenes/Scene_12.hpp +++ b/src/dawnpokergame/scenes/Scene_12.hpp @@ -56,7 +56,7 @@ namespace Dawn { } IVisualNovelEvent * getVNEvent() override { - auto start = new VisualNovelTextboxEvent(vnManager, penny->vnCharacter, "scene.12.1"); + auto start = new VisualNovelTextboxEvent(vnManager, "scene.12.1"); start ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_12::onSceneEnded)) ; diff --git a/src/dawnpokergame/scenes/Scene_13.hpp b/src/dawnpokergame/scenes/Scene_13.hpp index 3fbd093f..638e30ef 100644 --- a/src/dawnpokergame/scenes/Scene_13.hpp +++ b/src/dawnpokergame/scenes/Scene_13.hpp @@ -36,7 +36,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.13.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.13.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_13::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_14.hpp b/src/dawnpokergame/scenes/Scene_14.hpp index 4072fac8..208acb95 100644 --- a/src/dawnpokergame/scenes/Scene_14.hpp +++ b/src/dawnpokergame/scenes/Scene_14.hpp @@ -36,7 +36,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.14.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.14.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_14::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_15.hpp b/src/dawnpokergame/scenes/Scene_15.hpp index e16a5b78..aef4a561 100644 --- a/src/dawnpokergame/scenes/Scene_15.hpp +++ b/src/dawnpokergame/scenes/Scene_15.hpp @@ -36,7 +36,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.15.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.15.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_15::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_16.hpp b/src/dawnpokergame/scenes/Scene_16.hpp index ee633169..807b325f 100644 --- a/src/dawnpokergame/scenes/Scene_16.hpp +++ b/src/dawnpokergame/scenes/Scene_16.hpp @@ -35,7 +35,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.16.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.16.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_16::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_17.hpp b/src/dawnpokergame/scenes/Scene_17.hpp index 6659b6a4..c87aad8b 100644 --- a/src/dawnpokergame/scenes/Scene_17.hpp +++ b/src/dawnpokergame/scenes/Scene_17.hpp @@ -56,7 +56,7 @@ namespace Dawn { } IVisualNovelEvent * getVNEvent() override { - auto start = new VisualNovelTextboxEvent(vnManager, penny->vnCharacter, "scene.17.1"); + auto start = new VisualNovelTextboxEvent(vnManager, "scene.17.1"); start ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_17::onSceneEnded)) ; diff --git a/src/dawnpokergame/scenes/Scene_18.hpp b/src/dawnpokergame/scenes/Scene_18.hpp index cc12f875..59a023d7 100644 --- a/src/dawnpokergame/scenes/Scene_18.hpp +++ b/src/dawnpokergame/scenes/Scene_18.hpp @@ -28,7 +28,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.18.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.18.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_18::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_2.hpp b/src/dawnpokergame/scenes/Scene_2.hpp index 0e5cfc0c..15637c5a 100644 --- a/src/dawnpokergame/scenes/Scene_2.hpp +++ b/src/dawnpokergame/scenes/Scene_2.hpp @@ -37,7 +37,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.2.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.2.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_2::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_3.hpp b/src/dawnpokergame/scenes/Scene_3.hpp index 39eddde9..402d1928 100644 --- a/src/dawnpokergame/scenes/Scene_3.hpp +++ b/src/dawnpokergame/scenes/Scene_3.hpp @@ -37,7 +37,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.3.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.3.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_3::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_4.hpp b/src/dawnpokergame/scenes/Scene_4.hpp index 32151048..301300e5 100644 --- a/src/dawnpokergame/scenes/Scene_4.hpp +++ b/src/dawnpokergame/scenes/Scene_4.hpp @@ -56,7 +56,7 @@ namespace Dawn { } IVisualNovelEvent * getVNEvent() override { - auto start = new VisualNovelTextboxEvent(vnManager, penny->vnCharacter, "scene.4.1"); + auto start = new VisualNovelTextboxEvent(vnManager, "scene.4.1"); start ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_4::onSceneEnded)) ; diff --git a/src/dawnpokergame/scenes/Scene_5.hpp b/src/dawnpokergame/scenes/Scene_5.hpp index 228de667..3aea9068 100644 --- a/src/dawnpokergame/scenes/Scene_5.hpp +++ b/src/dawnpokergame/scenes/Scene_5.hpp @@ -37,7 +37,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.5.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.5.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_5::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_6.hpp b/src/dawnpokergame/scenes/Scene_6.hpp index 0ff2803d..43360c5d 100644 --- a/src/dawnpokergame/scenes/Scene_6.hpp +++ b/src/dawnpokergame/scenes/Scene_6.hpp @@ -37,7 +37,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.6.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.6.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_6::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_7.hpp b/src/dawnpokergame/scenes/Scene_7.hpp index 2c054bc9..ce1dd75d 100644 --- a/src/dawnpokergame/scenes/Scene_7.hpp +++ b/src/dawnpokergame/scenes/Scene_7.hpp @@ -36,7 +36,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.7.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.7.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_7::onSceneEnded)) ; return start; diff --git a/src/dawnpokergame/scenes/Scene_8.hpp b/src/dawnpokergame/scenes/Scene_8.hpp index 92da209b..39e458ee 100644 --- a/src/dawnpokergame/scenes/Scene_8.hpp +++ b/src/dawnpokergame/scenes/Scene_8.hpp @@ -56,7 +56,7 @@ namespace Dawn { } IVisualNovelEvent * getVNEvent() override { - auto start = new VisualNovelTextboxEvent(vnManager, penny->vnCharacter, "scene.8.1"); + auto start = new VisualNovelTextboxEvent(vnManager, "scene.8.1"); start ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_8::onSceneEnded)) ; diff --git a/src/dawnpokergame/scenes/Scene_9.hpp b/src/dawnpokergame/scenes/Scene_9.hpp index fe8c42f5..5a8a14ea 100644 --- a/src/dawnpokergame/scenes/Scene_9.hpp +++ b/src/dawnpokergame/scenes/Scene_9.hpp @@ -36,7 +36,7 @@ namespace Dawn { IVisualNovelEvent * getVNEvent() override { auto start = new VisualNovelPauseEvent(vnManager, 0.1f); start - ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.9.1")) + ->then(new VisualNovelTextboxEvent(vnManager, "scene.9.1")) ->then(new VisualNovelCallbackEvent(vnManager, this, &Scene_9::onSceneEnded)) ; return start;