From 8e4b2bb057cb125cd879dfb2deedba42ed46fa20 Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 29 Dec 2021 18:08:38 +0100 Subject: [PATCH] Add non default forecolor flag if forecolor is not white --- src/Common/Game/IW4/IW4_Assets.h | 4 ++-- src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp | 14 +++++++++----- .../Parsing/Menu/Domain/CommonMenuTypes.cpp | 11 +++++++++++ .../Parsing/Menu/Domain/CommonMenuTypes.h | 2 ++ 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/Common/Game/IW4/IW4_Assets.h b/src/Common/Game/IW4/IW4_Assets.h index 360462e4..b5733deb 100644 --- a/src/Common/Game/IW4/IW4_Assets.h +++ b/src/Common/Game/IW4/IW4_Assets.h @@ -1421,8 +1421,8 @@ namespace IW4 WINDOW_FLAG_FADING_OUT = 0x10, WINDOW_FLAG_FADING_IN = 0x20, WINDOW_FLAG_80 = 0x80, - WINDOW_FLAG_SCRIPT_BACKCOLOR = 0x8000, - WINDOW_FLAG_SCRIPT_FORECOLOR = 0x10000 + WINDOW_FLAG_NON_DEFAULT_BACKCOLOR = 0x8000, + WINDOW_FLAG_NON_DEFAULT_FORECOLOR = 0x10000 }; struct windowDef_t diff --git a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp index 0cc72c24..e9809d14 100644 --- a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp +++ b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp @@ -486,10 +486,10 @@ namespace IW4 if (expression == nullptr) return nullptr; - if(expression->IsStatic()) + if (expression->IsStatic()) { const auto staticValue = expression->Evaluate(); - if(staticValue.IsTruthy()) + if (staticValue.IsTruthy()) item->window.dynamicFlags[0] |= WINDOW_FLAG_VISIBLE; return nullptr; } @@ -852,13 +852,13 @@ namespace IW4 multiValue->count = static_cast(std::min(std::extent_v, commonMultiValue->m_step_names.size())); multiValue->strDef = !commonMultiValue->m_string_values.empty() ? 1 : 0; - for(auto i = 0; i < multiValue->count; i++) + for (auto i = 0; i < multiValue->count; i++) { multiValue->dvarList[i] = ConvertString(commonMultiValue->m_step_names[i]); - if(multiValue->strDef) + if (multiValue->strDef) { - if(commonMultiValue->m_string_values.size() > static_cast(i)) + if (commonMultiValue->m_string_values.size() > static_cast(i)) multiValue->dvarStr[i] = ConvertString(commonMultiValue->m_string_values[i]); } else @@ -917,7 +917,11 @@ namespace IW4 item->textStyle = commonItem.m_text_style; item->fontEnum = ConvertTextFont(commonItem.m_text_font); ConvertColor(item->window.backColor, commonItem.m_back_color); + ConvertColor(item->window.foreColor, commonItem.m_fore_color); + if (!commonItem.m_fore_color.Equals(CommonColor(1.0, 1.0, 1.0, 1.0))) + item->window.dynamicFlags[0] |= WINDOW_FLAG_NON_DEFAULT_FORECOLOR; + ConvertColor(item->window.borderColor, commonItem.m_border_color); ConvertColor(item->window.outlineColor, commonItem.m_outline_color); ConvertColor(item->window.disableColor, commonItem.m_disable_color); diff --git a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp index 5151a0c5..4e061a9a 100644 --- a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp +++ b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.cpp @@ -1,5 +1,8 @@ #include "CommonMenuTypes.h" +#include +#include + using namespace menu; CommonColor::CommonColor() @@ -20,6 +23,14 @@ CommonColor::CommonColor(const double r, const double g, const double b, const d this->a = a; } +bool CommonColor::Equals(const CommonColor& other) const +{ + return std::fabs(this->r - other.r) < std::numeric_limits::epsilon() + && std::fabs(this->g - other.g) < std::numeric_limits::epsilon() + && std::fabs(this->b - other.b) < std::numeric_limits::epsilon() + && std::fabs(this->a - other.a) < std::numeric_limits::epsilon(); +} + CommonRect::CommonRect() : CommonRect(0, 0, 0, 0) { diff --git a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h index 9ba7c287..0331be3d 100644 --- a/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h +++ b/src/ObjLoading/Parsing/Menu/Domain/CommonMenuTypes.h @@ -15,6 +15,8 @@ namespace menu CommonColor(); CommonColor(double r, double g, double b, double a); + + bool Equals(const CommonColor& other) const; }; struct CommonRect