#pragma once #include "dialogue/DialogueOverlay.h" #include "dialogue/DialogueRuntime.h" #include #include #include namespace ZL::Dialogue { class DialogueSystem { public: bool init(Renderer& renderer, const std::string& zipFile = ""); bool loadDatabase(const std::string& path); void update(int deltaMs); void draw(Renderer& renderer); bool handleKeyDown(SDL_Keycode key); void handlePointerDown(float x, float y); void handlePointerMoved(float x, float y); bool handlePointerReleased(float x, float y); bool startDialogue(const std::string& dialogueId); bool startCutscene(const std::string& cutsceneId); void setOnCutsceneFinished(std::function cb); void setOnDialogueLineStarted(std::function cb); void setOnCutsceneLineStarted(std::function cb); void setOnCutsceneFadeInComplete(std::function cb); void setOnDialogueAdvanced(std::function cb); void stopDialogue(); bool isActive() const { return runtime.isActive(); } bool blocksGameplayInput() const { return runtime.isActive(); } void setFlag(const std::string& name, int value) { runtime.setFlag(name, value); } int getFlag(const std::string& name) const { return runtime.getFlag(name); } private: DialogueDatabase database; DialogueRuntime runtime; DialogueOverlay overlay; std::function onDialogueAdvancedCallback; }; } // namespace ZL::Dialogue