Added string conversion for Iggy everywhere where needed

This commit is contained in:
niansa 2026-03-12 01:54:50 +01:00 committed by Tropical
parent 2b88d096d6
commit b11da90cbb
29 changed files with 231 additions and 104 deletions

View file

@ -319,11 +319,13 @@ void UIComponent_Tooltips::_SetTooltip(unsigned int iToolTipId, const std::wstri
value[0].type = IGGY_DATATYPE_number;
value[0].number = iToolTipId;
const std::u16string convLabel = convWstringToU16string(label);
value[1].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[1].string16 = stringVal;
value[2].type = IGGY_DATATYPE_boolean;

View file

@ -32,13 +32,15 @@ void UIControl_Base::tick()
//app.DebugPrintf("Calling SetLabel - '%ls'\n", m_label.c_str());
m_bLabelChanged = false;
const std::u16string convLabel = convWstringToU16string(m_label);
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)m_label.c_str();
stringVal.length = m_label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_setLabelFunc , 1 , value );
@ -54,13 +56,15 @@ void UIControl_Base::setLabel(const std::wstring &label, bool instant, bool forc
{
m_bLabelChanged = false;
const std::u16string convLabel = convWstringToU16string(m_label);
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)m_label.c_str();
stringVal.length = m_label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_setLabelFunc , 1 , value );
@ -92,10 +96,13 @@ void UIControl_Base::setAllPossibleLabels(int labelCount, wchar_t labels[][256])
IggyDataValue *value = new IggyDataValue[labelCount];
IggyStringUTF16 * stringVal = new IggyStringUTF16[labelCount];
for(unsigned int i = 0; i < labelCount; ++i)
{
stringVal[i].string = (IggyUTF16 *)labels[i];
stringVal[i].length = wcslen(labels[i]);
std::vector<std::u16string> conv;
conv.reserve(labelCount);
for (int i = 0; i < labelCount; ++i) {
conv.push_back(convWstringToU16string(labels[i]));
stringVal[i].string = (IggyUTF16*)conv[i].c_str();
stringVal[i].length = (S32)conv[i].length();
value[i].type = IGGY_DATATYPE_string_UTF16;
value[i].string16 = stringVal[i];
}

View file

@ -18,9 +18,11 @@ void UIControl_BitmapIcon::setTextureName(const std::wstring &iconName)
IggyDataValue result;
IggyDataValue value[1];
const std::u16string convName = convWstringToU16string(iconName);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)iconName.c_str();
stringVal.length = iconName.length();
stringVal.string = (IggyUTF16*)convName.c_str();
stringVal.length = convName.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_funcSetTextureName , 1 , value );

View file

@ -22,13 +22,15 @@ void UIControl_Button::init(const std::wstring &label, int id)
m_label = label;
m_id = id;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[2];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
value[1].type = IGGY_DATATYPE_number;

View file

@ -98,9 +98,11 @@ void UIControl_ButtonList::addItem(const std::wstring &label, int data)
IggyDataValue result;
IggyDataValue value[2];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
@ -151,9 +153,11 @@ void UIControl_ButtonList::setButtonLabel(int iButtonId, const std::wstring &lab
value[0].type = IGGY_DATATYPE_number;
value[0].number = iButtonId;
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[1].type = IGGY_DATATYPE_string_UTF16;
value[1].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcSetButtonLabel, 2 , value );

View file

@ -27,13 +27,15 @@ void UIControl_CheckBox::init(const std::wstring &label, int id, bool checked)
m_id = id;
m_bChecked = checked;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[3];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
value[1].type = IGGY_DATATYPE_number;

View file

@ -39,9 +39,11 @@ void UIControl_DLCList::addItem(const std::wstring &label, bool showTick, int iI
IggyDataValue result;
IggyDataValue value[3];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16 *)label.c_str();
stringVal.length = (S32)label.length();
stringVal.string = (IggyUTF16 *)convLabel.c_str();
stringVal.length = (S32)convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;

View file

@ -22,12 +22,14 @@ bool UIControl_DynamicLabel::setupControl(UIScene *scene, IggyValuePath *parent,
void UIControl_DynamicLabel::addText(const std::wstring &text, bool bLastEntry)
{
const std::u16string convText = convWstringToU16string(text);
IggyDataValue result;
IggyDataValue value[2];
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)text.c_str();
stringVal.length = text.length();
stringVal.string = (IggyUTF16*)convText.c_str();
stringVal.length = convText.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
@ -95,4 +97,4 @@ S32 UIControl_DynamicLabel::GetRealHeight()
iRealHeight = (S32)result.number;
}
return iRealHeight;
}
}

