Apply menu elements defaults

This commit is contained in:
Jan 2021-12-29 09:02:40 +01:00
parent d8b1f58b40
commit 96ad97b784
5 changed files with 40 additions and 20 deletions

View File

@ -26,24 +26,6 @@ namespace IW4
MenuConversionZoneState* m_conversion_zone_state; MenuConversionZoneState* m_conversion_zone_state;
MenuAssetZoneState* m_parsing_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) _NODISCARD static rectDef_s ConvertRectDef(const CommonRect& rect)
{ {
return rectDef_s{ return rectDef_s{
@ -652,7 +634,7 @@ namespace IW4
_NODISCARD itemDef_s* ConvertItem(const CommonMenuDef& parentMenu, const CommonItemDef& commonItem) const _NODISCARD itemDef_s* ConvertItem(const CommonMenuDef& parentMenu, const CommonItemDef& commonItem) const
{ {
auto* item = m_memory->Create<itemDef_s>(); auto* item = m_memory->Create<itemDef_s>();
ApplyItemDefaults(item); memset(item, 0, sizeof(itemDef_s));
item->window.name = ConvertString(commonItem.m_name); item->window.name = ConvertString(commonItem.m_name);
item->text = ConvertString(commonItem.m_text); item->text = ConvertString(commonItem.m_text);
@ -742,7 +724,7 @@ namespace IW4
_NODISCARD menuDef_t* ConvertMenu(const CommonMenuDef& commonMenu) const _NODISCARD menuDef_t* ConvertMenu(const CommonMenuDef& commonMenu) const
{ {
auto* menu = m_memory->Create<menuDef_t>(); auto* menu = m_memory->Create<menuDef_t>();
ApplyMenuDefaults(menu); memset(menu, 0, sizeof(menuDef_t));
menu->window.name = m_memory->Dup(commonMenu.m_name.c_str()); menu->window.name = m_memory->Dup(commonMenu.m_name.c_str());
menu->fullScreen = commonMenu.m_full_screen; menu->fullScreen = commonMenu.m_full_screen;

View File

@ -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;
}

View File

@ -12,6 +12,9 @@ namespace menu
double a; double a;
}; };
double array[4]; double array[4];
CommonColor();
CommonColor(double r, double g, double b, double a);
}; };
struct CommonRect struct CommonRect

View File

@ -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: protected:
void ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const override void ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const override
{ {
auto newMenu = std::make_unique<CommonMenuDef>(); auto newMenu = std::make_unique<CommonMenuDef>();
ApplyDefaults(*newMenu);
state->m_current_menu = newMenu.get(); state->m_current_menu = newMenu.get();
state->m_menus.emplace_back(std::move(newMenu)); state->m_menus.emplace_back(std::move(newMenu));
} }

View File

@ -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: protected:
void ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const override void ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const override
{ {
auto newItemDef = std::make_unique<CommonItemDef>(); auto newItemDef = std::make_unique<CommonItemDef>();
ApplyDefaults(*newItemDef);
state->m_current_item = newItemDef.get(); state->m_current_item = newItemDef.get();
state->m_current_menu->m_items.emplace_back(std::move(newItemDef)); state->m_current_menu->m_items.emplace_back(std::move(newItemDef));
} }