diff --git a/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp index 0ba34791..be82745d 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp @@ -17,6 +17,8 @@ using namespace menu; +constexpr auto ITEM_TYPE_OWNERDRAW = 8; + class ItemScopeOperations { inline static const CommonItemFeatureType IW4_FEATURE_TYPE_BY_TYPE[0x18]{ @@ -705,6 +707,7 @@ void ItemScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive AddSequence(std::make_unique("ownerdraw", [](const MenuFileParserState* state, const TokenPos&, const int value) { + state->m_current_item->m_type = ITEM_TYPE_OWNERDRAW; state->m_current_item->m_owner_draw = value; })); AddSequence(std::make_unique("align", diff --git a/test/ObjLoadingTests/Parsing/Menu/Sequence/ItemScopeSequencesTests.cpp b/test/ObjLoadingTests/Parsing/Menu/Sequence/ItemScopeSequencesTests.cpp index b967cb3d..c87ae2b7 100644 --- a/test/ObjLoadingTests/Parsing/Menu/Sequence/ItemScopeSequencesTests.cpp +++ b/test/ObjLoadingTests/Parsing/Menu/Sequence/ItemScopeSequencesTests.cpp @@ -334,6 +334,28 @@ namespace test::parsing::menu::sequence::item REQUIRE(item->m_rect.verticalAlign == 0); } + TEST_CASE("ItemScopeSequences: Ownerdraw sets the ownerdraw item type", "[parsing][sequence][menu]") + { + ItemSequenceTestsHelper helper(FeatureLevel::IW4, false); + const TokenPos pos; + helper.Tokens({ + SimpleParserValue::Identifier(pos, new std::string("ownerdraw")), + SimpleParserValue::Integer(pos, 220), + SimpleParserValue::EndOfFile(pos), + }); + + const auto result = helper.PerformTest(); + + REQUIRE(result); + REQUIRE(helper.m_consumed_token_count == 2); + + const auto* item = helper.m_state->m_current_item; + REQUIRE(item); + + REQUIRE(item->m_owner_draw == 220); + REQUIRE(item->m_type == 8); // ITEM_TYPE_OWNERDRAW + } + TEST_CASE("ItemScopeSequences: Simple dvarStrList works", "[parsing][sequence][menu]") { ItemSequenceTestsHelper helper(FeatureLevel::IW4, false);