From 96ad97b78479bde7cf22a5af8178e6f4332eb3ef Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 29 Dec 2021 09:02:40 +0100 Subject: [PATCH] Apply menu elements defaults --- .../Game/IW4/Menu/MenuConverterIW4.cpp | 22 ++----------------- .../Parsing/Menu/Domain/CommonMenuTypes.cpp | 21 ++++++++++++++++++ .../Parsing/Menu/Domain/CommonMenuTypes.h | 3 +++ .../Menu/Sequence/GlobalScopeSequences.cpp | 7 ++++++ .../Menu/Sequence/MenuScopeSequences.cpp | 7 ++++++ 5 files changed, 40 insertions(+), 20 deletions(-) create mode 100644 src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp diff --git a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp index 2ccdb62d..ad63540f 100644 --- a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp +++ b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp @@ -26,24 +26,6 @@ namespace IW4 MenuConversionZoneState* m_conversion_zone_state; MenuAssetZoneState* m_parsing_zone_state; - static void ApplyMenuDefaults(menuDef_t* menu) - { - memset(menu, 0, sizeof(menuDef_t)); - menu->window.foreColor[0] = 1.0f; - menu->window.foreColor[1] = 1.0f; - menu->window.foreColor[2] = 1.0f; - menu->window.foreColor[3] = 1.0f; - } - - static void ApplyItemDefaults(itemDef_s* item) - { - memset(item, 0, sizeof(itemDef_s)); - item->window.foreColor[0] = 1.0f; - item->window.foreColor[1] = 1.0f; - item->window.foreColor[2] = 1.0f; - item->window.foreColor[3] = 1.0f; - } - _NODISCARD static rectDef_s ConvertRectDef(const CommonRect& rect) { return rectDef_s{ @@ -652,7 +634,7 @@ namespace IW4 _NODISCARD itemDef_s* ConvertItem(const CommonMenuDef& parentMenu, const CommonItemDef& commonItem) const { auto* item = m_memory->Create(); - ApplyItemDefaults(item); + memset(item, 0, sizeof(itemDef_s)); item->window.name = ConvertString(commonItem.m_name); item->text = ConvertString(commonItem.m_text); @@ -742,7 +724,7 @@ namespace IW4 _NODISCARD menuDef_t* ConvertMenu(const CommonMenuDef& commonMenu) const { auto* menu = m_memory->Create(); - ApplyMenuDefaults(menu); + memset(menu, 0, sizeof(menuDef_t)); menu->window.name = m_memory->Dup(commonMenu.m_name.c_str()); menu->fullScreen = commonMenu.m_full_screen; diff --git a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp new file mode 100644 index 00000000..fdca9d98 --- /dev/null +++ b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp @@ -0,0 +1,21 @@ +#include "CommonMenuTypes.h" + +using namespace menu; + +CommonColor::CommonColor() + : array{} +{ + r = 0.0; + g = 0.0; + b = 0.0; + a = 0.0; +} + +CommonColor::CommonColor(const double r, const double g, const double b, const double a) + : array{} +{ + this->r = r; + this->g = g; + this->b = b; + this->a = a; +} diff --git a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h index 5bb42f23..bc6923ed 100644 --- a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h +++ b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h @@ -12,6 +12,9 @@ namespace menu double a; }; double array[4]; + + CommonColor(); + CommonColor(double r, double g, double b, double a); }; struct CommonRect diff --git a/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp index 7e3ae9da..8b3c3798 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp @@ -61,10 +61,17 @@ namespace menu::global_scope_sequences }); } + private: + static void ApplyDefaults(CommonMenuDef& menu) + { + menu.m_fore_color = CommonColor(1.0, 1.0, 1.0, 1.0); + } + protected: void ProcessMatch(MenuFileParserState* state, SequenceResult& result) const override { auto newMenu = std::make_unique(); + ApplyDefaults(*newMenu); state->m_current_menu = newMenu.get(); state->m_menus.emplace_back(std::move(newMenu)); } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp index 6dcb8d73..68ea8fd0 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp @@ -86,10 +86,17 @@ namespace menu::menu_scope_sequences }); } + private: + static void ApplyDefaults(CommonItemDef& item) + { + item.m_fore_color = CommonColor(1.0, 1.0, 1.0, 1.0); + } + protected: void ProcessMatch(MenuFileParserState* state, SequenceResult& result) const override { auto newItemDef = std::make_unique(); + ApplyDefaults(*newItemDef); state->m_current_item = newItemDef.get(); state->m_current_menu->m_items.emplace_back(std::move(newItemDef)); }