View file

@ -21,13 +21,15 @@ void UIControl_Label::init(const std::wstring &label)
{
m_label = label;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_initFunc , 1 , value );
}
@ -35,6 +37,7 @@ void UIControl_Label::init(const std::wstring &label)
void UIControl_Label::init(const std::string &label)
{
m_label = convStringToWstring(label);
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_string_UTF8;

View file

@ -53,15 +53,19 @@ void UIControl_LeaderboardList::setupTitles(const std::wstring &rank, const std:
IggyDataValue result;
IggyDataValue value[2];
const std::u16string convRank = convWstringToU16string(rank);
IggyStringUTF16 stringVal0;
stringVal0.string = (IggyUTF16*)rank.c_str();
stringVal0.length = rank.length();
stringVal0.string = (IggyUTF16*)convRank.c_str();
stringVal0.length = convRank.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal0;
const std::u16string convGamertag = convWstringToU16string(gamertag);
IggyStringUTF16 stringVal1;
stringVal1.string = (IggyUTF16*)gamertag.c_str();
stringVal1.length = gamertag.length();
stringVal1.string = (IggyUTF16*)convGamertag.c_str();
stringVal1.length = convGamertag.length();
value[1].type = IGGY_DATATYPE_string_UTF16;
value[1].string16 = stringVal1;
@ -125,18 +129,22 @@ void UIControl_LeaderboardList::addDataSet(bool bLast, int iId, int iRank, const
value[2].type = IGGY_DATATYPE_number;
value[2].number = iRank;
const std::u16string convGamertag = convWstringToU16string(gamertag);
IggyStringUTF16 stringVal0;
stringVal0.string = (IggyUTF16*)gamertag.c_str();
stringVal0.length = gamertag.length();
stringVal0.string = (IggyUTF16*)convGamertag.c_str();
stringVal0.length = convGamertag.length();
value[3].type = IGGY_DATATYPE_string_UTF16;
value[3].string16 = stringVal0;
value[4].type = IGGY_DATATYPE_boolean;
value[4].boolval = bDisplayMessage;
const std::u16string convCol0 = convWstringToU16string(col0);
IggyStringUTF16 stringVal1;
stringVal1.string = (IggyUTF16*)col0.c_str();
stringVal1.length = col0.length();
stringVal1.string = (IggyUTF16*)convCol0.c_str();
stringVal1.length = convCol0.length();
value[5].type = IGGY_DATATYPE_string_UTF16;
value[5].string16 = stringVal1;
@ -146,9 +154,11 @@ void UIControl_LeaderboardList::addDataSet(bool bLast, int iId, int iRank, const
}
else
{
const std::u16string convCol1 = convWstringToU16string(col1);
IggyStringUTF16 stringVal2;
stringVal2.string = (IggyUTF16*)col1.c_str();
stringVal2.length = col1.length();
stringVal2.string = (IggyUTF16*)convCol1.c_str();
stringVal2.length = convCol1.length();
value[6].type = IGGY_DATATYPE_string_UTF16;
value[6].string16 = stringVal2;
}
@ -159,9 +169,11 @@ void UIControl_LeaderboardList::addDataSet(bool bLast, int iId, int iRank, const
}
else
{
const std::u16string convCol2 = convWstringToU16string(col2);
IggyStringUTF16 stringVal3;
stringVal3.string = (IggyUTF16*)col2.c_str();
stringVal3.length = col2.length();
stringVal3.string = (IggyUTF16*)convCol2.c_str();
stringVal3.length = convCol2.length();
value[7].type = IGGY_DATATYPE_string_UTF16;
value[7].string16 = stringVal3;
}
@ -172,9 +184,11 @@ void UIControl_LeaderboardList::addDataSet(bool bLast, int iId, int iRank, const
}
else
{
const std::u16string convCol3 = convWstringToU16string(col3);
IggyStringUTF16 stringVal4;
stringVal4.string = (IggyUTF16*)col3.c_str();
stringVal4.length = col3.length();
stringVal4.string = (IggyUTF16*)convCol3.c_str();
stringVal4.length = convCol3.length();
value[8].type = IGGY_DATATYPE_string_UTF16;
value[8].string16 = stringVal4;
}
@ -185,9 +199,11 @@ void UIControl_LeaderboardList::addDataSet(bool bLast, int iId, int iRank, const
}
else
{
const std::u16string convCol4 = convWstringToU16string(col4);
IggyStringUTF16 stringVal5;
stringVal5.string = (IggyUTF16*)col4.c_str();
stringVal5.length = col4.length();
stringVal5.string = (IggyUTF16*)convCol4.c_str();
stringVal5.length = convCol4.length();
value[9].type = IGGY_DATATYPE_string_UTF16;
value[9].string16 = stringVal5;
}
@ -198,9 +214,11 @@ void UIControl_LeaderboardList::addDataSet(bool bLast, int iId, int iRank, const
}
else
{
const std::u16string convCol5 = convWstringToU16string(col5);
IggyStringUTF16 stringVal6;
stringVal6.string = (IggyUTF16*)col5.c_str();
stringVal6.length = col5.length();
stringVal6.string = (IggyUTF16*)convCol5.c_str();
stringVal6.length = convCol5.length();
value[10].type = IGGY_DATATYPE_string_UTF16;
value[10].string16 = stringVal6;
}
@ -211,9 +229,11 @@ void UIControl_LeaderboardList::addDataSet(bool bLast, int iId, int iRank, const
}
else
{
const std::u16string convCol6 = convWstringToU16string(col6);
IggyStringUTF16 stringVal7;
stringVal7.string = (IggyUTF16*)col6.c_str();
stringVal7.length = col6.length();
stringVal7.string = (IggyUTF16*)convCol6.c_str();
stringVal7.length = convCol6.length();
value[11].type = IGGY_DATATYPE_string_UTF16;
value[11].string16 = stringVal7;
}
@ -235,4 +255,4 @@ void UIControl_LeaderboardList::SetTouchFocus(S32 iX, S32 iY, bool bRepeat)
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcSetTouchFocus, 3 , value );
}
#endif
#endif

View file

@ -19,9 +19,11 @@ void UIControl_PlayerList::addItem(const std::wstring &label, int iPlayerIcon, i
IggyDataValue result;
IggyDataValue value[4];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = (S32)label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = (S32)convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;

View file

@ -31,13 +31,15 @@ void UIControl_Progress::init(const std::wstring &label, int id, int min, int ma
m_max = max;
m_current = current;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_initFunc , 1 , value );
@ -81,4 +83,4 @@ void UIControl_Progress::showBar(bool show)
value[0].boolval = show;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_showBarFunc , 1 , value );
}
}
}

