// Copyright (c) 2023 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "util/XmlParser.hpp" #include "util/CodeGen.hpp" namespace Dawn { struct PauseEventInfo { std::string duration; std::string include; }; class PauseEventParser : public XmlParser { protected: std::vector getRequiredAttributes() { return std::vector{ "duration" }; } std::map getOptionalAttributes() { return std::map(); } int32_t onParse( Xml *node, std::map values, struct PauseEventInfo *out, std::string *error ) { out->duration = parseDuration(values["duration"]); out->include = "visualnovel/events/timing/VisualNovelPauseEvent.hpp"; return 0; } }; class PauseEventGen : public CodeGen { public: static void generate( std::vector *out, struct PauseEventInfo *info, std::string tabs = "" ) { line(out, "new VisualNovelPauseEvent(vnManager, " + info->duration + ")", tabs); } }; }