diff --git a/src/cutscene/CutsceneDatabase.cpp b/src/cutscene/CutsceneDatabase.cpp index c0085fc..8f01028 100644 --- a/src/cutscene/CutsceneDatabase.cpp +++ b/src/cutscene/CutsceneDatabase.cpp @@ -34,21 +34,11 @@ CutsceneAnchor CutsceneDatabase::parseCutsceneAnchor(const std::string& value) { CutsceneLine CutsceneDatabase::parseCutsceneLine(const json& j) { CutsceneLine line; - line.speaker = j.value("speaker", ""); - line.text = j.value("text", ""); - line.portrait = j.value("portrait", ""); - line.sfx = j.value("sfx", ""); - line.background = j.value("background", ""); - line.backgroundWidth = j.value("backgroundWidth", 0); - line.backgroundHeight= j.value("backgroundHeight", 0); - line.luaCallback = j.value("luaCallback", ""); - line.durationMs = j.value("durationMs", 0); - line.waitForConfirm = j.value("waitForConfirm", false); - line.questUnlock = j.value("questUnlock", ""); - line.questComplete = j.value("questComplete", ""); - line.questFail = j.value("questFail", ""); - line.objectiveComplete = j.value("objectiveComplete", ""); - line.objectiveVisible = j.value("objectiveVisible", ""); + line.speaker = j.value("speaker", ""); + line.text = j.value("text", ""); + line.luaCallback = j.value("luaCallback", ""); + line.durationMs = j.value("durationMs", 0); + line.waitForConfirm = j.value("waitForConfirm", false); return line; } @@ -94,7 +84,6 @@ StaticCutsceneDefinition CutsceneDatabase::parseCutscene(const json& j) { cutscene.background = j.value("background", ""); cutscene.backgroundWidth = j.value("backgroundWidth", 1280); cutscene.backgroundHeight= j.value("backgroundHeight", 720); - cutscene.music = j.value("music", ""); cutscene.skippable = j.value("skippable", true); cutscene.durationMs = j.value("durationMs", 0); cutscene.fadeOutMs = j.value("fadeOutMs", 0); diff --git a/src/cutscene/CutsceneRuntime.cpp b/src/cutscene/CutsceneRuntime.cpp index 0433a2b..f9fa621 100644 --- a/src/cutscene/CutsceneRuntime.cpp +++ b/src/cutscene/CutsceneRuntime.cpp @@ -6,20 +6,10 @@ namespace ZL::Cutscene { -static std::pair splitDot(const std::string& s) { - const auto dot = s.find('.'); - if (dot == std::string::npos) return {s, ""}; - return {s.substr(0, dot), s.substr(dot + 1)}; -} - void CutsceneRuntime::setDatabase(const CutsceneDatabase* value) { database = value; } -void CutsceneRuntime::setQuestJournal(Quest::QuestJournal* journal) { - questJournal = journal; -} - void CutsceneRuntime::setOnFinished(std::function cb) { onFinished = std::move(cb); } @@ -47,7 +37,6 @@ bool CutsceneRuntime::start(const std::string& cutsceneId) { activeCutsceneId = cutsceneId; active = true; fadeInCallbackFired = false; - currentCutsceneBackground = def->background; cutsceneElapsedMs = 0; cutsceneTimerMs = 0; currentCutsceneLine = def->lines.empty() ? -1 : 0; @@ -77,8 +66,6 @@ bool CutsceneRuntime::start(const std::string& cutsceneId) { if (!def->lines.empty()) { const CutsceneLine& firstLine = def->lines[0]; - applyQuestActions(firstLine.questUnlock, firstLine.questComplete, - firstLine.questFail, firstLine.objectiveComplete, firstLine.objectiveVisible); if (onLineStarted && !firstLine.luaCallback.empty()) onLineStarted(firstLine.luaCallback); } @@ -100,7 +87,6 @@ void CutsceneRuntime::stop() { cutsceneElapsedMs = 0; cutsceneTotalDurationMs = 0; cutsceneContentDurationMs = 0; - currentCutsceneBackground.clear(); presentation = {}; } @@ -191,25 +177,6 @@ void CutsceneRuntime::skip() { finish(); } -void CutsceneRuntime::applyQuestActions( - const std::string& questUnlock, const std::string& questComplete, - const std::string& questFail, const std::string& objectiveComplete, - const std::string& objectiveVisible) -{ - if (!questJournal) return; - if (!questUnlock.empty()) questJournal->unlockQuest(questUnlock); - if (!questComplete.empty()) questJournal->completeQuest(questComplete); - if (!questFail.empty()) questJournal->failQuest(questFail); - if (!objectiveComplete.empty()) { - auto [qId, oId] = splitDot(objectiveComplete); - questJournal->setObjectiveCompleted(qId, oId); - } - if (!objectiveVisible.empty()) { - auto [qId, oId] = splitDot(objectiveVisible); - questJournal->setObjectiveVisible(qId, oId); - } -} - void CutsceneRuntime::finish() { std::cout << "[CUTSCENE] finish id=" << activeCutsceneId << std::endl; const std::string finishedId = activeCutsceneId; @@ -270,8 +237,6 @@ void CutsceneRuntime::advanceLine() { } const CutsceneLine& newLine = activeCutscene->lines[currentCutsceneLine]; - applyQuestActions(newLine.questUnlock, newLine.questComplete, - newLine.questFail, newLine.objectiveComplete, newLine.objectiveVisible); if (onLineStarted && !newLine.luaCallback.empty()) onLineStarted(newLine.luaCallback); @@ -316,9 +281,7 @@ std::vector CutsceneRuntime::evaluateImages() const { std::vector result; if (!activeCutscene) return result; - const std::string& fallbackPath = !currentCutsceneBackground.empty() - ? currentCutsceneBackground - : activeCutscene->background; + const std::string& fallbackPath = activeCutscene->background; if (activeCutscene->images.empty()) { if (!fallbackPath.empty()) { @@ -443,17 +406,9 @@ void CutsceneRuntime::refreshPresentation() { const CutsceneLine& line = activeCutscene->lines[currentCutsceneLine]; - if (!line.background.empty()) { - currentCutsceneBackground = line.background; - if (line.backgroundWidth > 0) presentation.backgroundWidth = line.backgroundWidth; - if (line.backgroundHeight > 0) presentation.backgroundHeight = line.backgroundHeight; - } - - presentation.backgroundPath = currentCutsceneBackground; presentation.speaker = line.speaker; presentation.fullText = line.text; presentation.visibleText = line.text; - presentation.portraitPath = line.portrait; presentation.selectedChoice = 0; std::cout << "[CUTSCENE] lines=" << activeCutscene->lines.size() diff --git a/src/cutscene/CutsceneRuntime.h b/src/cutscene/CutsceneRuntime.h index cf6fb06..2b0444d 100644 --- a/src/cutscene/CutsceneRuntime.h +++ b/src/cutscene/CutsceneRuntime.h @@ -2,7 +2,6 @@ #include "cutscene/CutsceneDatabase.h" #include "dialogue/DialogueTypes.h" -#include "quest/QuestJournal.h" #include #include @@ -11,7 +10,6 @@ namespace ZL::Cutscene { class CutsceneRuntime { public: void setDatabase(const CutsceneDatabase* value); - void setQuestJournal(Quest::QuestJournal* journal); void setOnFinished(std::function cb); void setOnLineStarted(std::function cb); @@ -29,7 +27,6 @@ public: private: const CutsceneDatabase* database = nullptr; - Quest::QuestJournal* questJournal = nullptr; const StaticCutsceneDefinition* activeCutscene = nullptr; std::string activeCutsceneId; @@ -41,7 +38,6 @@ private: int cutsceneElapsedMs = 0; int cutsceneTotalDurationMs = 0; int cutsceneContentDurationMs = 0; - std::string currentCutsceneBackground; ZL::Dialogue::PresentationModel presentation; @@ -49,10 +45,6 @@ private: std::function onLineStarted; std::function onFadeInComplete; - void applyQuestActions(const std::string& questUnlock, const std::string& questComplete, - const std::string& questFail, const std::string& objectiveComplete, - const std::string& objectiveVisible); - void finish(); void syncLineToElapsedTime(); void advanceLine(); diff --git a/src/cutscene/CutsceneTypes.h b/src/cutscene/CutsceneTypes.h index af3b440..c11a272 100644 --- a/src/cutscene/CutsceneTypes.h +++ b/src/cutscene/CutsceneTypes.h @@ -30,20 +30,9 @@ enum class CutsceneAnchor { struct CutsceneLine { std::string speaker; std::string text; - std::string portrait; - std::string sfx; - std::string background; std::string luaCallback; - int backgroundWidth = 0; - int backgroundHeight = 0; int durationMs = 0; bool waitForConfirm = false; - - std::string questUnlock; - std::string questComplete; - std::string questFail; - std::string objectiveComplete; // "quest_id.objective_id" - std::string objectiveVisible; // "quest_id.objective_id" }; struct CutsceneCameraPose { @@ -74,7 +63,6 @@ struct StaticCutsceneDefinition { std::string background; int backgroundWidth = 1280; int backgroundHeight = 720; - std::string music; std::string onFadeInCallback; bool skippable = true; int durationMs = 0; diff --git a/src/dialogue/DialogueSystem.h b/src/dialogue/DialogueSystem.h index 61fb36f..3e9892d 100644 --- a/src/dialogue/DialogueSystem.h +++ b/src/dialogue/DialogueSystem.h @@ -52,7 +52,6 @@ public: } void setQuestJournal(Quest::QuestJournal* journal) { dialogueRuntime.setQuestJournal(journal); - cutsceneRuntime.setQuestJournal(journal); } private: