mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-25 11:33:37 +00:00
138 lines
4.2 KiB
C++
138 lines
4.2 KiB
C++
#include "../../Minecraft.World/Platform/stdafx.h"
|
|
#include "UI.h"
|
|
#include "UIControl.h"
|
|
#include "../../Minecraft.World/Util/StringHelpers.h"
|
|
#include "../../Minecraft.World/Util/JavaMath.h"
|
|
|
|
UIControl::UIControl() {
|
|
m_parentScene = NULL;
|
|
m_lastOpacity = 1.0f;
|
|
m_controlName = "";
|
|
m_isVisible = true;
|
|
m_bHidden = false;
|
|
m_eControlType = eNoControl;
|
|
}
|
|
|
|
bool UIControl::setupControl(UIScene* scene, IggyValuePath* parent,
|
|
const std::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, NULL, &fx);
|
|
IggyValueGetF64RS(getIggyValuePath(), m_nameYPos, NULL, &fy);
|
|
IggyValueGetF64RS(getIggyValuePath(), m_nameWidth, NULL, &fwidth);
|
|
IggyValueGetF64RS(getIggyValuePath(), m_nameHeight, NULL, &fheight);
|
|
|
|
m_x = (S32)fx;
|
|
m_y = (S32)fy;
|
|
m_width = (S32)Math::round(fwidth);
|
|
m_height = (S32)Math::round(fheight);
|
|
|
|
return res;
|
|
}
|
|
|
|
#ifdef __PSVITA__
|
|
void UIControl::UpdateControl() {
|
|
F64 fx, fy, fwidth, fheight;
|
|
IggyValueGetF64RS(getIggyValuePath(), m_nameXPos, NULL, &fx);
|
|
IggyValueGetF64RS(getIggyValuePath(), m_nameYPos, NULL, &fy);
|
|
IggyValueGetF64RS(getIggyValuePath(), m_nameWidth, NULL, &fwidth);
|
|
IggyValueGetF64RS(getIggyValuePath(), m_nameHeight, NULL, &fheight);
|
|
m_x = (S32)fx;
|
|
m_y = (S32)fy;
|
|
m_width = (S32)Math::round(fwidth);
|
|
m_height = (S32)Math::round(fheight);
|
|
}
|
|
#endif // __PSVITA__
|
|
|
|
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, NULL, 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,
|
|
NULL, 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,
|
|
NULL, &bVisible);
|
|
|
|
m_isVisible = bVisible;
|
|
|
|
return bVisible;
|
|
}
|
|
|
|
IggyName UIControl::registerFastName(const std::wstring& name) {
|
|
return m_parentScene->registerFastName(name);
|
|
}
|