View file

@ -59,9 +59,11 @@ void UIControl_SaveList::addItem(const std::string &label, const std::wstring &i
value[1].type = IGGY_DATATYPE_number;
value[1].number = m_itemCount;
const std::u16string convName = convWstringToU16string(iconName);
IggyStringUTF16 stringVal2;
stringVal2.string = (IggyUTF16*)iconName.c_str();
stringVal2.length = iconName.length();
stringVal2.string = (IggyUTF16*)convName.c_str();
stringVal2.length = convName.length();
value[2].type = IGGY_DATATYPE_string_UTF16;
value[2].string16 = stringVal2;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_addNewItemFunc , 3 , value );
@ -72,18 +74,22 @@ void UIControl_SaveList::addItem(const std::wstring &label, const std::wstring &
IggyDataValue result;
IggyDataValue value[3];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = (S32)label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = (S32)convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
value[1].type = IGGY_DATATYPE_number;
value[1].number = m_itemCount;
const std::u16string convName = convWstringToU16string(iconName);
IggyStringUTF16 stringVal2;
stringVal2.string = (IggyUTF16*)iconName.c_str();
stringVal2.length = iconName.length();
stringVal2.string = (IggyUTF16*)convName.c_str();
stringVal2.length = convName.length();
value[2].type = IGGY_DATATYPE_string_UTF16;
value[2].string16 = stringVal2;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_addNewItemFunc , 3 , value );
@ -97,9 +103,11 @@ void UIControl_SaveList::setTextureName(int iId, const std::wstring &iconName)
value[0].type = IGGY_DATATYPE_number;
value[0].number = iId;
const std::u16string convName = convWstringToU16string(iconName);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)iconName.c_str();
stringVal.length = iconName.length();
stringVal.string = (IggyUTF16*)convName.c_str();
stringVal.length = convName.length();
value[1].type = IGGY_DATATYPE_string_UTF16;
value[1].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_funcSetTextureName , 2 , value );

View file

