diff --git a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuDef.h b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuDef.h index 5ff0bc25..089f6eba 100644 --- a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuDef.h +++ b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuDef.h @@ -11,6 +11,8 @@ namespace menu { public: std::string m_name; + bool m_fullscreen; + std::vector> m_items; }; } diff --git a/src/ObjLoading/Parsing/Menu/MenuFileParser.cpp b/src/ObjLoading/Parsing/Menu/MenuFileParser.cpp index 81f884b2..504df56c 100644 --- a/src/ObjLoading/Parsing/Menu/MenuFileParser.cpp +++ b/src/ObjLoading/Parsing/Menu/MenuFileParser.cpp @@ -6,6 +6,7 @@ #include "Sequence/SequenceLoadMenu.h" #include "Sequence/SequenceMenuDef.h" #include "Sequence/SequenceOpenGlobalScopeBlock.h" +#include "Sequence/Properties/SequenceFullScreen.h" #include "Sequence/Properties/SequenceName.h" using namespace menu; @@ -43,8 +44,10 @@ void MenuFileParser::CreateFunctionScopeTests() void MenuFileParser::CreateMenuScopeTests() { - AddTest(m_menu_scope_tests, std::make_unique()); AddTest(m_menu_scope_tests, std::make_unique()); + AddTest(m_menu_scope_tests, std::make_unique()); + AddTest(m_menu_scope_tests, std::make_unique()); + AddTest(m_menu_scope_tests, std::make_unique()); } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/Properties/SequenceFullScreen.cpp b/src/ObjLoading/Parsing/Menu/Sequence/Properties/SequenceFullScreen.cpp new file mode 100644 index 00000000..d321944d --- /dev/null +++ b/src/ObjLoading/Parsing/Menu/Sequence/Properties/SequenceFullScreen.cpp @@ -0,0 +1,24 @@ +#include "SequenceFullScreen.h" + +#include "Parsing/Menu/MenuMatcherFactory.h" + +using namespace menu; + +SequenceFullScreen::SequenceFullScreen() +{ + const MenuMatcherFactory create(this); + + AddMatchers({ + create.KeywordIgnoreCase("fullscreen"), + create.Numeric().Capture(CAPTURE_VALUE) + }); +} + +void SequenceFullScreen::ProcessMatch(MenuFileParserState* state, SequenceResult& result) const +{ + assert(state->m_current_menu); + + const auto nameValue = MenuMatcherFactory::TokenNumericIntValue(result.NextCapture(CAPTURE_VALUE)); + + state->m_current_menu->m_fullscreen = nameValue > 0; +} diff --git a/src/ObjLoading/Parsing/Menu/Sequence/Properties/SequenceFullScreen.h b/src/ObjLoading/Parsing/Menu/Sequence/Properties/SequenceFullScreen.h new file mode 100644 index 00000000..0552e1ac --- /dev/null +++ b/src/ObjLoading/Parsing/Menu/Sequence/Properties/SequenceFullScreen.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Parsing/Menu/MenuFileParser.h" + +namespace menu +{ + class SequenceFullScreen final : public MenuFileParser::sequence_t + { + static constexpr auto CAPTURE_VALUE = 1; + + protected: + void ProcessMatch(MenuFileParserState* state, SequenceResult& result) const override; + + public: + SequenceFullScreen(); + }; +}