Add menu matcher for fullscreen property

This commit is contained in:
Jan 2021-11-01 10:25:15 +01:00
parent 6c5825de6d
commit 68945de51a
4 changed files with 47 additions and 1 deletions

View File

@ -11,6 +11,8 @@ namespace menu
{ {
public: public:
std::string m_name; std::string m_name;
bool m_fullscreen;
std::vector<std::unique_ptr<CommonItemDef>> m_items; std::vector<std::unique_ptr<CommonItemDef>> m_items;
}; };
} }

View File

@ -6,6 +6,7 @@
#include "Sequence/SequenceLoadMenu.h" #include "Sequence/SequenceLoadMenu.h"
#include "Sequence/SequenceMenuDef.h" #include "Sequence/SequenceMenuDef.h"
#include "Sequence/SequenceOpenGlobalScopeBlock.h" #include "Sequence/SequenceOpenGlobalScopeBlock.h"
#include "Sequence/Properties/SequenceFullScreen.h"
#include "Sequence/Properties/SequenceName.h" #include "Sequence/Properties/SequenceName.h"
using namespace menu; using namespace menu;
@ -43,8 +44,10 @@ void MenuFileParser::CreateFunctionScopeTests()
void MenuFileParser::CreateMenuScopeTests() void MenuFileParser::CreateMenuScopeTests()
{ {
AddTest(m_menu_scope_tests, std::make_unique<SequenceName>());
AddTest(m_menu_scope_tests, std::make_unique<SequenceCloseBlock>()); AddTest(m_menu_scope_tests, std::make_unique<SequenceCloseBlock>());
AddTest(m_menu_scope_tests, std::make_unique<SequenceName>());
AddTest(m_menu_scope_tests, std::make_unique<SequenceFullScreen>());
AddTest(m_menu_scope_tests, std::make_unique<SequenceItemDef>()); AddTest(m_menu_scope_tests, std::make_unique<SequenceItemDef>());
} }

View File

@ -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<SimpleParserValue>& result) const
{
assert(state->m_current_menu);
const auto nameValue = MenuMatcherFactory::TokenNumericIntValue(result.NextCapture(CAPTURE_VALUE));
state->m_current_menu->m_fullscreen = nameValue > 0;
}

View File

@ -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<SimpleParserValue>& result) const override;
public:
SequenceFullScreen();
};
}