@ -30,13 +30,15 @@ void UIControl_Slider::init(const std::wstring &label, int id, int min, int max,
m_max = max;
m_current = current;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[5];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
value[1].type = IGGY_DATATYPE_number;

View file

@ -31,13 +31,15 @@ void UIControl_SpaceIndicatorBar::init(const std::wstring &label, int id, __int6
m_min = min;
m_max = max;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_initFunc , 1 , value );
@ -119,4 +121,4 @@ void UIControl_SpaceIndicatorBar::setSaveGameOffset(float offset)
value[0].type = IGGY_DATATYPE_number;
value[0].number = m_currentOffset;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_setSaveGameOffsetFunc , 1 , value );
}
}

View file

@ -25,13 +25,15 @@ void UIControl_TextInput::init(const std::wstring &label, int id)
m_label = label;
m_id = id;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[2];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
value[1].type = IGGY_DATATYPE_number;

View file

@ -28,13 +28,15 @@ void UIControl_TexturePackList::init(const std::wstring &label, int id)
m_label = label;
m_id = id;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[2];
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].string16 = stringVal;
value[1].type = IGGY_DATATYPE_number;
@ -57,6 +59,8 @@ void UIControl_TexturePackList::init(const std::wstring &label, int id)
void UIControl_TexturePackList::addPack(int id, const std::wstring &textureName)
{
const std::u16string convName = convWstringToU16string(textureName);
IggyDataValue result;
IggyDataValue value[2];
value[0].type = IGGY_DATATYPE_number;
@ -65,8 +69,8 @@ void UIControl_TexturePackList::addPack(int id, const std::wstring &textureName)
value[1].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)textureName.c_str();
stringVal.length = textureName.length();
stringVal.string = (IggyUTF16*)convName.c_str();
stringVal.length = convName.length();
value[1].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath(), m_addPackFunc ,2 , value );
}

View file

@ -507,7 +507,9 @@ IggyName UIScene::registerFastName(const std::wstring &name)
}
else
{
var = IggyPlayerCreateFastName ( getMovie() , (IggyUTF16 *)name.c_str() , -1 );
const std::u16string convName = convWstringToU16string(name);
var = IggyPlayerCreateFastName ( getMovie() , (IggyUTF16 *)convName.c_str() , -1 );
m_fastNames[name] = var;
}
return var;

View file

@ -360,9 +360,11 @@ void UIScene_AnvilMenu::setCostLabel(const std::wstring &label, bool canAfford)
IggyDataValue result;
IggyDataValue value[2];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;

View file

@ -642,9 +642,11 @@ void UIScene_Credits::setNextLabel(const std::wstring &label, ECreditTextTypes s
IggyDataValue result;
IggyDataValue value[3];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;

View file

@ -126,9 +126,11 @@ void UIScene_EndPoem::tick()
IggyDataValue result;
IggyDataValue value[3];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
@ -268,4 +270,4 @@ void UIScene_EndPoem::updateNoise()
found=(int)noiseString.find(tag,found+1);
}
}
}

View file

@ -534,9 +534,10 @@ void UIScene_HUD::SetDragonLabel(const std::wstring &label)
{
IggyDataValue result;
IggyDataValue value[1];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetDragonLabel , 1 , value );
@ -564,9 +565,10 @@ void UIScene_HUD::SetSelectedLabel(const std::wstring &label)
IggyDataValue result;
IggyDataValue value[1];
const std::u16string convLabel = convWstringToU16string(label);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetSelectedLabel , 1 , value );
@ -739,8 +741,9 @@ void UIScene_HUD::SetDisplayName(const std::wstring &displayName)
IggyDataValue result;
IggyDataValue value[1];
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)displayName.c_str();
stringVal.length = displayName.length();
const std::u16string convName = convWstringToU16string(displayName);
stringVal.string = (IggyUTF16*)convName.c_str();
stringVal.length = convName.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetDisplayName , 1 , value );

View file

@ -305,10 +305,15 @@ void UIScene_HowToPlay::StartPage( EHowToPlayPage ePage )
value[0].type = IGGY_DATATYPE_number;
value[0].number = gs_pageToFlashMapping[(int)ePage];
std::vector<std::u16string> conv;
conv.reserve(paragraphs.size());
for(unsigned int i = 0; i < paragraphs.size(); ++i)
{
stringVal[i].string = (IggyUTF16 *)paragraphs[i].c_str();
stringVal[i].length = paragraphs[i].length();
conv.push_back(convWstringToU16string(paragraphs[i]));
stringVal[i].string = (IggyUTF16 *)conv[i].c_str();
stringVal[i].length = conv[i].length();
value[i+1].type = IGGY_DATATYPE_string_UTF16;
value[i+1].string16 = stringVal[i];
}

View file

