// Copyright (c) 2023 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "VNTextEventParser.hpp" #include "VNPositionEventParser.hpp" #include "VNSetEventParser.hpp" #include "VNWaitEventParser.hpp" #include "VNParallelEventParser.hpp" namespace Dawn { struct VNSceneEvent; struct VNSceneEventList { std::vector events; }; enum VNSceneEventType { VN_SCENE_EVENT_TYPE_TEXT, VN_SCENE_EVENT_TYPE_POSITION, VN_SCENE_EVENT_TYPE_SET, VN_SCENE_EVENT_TYPE_WAIT, VN_SCENE_EVENT_TYPE_PARALLEL }; struct VNParallelEvent { struct VNSceneEventList events; }; struct VNSceneEvent { enum VNSceneEventType type; struct VNTextEvent text; struct VNPositionEvent position; struct VNSetEvent set; struct VNWaitEvent wait; struct VNParallelEvent parallel; }; class VNSceneEventsParser : public XmlParser { protected: std::vector getRequiredAttributes() override; std::map getOptionalAttributes() override; int32_t onParse( Xml *node, std::map values, struct VNSceneEventList *out, std::string *error ) override; }; }