Files
MinecraftConsoles/Minecraft.Client/Common/UI/UIControl.cpp
ModMaker101 a9be52c41a Project modernization (#630)
* Fixed boats falling and a TP glitch #266

* Replaced every C-style cast with C++ ones

* Replaced every C-style cast with C++ ones

* Fixed boats falling and a TP glitch #266

* Updated NULL to nullptr and fixing some type issues

* Modernized and fixed a few bugs

- Replaced most instances of `NULL` with `nullptr`.
- Replaced most `shared_ptr(new ...)` with `make_shared`.
- Removed the `nullptr` macro as it was interfering with the actual nullptr keyword in some instances.

* Fixing more conflicts

* Replace int loops with size_t and start work on overrides
2026-03-08 09:56:03 +07:00

154 lines
3.9 KiB
C++

#include "stdafx.h"
#include "UI.h"
#include "UIControl.h"
#include "..\..\..\Minecraft.World\StringHelpers.h"
#include "..\..\..\Minecraft.World\JavaMath.h"
UIControl::UIControl()
{
m_parentScene = nullptr;
m_lastOpacity = 1.0f;
m_controlName = "";
m_isVisible = true;
m_bHidden = false;
m_eControlType = eNoControl;
m_id = -1;
m_pParentPanel = NULL;
}
bool UIControl::setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName)
{
m_parentScene = scene;
m_controlName = controlName;
rrbool res = IggyValuePathMakeNameRef ( &m_iggyPath , parent , controlName.c_str() );
m_nameXPos = registerFastName(L"x");
m_nameYPos = registerFastName(L"y");
m_nameWidth = registerFastName(L"width");
m_nameHeight = registerFastName(L"height");
m_funcSetAlpha = registerFastName(L"SetControlAlpha");
m_nameVisible = registerFastName(L"visible");
F64 fx, fy, fwidth, fheight;
IggyValueGetF64RS( getIggyValuePath() , m_nameXPos , nullptr , &fx );
IggyValueGetF64RS( getIggyValuePath() , m_nameYPos , nullptr , &fy );
IggyValueGetF64RS( getIggyValuePath() , m_nameWidth , nullptr , &fwidth );
IggyValueGetF64RS( getIggyValuePath() , m_nameHeight , nullptr , &fheight );
m_x = static_cast<S32>(fx);
m_y = static_cast<S32>(fy);
m_width = static_cast<S32>(Math::round(fwidth));
m_height = static_cast<S32>(Math::round(fheight));
return res;
}
void UIControl::UpdateControl()
{
F64 fx, fy, fwidth, fheight;
IggyValueGetF64RS( getIggyValuePath() , m_nameXPos , nullptr , &fx );
IggyValueGetF64RS( getIggyValuePath() , m_nameYPos , nullptr , &fy );
IggyValueGetF64RS( getIggyValuePath() , m_nameWidth , nullptr , &fwidth );
IggyValueGetF64RS( getIggyValuePath() , m_nameHeight , nullptr , &fheight );
m_x = static_cast<S32>(fx);
m_y = static_cast<S32>(fy);
m_width = static_cast<S32>(Math::round(fwidth));
m_height = static_cast<S32>(Math::round(fheight));
}
void UIControl::ReInit()
{
if(m_lastOpacity != 1.0f)
{
IggyDataValue result;
IggyDataValue value[2];
IggyStringUTF8 stringVal;
stringVal.string = (char *)m_controlName.c_str();
stringVal.length = m_controlName.length();
value[0].type = IGGY_DATATYPE_string_UTF8;
value[0].string8 = stringVal;
value[1].type = IGGY_DATATYPE_number;
value[1].number = m_lastOpacity;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, m_parentScene->m_rootPath , m_funcSetAlpha , 2 , value );
}
IggyValueSetBooleanRS( getIggyValuePath(), m_nameVisible, nullptr, m_isVisible );
}
IggyValuePath *UIControl::getIggyValuePath()
{
return &m_iggyPath;
}
S32 UIControl::getXPos()
{
return m_x;
}
S32 UIControl::getYPos()
{
return m_y;
}
S32 UIControl::getWidth()
{
return m_width;
}
S32 UIControl::getHeight()
{
return m_height;
}
void UIControl::setOpacity(float percent)
{
if(percent != m_lastOpacity)
{
m_lastOpacity = percent;
IggyDataValue result;
IggyDataValue value[2];
IggyStringUTF8 stringVal;
stringVal.string = (char *)m_controlName.c_str();
stringVal.length = m_controlName.length();
value[0].type = IGGY_DATATYPE_string_UTF8;
value[0].string8 = stringVal;
value[1].type = IGGY_DATATYPE_number;
value[1].number = m_lastOpacity;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, m_parentScene->m_rootPath , m_funcSetAlpha , 2 , value );
}
}
void UIControl::setVisible(bool visible)
{
if(visible != m_isVisible)
{
rrbool succ = IggyValueSetBooleanRS( getIggyValuePath(), m_nameVisible, nullptr, visible );
if(succ) m_isVisible = visible;
else app.DebugPrintf("Failed to set visibility for control\n");
}
}
bool UIControl::getVisible()
{
rrbool bVisible = false;
IggyResult result = IggyValueGetBooleanRS ( getIggyValuePath() , m_nameVisible, nullptr, &bVisible );
m_isVisible = bVisible;
return bVisible;
}
IggyName UIControl::registerFastName(const wstring &name)
{
return m_parentScene->registerFastName(name);
}