@ -302,9 +302,10 @@ void UIScene_InventoryMenu::updateEffectsDisplay()
value[0].type = IGGY_DATATYPE_number;
value[0].number = icon;
const std::u16string convString = convWstringToU16string(effectString);
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)effectString.c_str();
stringVal.length = effectString.length();
stringVal.string = (IggyUTF16*)convString.c_str();
stringVal.length = convString.length();
value[1].type = IGGY_DATATYPE_string_UTF16;
value[1].string16 = stringVal;

View file

@ -26,8 +26,9 @@ UIScene_Keyboard::UIScene_Keyboard(int iPad, void *initData, UILayer *parentLaye
// Initialise function keyboard Buttons and set alternative symbol button string
std::wstring label = L"Abc";
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
const std::u16string convLabel = convWstringToU16string(label);
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
IggyDataValue result;
IggyDataValue value[1];
@ -178,4 +179,4 @@ void UIScene_Keyboard::KeyboardDonePressed()
// ToDo: Keyboard can now pass on its final string value and close itself down
navigateBack();
}
}

View file

@ -1362,14 +1362,16 @@ void UIScene_SkinSelectMenu::setLeftLabel(const std::wstring &label)
{
if(label.compare(m_leftLabel) != 0)
{
m_leftLabel = label;
m_leftLabel = label;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[1];
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
@ -1381,14 +1383,16 @@ void UIScene_SkinSelectMenu::setCentreLabel(const std::wstring &label)
{
if(label.compare(m_centreLabel) != 0)
{
m_centreLabel = label;
m_centreLabel = label;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[1];
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
@ -1402,12 +1406,14 @@ void UIScene_SkinSelectMenu::setRightLabel(const std::wstring &label)
{
m_rightLabel = label;
const std::u16string convLabel = convWstringToU16string(label);
IggyDataValue result;
IggyDataValue value[1];
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)label.c_str();
stringVal.length = label.length();
stringVal.string = (IggyUTF16*)convLabel.c_str();
stringVal.length = convLabel.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;

View file

@ -255,12 +255,14 @@ void UIScene_TradingMenu::setTradeRedBox(int index, bool show)
void UIScene_TradingMenu::setOfferDescription(const std::wstring &name, std::vector<std::wstring> &unformattedStrings)
{
const std::u16string convName = convWstringToU16string(name);
IggyDataValue result;
IggyDataValue value[1];
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)name.c_str();
stringVal.length = name.length();
stringVal.string = (IggyUTF16*)convName.c_str();
stringVal.length = convName.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;

View file

@ -46,6 +46,38 @@ std::wstring convStringToWstring(const std::string& converting)
return converted;
}
std::u16string convWstringToU16string(const std::wstring& converting) {
std::u16string out;
out.reserve(converting.size());
if constexpr (sizeof(wchar_t) == sizeof(char16_t)) {
// wchar_t is UTF-16: direct copy
out.assign(converting.begin(), converting.end());
} else {
// wchar_t is UTF-32: encode to UTF-16
for (wchar_t wc : converting) {
uint32_t cp = static_cast<uint32_t>(wc);
if (cp <= 0xFFFF) {
// Avoid producing UTF-16 surrogate code points directly
if (cp >= 0xD800 && cp <= 0xDFFF) {
out.push_back(u'\uFFFD'); // replacement char
} else {
out.push_back(static_cast<char16_t>(cp));
}
} else if (cp <= 0x10FFFF) {
cp -= 0x10000;
out.push_back(static_cast<char16_t>(0xD800 + (cp >> 10)));
out.push_back(static_cast<char16_t>(0xDC00 + (cp & 0x3FF)));
} else {
out.push_back(u'\uFFFD'); // invalid code point
}
}
}
return out;
}
// Convert for filename std::wstrings to a straight character pointer for Xbox APIs. The returned string is only valid until
// this function is called again, and it isn't thread-safe etc. as I'm just storing the returned name in a local static
// to save having to clear it up everywhere this is used.
@ -130,4 +162,4 @@ std::wstring parseXMLSpecials(const std::wstring &in)
out = replaceAll(out, L"&lt;", L"<");
out = replaceAll(out, L"&gt;", L">");
return out;
}
}

View file

@ -29,6 +29,7 @@ template <class T> T _fromHEXString(const std::wstring& s)
}
std::wstring convStringToWstring(const std::string& converting);
std::u16string convWstringToU16string(const std::wstring& converting);
const char *wstringtofilename(const std::wstring& name);
std::wstring filenametowstring(const char *name);