mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-05-10 14:34:57 +00:00
Add expression numerics and int to multiple sequences for menu items
This commit is contained in:
parent
8e7cd0140c
commit
74988af30b
@ -150,7 +150,7 @@ namespace menu::item_scope_sequences
|
||||
|
||||
AddMatchers({
|
||||
create.Char(';')
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
protected:
|
||||
@ -213,18 +213,16 @@ namespace menu::item_scope_sequences
|
||||
|
||||
class SequenceOrigin final : public MenuFileParser::sequence_t
|
||||
{
|
||||
static constexpr auto CAPTURE_X = 1;
|
||||
static constexpr auto CAPTURE_Y = 2;
|
||||
|
||||
public:
|
||||
SequenceOrigin()
|
||||
{
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddLabeledMatchers(MenuExpressionMatchers().Expression(this), MenuExpressionMatchers::LABEL_EXPRESSION);
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase("origin"),
|
||||
create.Numeric().Capture(CAPTURE_X),
|
||||
create.Numeric().Capture(CAPTURE_Y)
|
||||
create.NumericExpression(), // x
|
||||
create.NumericExpression() // y
|
||||
});
|
||||
}
|
||||
|
||||
@ -233,8 +231,8 @@ namespace menu::item_scope_sequences
|
||||
{
|
||||
assert(state->m_current_item);
|
||||
|
||||
state->m_current_item->m_rect.x = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_X));
|
||||
state->m_current_item->m_rect.y = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_Y));
|
||||
state->m_current_item->m_rect.x = MenuMatcherFactory::TokenNumericExpressionValue(result);
|
||||
state->m_current_item->m_rect.y = MenuMatcherFactory::TokenNumericExpressionValue(result);
|
||||
}
|
||||
};
|
||||
|
||||
@ -249,11 +247,12 @@ namespace menu::item_scope_sequences
|
||||
{
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddLabeledMatchers(MenuExpressionMatchers().Expression(this), MenuExpressionMatchers::LABEL_EXPRESSION);
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase("decodeEffect"),
|
||||
create.Integer().Capture(CAPTURE_LETTER_TIME),
|
||||
create.Integer().Capture(CAPTURE_DECAY_START_TIME),
|
||||
create.Integer().Capture(CAPTURE_DECAY_DURATION),
|
||||
create.IntExpression(), // letter time
|
||||
create.IntExpression(), // decay start time
|
||||
create.IntExpression(), // decay duration
|
||||
});
|
||||
}
|
||||
|
||||
@ -262,9 +261,9 @@ namespace menu::item_scope_sequences
|
||||
{
|
||||
assert(state->m_current_item);
|
||||
|
||||
state->m_current_item->m_fx_letter_time = result.NextCapture(CAPTURE_LETTER_TIME).IntegerValue();
|
||||
state->m_current_item->m_fx_decay_start_time = result.NextCapture(CAPTURE_DECAY_START_TIME).IntegerValue();
|
||||
state->m_current_item->m_fx_decay_duration = result.NextCapture(CAPTURE_DECAY_DURATION).IntegerValue();
|
||||
state->m_current_item->m_fx_letter_time = MenuMatcherFactory::TokenIntExpressionValue(result);
|
||||
state->m_current_item->m_fx_decay_start_time = MenuMatcherFactory::TokenIntExpressionValue(result);
|
||||
state->m_current_item->m_fx_decay_duration = MenuMatcherFactory::TokenIntExpressionValue(result);
|
||||
}
|
||||
};
|
||||
|
||||
@ -319,21 +318,19 @@ namespace menu::item_scope_sequences
|
||||
{
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
static constexpr auto CAPTURE_DVAR_NAME = 2;
|
||||
static constexpr auto CAPTURE_DEF_VALUE = 3;
|
||||
static constexpr auto CAPTURE_MIN_VALUE = 4;
|
||||
static constexpr auto CAPTURE_MAX_VALUE = 5;
|
||||
|
||||
public:
|
||||
SequenceDvarFloat()
|
||||
{
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddLabeledMatchers(MenuExpressionMatchers().Expression(this), MenuExpressionMatchers::LABEL_EXPRESSION);
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase("dvarFloat").Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Text().Capture(CAPTURE_DVAR_NAME),
|
||||
create.Numeric().Capture(CAPTURE_DEF_VALUE),
|
||||
create.Numeric().Capture(CAPTURE_MIN_VALUE),
|
||||
create.Numeric().Capture(CAPTURE_MAX_VALUE),
|
||||
create.NumericExpression(), // def value
|
||||
create.NumericExpression(), // min value
|
||||
create.NumericExpression(), // max value
|
||||
});
|
||||
}
|
||||
|
||||
@ -344,9 +341,9 @@ namespace menu::item_scope_sequences
|
||||
|
||||
ItemScopeOperations::EnsureHasEditFieldFeatures(*state->m_current_item, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos());
|
||||
state->m_current_item->m_dvar = MenuMatcherFactory::TokenTextValue(result.NextCapture(CAPTURE_DVAR_NAME));
|
||||
state->m_current_item->m_edit_field_features->m_def_val = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_DEF_VALUE));
|
||||
state->m_current_item->m_edit_field_features->m_min_val = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_MIN_VALUE));
|
||||
state->m_current_item->m_edit_field_features->m_max_val = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_MAX_VALUE));
|
||||
state->m_current_item->m_edit_field_features->m_def_val = MenuMatcherFactory::TokenNumericExpressionValue(result);
|
||||
state->m_current_item->m_edit_field_features->m_min_val = MenuMatcherFactory::TokenNumericExpressionValue(result);
|
||||
state->m_current_item->m_edit_field_features->m_max_val = MenuMatcherFactory::TokenNumericExpressionValue(result);
|
||||
}
|
||||
};
|
||||
|
||||
@ -392,19 +389,19 @@ namespace menu::item_scope_sequences
|
||||
{
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
static constexpr auto CAPTURE_STEP_NAME = 2;
|
||||
static constexpr auto CAPTURE_STEP_VALUE = 3;
|
||||
|
||||
public:
|
||||
SequenceDvarFloatList()
|
||||
{
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddLabeledMatchers(MenuExpressionMatchers().Expression(this), MenuExpressionMatchers::LABEL_EXPRESSION);
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase("dvarFloatList").Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Char('{'),
|
||||
create.OptionalLoop(create.And({
|
||||
create.Text().Capture(CAPTURE_STEP_NAME),
|
||||
create.Numeric().Capture(CAPTURE_STEP_VALUE),
|
||||
create.NumericExpression(),
|
||||
})),
|
||||
create.Char('}')
|
||||
});
|
||||
@ -421,7 +418,7 @@ namespace menu::item_scope_sequences
|
||||
while (result.HasNextCapture(CAPTURE_STEP_NAME))
|
||||
{
|
||||
multiValueFeatures->m_step_names.emplace_back(MenuMatcherFactory::TokenTextValue(result.NextCapture(CAPTURE_STEP_NAME)));
|
||||
multiValueFeatures->m_double_values.emplace_back(MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_STEP_VALUE)));
|
||||
multiValueFeatures->m_double_values.emplace_back(MenuMatcherFactory::TokenNumericExpressionValue(result));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "Utils/ClassUtils.h"
|
||||
#include "Parsing/IParserValue.h"
|
||||
#include "AbstractMatcher.h"
|
||||
@ -35,6 +37,7 @@ protected:
|
||||
{
|
||||
AbstractMatcher<TokenType>* matcher = m_supplier->GetMatcherForLabel(m_label);
|
||||
|
||||
assert(matcher);
|
||||
if (matcher)
|
||||
return matcher->Match(lexer, tokenOffset);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user