mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
Properly dump and convert visible property for items
This commit is contained in:
parent
83492b907f
commit
f628d33a95
@ -1413,6 +1413,18 @@ namespace IW4
|
|||||||
WINDOW_FLAG_TEXT_ONLY_FOCUS = 0x80000000,
|
WINDOW_FLAG_TEXT_ONLY_FOCUS = 0x80000000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum WindowDefDynamicFlag : unsigned int
|
||||||
|
{
|
||||||
|
WINDOW_FLAG_HOVERED = 0x1, // guessed
|
||||||
|
WINDOW_FLAG_FOCUSED = 0x2,
|
||||||
|
WINDOW_FLAG_VISIBLE = 0x4,
|
||||||
|
WINDOW_FLAG_FADING_OUT = 0x10,
|
||||||
|
WINDOW_FLAG_FADING_IN = 0x20,
|
||||||
|
WINDOW_FLAG_80 = 0x80,
|
||||||
|
WINDOW_FLAG_SCRIPT_BACKCOLOR = 0x8000,
|
||||||
|
WINDOW_FLAG_SCRIPT_FORECOLOR = 0x10000
|
||||||
|
};
|
||||||
|
|
||||||
struct windowDef_t
|
struct windowDef_t
|
||||||
{
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
|
@ -388,7 +388,6 @@ namespace IW4
|
|||||||
statement->supportingData = nullptr; // Supporting data is set upon using it
|
statement->supportingData = nullptr; // Supporting data is set upon using it
|
||||||
|
|
||||||
std::vector<expressionEntry> expressionEntries;
|
std::vector<expressionEntry> expressionEntries;
|
||||||
|
|
||||||
ConvertExpressionEntry(statement, expressionEntries, expression, menu, item);
|
ConvertExpressionEntry(statement, expressionEntries, expression, menu, item);
|
||||||
|
|
||||||
auto* outputExpressionEntries = static_cast<expressionEntry*>(m_memory->Alloc(sizeof(expressionEntry) * expressionEntries.size()));
|
auto* outputExpressionEntries = static_cast<expressionEntry*>(m_memory->Alloc(sizeof(expressionEntry) * expressionEntries.size()));
|
||||||
@ -482,6 +481,23 @@ namespace IW4
|
|||||||
return ConvertExpression(expression, menu, item);
|
return ConvertExpression(expression, menu, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_NODISCARD Statement_s* ConvertVisibleExpression(itemDef_s* item, const ISimpleExpression* expression, const CommonMenuDef* commonMenu, const CommonItemDef* commonItem = nullptr) const
|
||||||
|
{
|
||||||
|
if (expression == nullptr)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
if(expression->IsStatic())
|
||||||
|
{
|
||||||
|
const auto staticValue = expression->Evaluate();
|
||||||
|
if(staticValue.IsTruthy())
|
||||||
|
item->window.dynamicFlags[0] |= WINDOW_FLAG_VISIBLE;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
item->window.dynamicFlags[0] |= WINDOW_FLAG_VISIBLE;
|
||||||
|
return ConvertExpression(expression, commonMenu, commonItem);
|
||||||
|
}
|
||||||
|
|
||||||
_NODISCARD static EventType SetLocalVarTypeToEventType(const SetLocalVarType setLocalVarType)
|
_NODISCARD static EventType SetLocalVarTypeToEventType(const SetLocalVarType setLocalVarType)
|
||||||
{
|
{
|
||||||
switch (setLocalVarType)
|
switch (setLocalVarType)
|
||||||
@ -889,7 +905,7 @@ namespace IW4
|
|||||||
item->type = ConvertItemType(commonItem.m_type);
|
item->type = ConvertItemType(commonItem.m_type);
|
||||||
item->window.border = commonItem.m_border;
|
item->window.border = commonItem.m_border;
|
||||||
item->window.borderSize = static_cast<float>(commonItem.m_border_size);
|
item->window.borderSize = static_cast<float>(commonItem.m_border_size);
|
||||||
item->visibleExp = ConvertExpression(commonItem.m_visible_expression.get(), &parentMenu, &commonItem);
|
item->visibleExp = ConvertVisibleExpression(item, commonItem.m_visible_expression.get(), &parentMenu, &commonItem);
|
||||||
item->disabledExp = ConvertExpression(commonItem.m_disabled_expression.get(), &parentMenu, &commonItem);
|
item->disabledExp = ConvertExpression(commonItem.m_disabled_expression.get(), &parentMenu, &commonItem);
|
||||||
item->window.ownerDraw = commonItem.m_owner_draw;
|
item->window.ownerDraw = commonItem.m_owner_draw;
|
||||||
item->window.ownerDrawFlags = commonItem.m_owner_draw_flags;
|
item->window.ownerDrawFlags = commonItem.m_owner_draw_flags;
|
||||||
|
@ -682,7 +682,12 @@ void MenuDumper::WriteItemData(const itemDef_s* item)
|
|||||||
WriteIntProperty("type", item->type, ITEM_TYPE_TEXT);
|
WriteIntProperty("type", item->type, ITEM_TYPE_TEXT);
|
||||||
WriteIntProperty("border", item->window.border, 0);
|
WriteIntProperty("border", item->window.border, 0);
|
||||||
WriteFloatProperty("borderSize", item->window.borderSize, 0.0f);
|
WriteFloatProperty("borderSize", item->window.borderSize, 0.0f);
|
||||||
|
|
||||||
|
if (item->visibleExp)
|
||||||
WriteStatementProperty("visible", item->visibleExp, true);
|
WriteStatementProperty("visible", item->visibleExp, true);
|
||||||
|
else if (item->window.dynamicFlags[0] & WINDOW_FLAG_VISIBLE)
|
||||||
|
WriteIntProperty("visible", 1, 0);
|
||||||
|
|
||||||
WriteStatementProperty("disabled", item->disabledExp, true);
|
WriteStatementProperty("disabled", item->disabledExp, true);
|
||||||
WriteIntProperty("ownerdraw", item->window.ownerDraw, 0);
|
WriteIntProperty("ownerdraw", item->window.ownerDraw, 0);
|
||||||
WriteFlagsProperty("ownerdrawFlag", item->window.ownerDrawFlags);
|
WriteFlagsProperty("ownerdrawFlag", item->window.ownerDrawFlags);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user