From 3af77a677427cbd8cd400a6104acd91ea4608a33 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Sat, 31 Oct 2026 21:55:36 +0000 Subject: [PATCH] Decompile fn_16810 (CUISkillDelayInfo::Slot15) Batch #8626 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_16810 CUISkillDelayInfo::Slot15: logic confirmed by peer review Peer-reviewed-by: youko, dori Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/UI/SkillDelayInfo/SkillDelayInfo.h | 1 + Source/UI/SkillDelayInfo/UISkillDelayInfo.cpp | 453 ++++++++++++++++++ 2 files changed, 454 insertions(+) diff --git a/Source/UI/SkillDelayInfo/SkillDelayInfo.h b/Source/UI/SkillDelayInfo/SkillDelayInfo.h index fd3a4098..bac36bce 100644 --- a/Source/UI/SkillDelayInfo/SkillDelayInfo.h +++ b/Source/UI/SkillDelayInfo/SkillDelayInfo.h @@ -55,6 +55,7 @@ class CUITextViewer; class CUISkillDelayInfo : public CUIFrameWnd { public: __declspec(noinline) CUISkillDelayInfo(); + void Slot15(int width, int height) override; void Slot16() override; void Paint() override; int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override; diff --git a/Source/UI/SkillDelayInfo/UISkillDelayInfo.cpp b/Source/UI/SkillDelayInfo/UISkillDelayInfo.cpp index 126e4f9e..9cce1130 100644 --- a/Source/UI/SkillDelayInfo/UISkillDelayInfo.cpp +++ b/Source/UI/SkillDelayInfo/UISkillDelayInfo.cpp @@ -606,3 +606,456 @@ void CUISkillDelayInfo::Slot16() { this->delayList->Invalidate(); this->description->scrollBar->SetHidden(1); } + +#include "UI/Window/UIWindowMgr.h" + +// OFFSET: 0x00A720A0 +// FUNCTION: fn_16810 +void CUISkillDelayInfo::Slot15(int width, int height) { + this->titleBar = new CUITitleBar(*this->m_context); + this->titleBar->SetSize(345, 17); + this->titleBar->Move(0, 0); + { + CUITitleBar* titleBar = this->titleBar; + const std::uint8_t titleRightSource[] = { + 0xF3, 0xCC, 0x95, 0x0B, 0xE9, 0xFB, 0x16, 0x84, 0xF5, 0x87, 0x95, 0x3D, 0x94, 0x8F, 0x8F, 0x2B, 0x52, 0x10, 0x3C, 0x92, 0x76, 0x5C, 0xBD, 0x3D, + 0x56, 0x11, 0x33, 0x90, 0x4A, 0x50, 0x8F, 0x3D, 0x5A, 0x17, 0x39, 0x94, 0x4B, 0x54, 0xA1, 0x16, 0x41, 0x0A, 0x32, 0x99, 0x5D, 0x1B, 0xB1, 0x24, + 0x43, 0x63}; + thread_local EncryptedName titleRightName(titleRightSource); + const std::string titleRight(titleRightName.Text()); + const std::uint8_t titleMiddleSource[] = { + 0x75, 0x20, 0x81, 0xDF, 0xD3, 0x33, 0xEA, 0xB4, 0x73, 0x6B, 0x81, 0xE9, 0xAE, 0x47, 0x73, 0x1B, 0xD4, 0xFC, 0x28, 0x46, 0x4C, 0x94, 0x41, 0x0D, + 0xD0, 0xFD, 0x27, 0x44, 0x70, 0x98, 0x73, 0x0D, 0xDC, 0xFB, 0x2D, 0x40, 0x71, 0x9C, 0x5D, 0x26, 0xD8, 0xE6, 0x25, 0x0B, 0x71, 0x90, 0x5F, 0x79}; + thread_local EncryptedName titleMiddleName(titleMiddleSource); + const std::string titleMiddle(titleMiddleName.Text()); + const std::uint8_t titleLeftSource[] = { + 0x7F, 0xC6, 0x23, 0x37, 0x45, 0x49, 0x9A, 0x3C, 0x79, 0x8D, 0x23, 0x01, 0x38, 0x3D, 0x03, 0x93, 0xDE, 0x1A, 0x8A, 0xAE, 0xDA, 0xEE, 0x31, 0x85, + 0xDA, 0x1B, 0x85, 0xAC, 0xE6, 0xE2, 0x03, 0x85, 0xD6, 0x1D, 0x8F, 0xA8, 0xE7, 0xE6, 0x2D, 0xAE, 0xD3, 0x0C, 0x85, 0xB9, 0xAB, 0xE5, 0x32, 0x81, + 0xBF}; + thread_local EncryptedName titleLeftName(titleLeftSource); + const std::string titleLeft(titleLeftName.Text()); + titleBar->SetImages(titleLeft, titleMiddle, titleRight); + } + this->AddChild(this->titleBar); + + CUIStaticText* title = new CUIStaticText(*this->m_context); + title->SetSize(100, 17); + title->Move(18, 0); + { + const std::uint8_t titleTextSource[] = { + 0xF5, 0x4A, 0x6E, 0x43, 0xDB, 0x8C, 0xEB, 0xC0, 0x95, 0x43, 0x6B, 0xF9}; + thread_local EncryptedName titleTextName(titleTextSource); + const char* titleText = titleTextName.Text(); + title->SetText(titleText, std::strlen(titleText)); + } + title->SetFitText(0); + title->SetAlign(0, 6); + { + const std::uint8_t titleFontSource[] = { + 0xD0, 0xBC, 0xA5, 0xF2, 0xA0, 0xBB}; + thread_local EncryptedName titleFontName(titleFontSource); + const std::string titleFont(titleFontName.Text()); + title->SetFont(titleFont); + } + title->SetFontHeight(12); + title->SetBold(0); + title->SetColor(0); + title->SetShadow(1, 0xFFFFFF); + title->SetOutline(0, 0xFFFFFF); + this->titleBar->titleText = title; + this->titleBar->AddChild(title); + + CUIImageButton* menuButton = new CUIImageButton(*this->m_context); + menuButton->SetSize(11, 11); + menuButton->Move(3, 3); + menuButton->SetOnClick([this]() { this->OnButtonClick(); }); + menuButton->disabled = 0; + menuButton->Invalidate(); + { + const std::uint8_t menuDisabledSource[] = { + 0x0F, 0x74, 0x11, 0xEF, 0x59, 0xE1, 0xAA, 0xDE, 0x09, 0x3F, 0x11, 0xD9, 0x24, 0x95, 0x33, 0x71, 0xAE, 0xA8, 0xB8, 0x76, 0xC6, 0x46, 0x01, 0x67, + 0xAA, 0xA9, 0xB7, 0x74, 0xFA, 0x4A, 0x33, 0x60, 0xB6, 0xA8, 0x8E, 0x77, 0xF8, 0x5C, 0x0A, 0x4C, 0xA0, 0xBD, 0xB7, 0x3B, 0xFB, 0x42, 0x1F, 0x13}; + thread_local EncryptedName menuDisabledName(menuDisabledSource); + const std::string menuDisabled(menuDisabledName.Text()); + const std::uint8_t menuPressedSource[] = { + 0xEB, 0x78, 0x89, 0xD5, 0xCF, 0x1F, 0xE6, 0xC6, 0xED, 0x33, 0x89, 0xE3, 0xB2, 0x6B, 0x7F, 0x69, 0x4A, 0xA4, 0x20, 0x4C, 0x50, 0xB8, 0x4D, 0x7F, + 0x4E, 0xA5, 0x2F, 0x4E, 0x6C, 0xB4, 0x7F, 0x78, 0x52, 0xA4, 0x16, 0x4D, 0x6E, 0xA2, 0x46, 0x54, 0x44, 0xB9, 0x67, 0x4D, 0x62, 0xA1, 0x23}; + thread_local EncryptedName menuPressedName(menuPressedSource); + const std::string menuPressed(menuPressedName.Text()); + const std::uint8_t menuHoverSource[] = { + 0x4B, 0x32, 0xB7, 0x77, 0x21, 0x13, 0xA2, 0xDA, 0x4D, 0x79, 0xB7, 0x41, 0x5C, 0x67, 0x3B, 0x75, 0xEA, 0xEE, 0x1E, 0xEE, 0xBE, 0xB4, 0x09, 0x63, + 0xEE, 0xEF, 0x11, 0xEC, 0x82, 0xB8, 0x3B, 0x64, 0xF2, 0xEE, 0x28, 0xEF, 0x80, 0xAE, 0x02, 0x48, 0xE4, 0xF3, 0x59, 0xEF, 0x8C, 0xAD, 0x67}; + thread_local EncryptedName menuHoverName(menuHoverSource); + const std::string menuHover(menuHoverName.Text()); + const std::uint8_t menuNormalSource[] = { + 0x21, 0x2C, 0x11, 0x17, 0xD1, 0x4F, 0x7E, 0x0C, 0x27, 0x67, 0x11, 0x21, 0xAC, 0x3B, 0xE7, 0xA3, 0x80, 0xF0, 0xB8, 0x8E, 0x4E, 0xE8, 0xD5, 0xB5, + 0x84, 0xF1, 0xB7, 0x8C, 0x72, 0xE4, 0xE7, 0xB2, 0x98, 0xF0, 0x8E, 0x8F, 0x70, 0xF2, 0xDE, 0x9E, 0x8E, 0xE5, 0xB7, 0xC3, 0x73, 0xEC, 0xCB, 0xC1}; + thread_local EncryptedName menuNormalName(menuNormalSource); + const std::string menuNormal(menuNormalName.Text()); + menuButton->SetImages(menuNormal, menuHover, menuPressed, menuDisabled); + } + this->titleBar->AddChild(menuButton); + + CUIImageButton* closeButton = new CUIImageButton(*this->m_context); + closeButton->SetSize(11, 11); + closeButton->Move(331, 3); + closeButton->SetOnClick([this]() { g_windowMgr.CloseWindow(10030); }); + closeButton->disabled = 0; + closeButton->Invalidate(); + { + const std::uint8_t closeDisabledSource[] = { + 0xC1, 0xDA, 0x3D, 0x23, 0xEF, 0x73, 0x6A, 0x7A, 0xC7, 0x91, 0x3D, 0x15, 0x92, 0x07, 0xF3, 0xD5, 0x60, 0x06, 0x94, 0xBA, 0x70, 0xD4, 0xC1, 0xC3, + 0x64, 0x07, 0x9B, 0xB8, 0x4C, 0xD8, 0xF3, 0xC4, 0x78, 0x06, 0xA2, 0xBA, 0x43, 0xD2, 0xDC, 0xD2, 0x5E, 0x1A, 0x9B, 0xBF, 0x01, 0xDF, 0xC2, 0xC7, + 0x01}; + thread_local EncryptedName closeDisabledName(closeDisabledSource); + const std::string closeDisabled(closeDisabledName.Text()); + const std::uint8_t closePressedSource[] = { + 0x1D, 0xFA, 0xAF, 0x55, 0x29, 0xDB, 0x2C, 0xB4, 0x1B, 0xB1, 0xAF, 0x63, 0x54, 0xAF, 0xB5, 0x1B, 0xBC, 0x26, 0x06, 0xCC, 0xB6, 0x7C, 0x87, 0x0D, + 0xB8, 0x27, 0x09, 0xCE, 0x8A, 0x70, 0xB5, 0x0A, 0xA4, 0x26, 0x30, 0xCC, 0x85, 0x7A, 0x9A, 0x1C, 0x82, 0x3A, 0x01, 0x81, 0x8B, 0x78, 0x99, 0x79}; + thread_local EncryptedName closePressedName(closePressedSource); + const std::string closePressed(closePressedName.Text()); + const std::uint8_t closeHoverSource[] = { + 0x81, 0x92, 0x97, 0x8F, 0xF9, 0x51, 0x88, 0xAA, 0x87, 0xD9, 0x97, 0xB9, 0x84, 0x25, 0x11, 0x05, 0x20, 0x4E, 0x3E, 0x16, 0x66, 0xF6, 0x23, 0x13, + 0x24, 0x4F, 0x31, 0x14, 0x5A, 0xFA, 0x11, 0x14, 0x38, 0x4E, 0x08, 0x16, 0x55, 0xF0, 0x3E, 0x02, 0x1E, 0x52, 0x39, 0x5B, 0x5B, 0xF2, 0x3D, 0x67}; + thread_local EncryptedName closeHoverName(closeHoverSource); + const std::string closeHover(closeHoverName.Text()); + const std::uint8_t closeNormalSource[] = { + 0x91, 0x02, 0x3D, 0xD1, 0x8F, 0xFD, 0x1A, 0xA6, 0x97, 0x49, 0x3D, 0xE7, 0xF2, 0x89, 0x83, 0x09, 0x30, 0xDE, 0x94, 0x48, 0x10, 0x5A, 0xB1, 0x1F, + 0x34, 0xDF, 0x9B, 0x4A, 0x2C, 0x56, 0x83, 0x18, 0x28, 0xDE, 0xA2, 0x48, 0x23, 0x5C, 0xAC, 0x0E, 0x0E, 0xC2, 0x9B, 0x4D, 0x61, 0x51, 0xB2, 0x1B, + 0x51}; + thread_local EncryptedName closeNormalName(closeNormalSource); + const std::string closeNormal(closeNormalName.Text()); + closeButton->SetImages(closeNormal, closeHover, closePressed, closeDisabled); + } + this->titleBar->SetSecondButton(closeButton); + + this->unknown_00DC = new CUIStaticText(*this->m_context); + this->unknown_00DC->SetSize(325, 25); + this->unknown_00DC->Move(10, 27); + this->unknown_00DC->SetText("", 0); + this->unknown_00DC->SetFitText(1); + this->unknown_00DC->SetAlign(6, 6); + { + const std::uint8_t noticeFontSource[] = { + 0xA2, 0x0E, 0x5F, 0x40, 0x20, 0x65}; + thread_local EncryptedName noticeFontName(noticeFontSource); + const std::string noticeFont(noticeFontName.Text()); + this->unknown_00DC->SetFont(noticeFont); + } + this->unknown_00DC->SetFontHeight(13); + this->unknown_00DC->SetBold(1); + this->unknown_00DC->SetColor(0); + this->unknown_00DC->SetShadow(0, 0xFFFFFF); + this->unknown_00DC->SetOutline(0, 0xFFFFFF); + this->AddChild(this->unknown_00DC); + + this->labels[0] = new CUIStaticText(*this->m_context); + this->labels[0]->SetSize(140, 22); + this->labels[0]->Move(54, 58); + { + const std::uint8_t castingTextSource[] = { + 0x27, 0x66, 0xEE, 0x4D, 0x63, 0xC4, 0xE3}; + thread_local EncryptedName castingTextName(castingTextSource); + const char* castingText = castingTextName.Text(); + this->labels[0]->SetText(castingText, std::strlen(castingText)); + } + this->labels[0]->SetFitText(0); + this->labels[0]->SetAlign(6, 6); + { + const std::uint8_t castingFontSource[] = { + 0x1E, 0xF2, 0x6F, 0x14, 0x38, 0xCB}; + thread_local EncryptedName castingFontName(castingFontSource); + const std::string castingFont(castingFontName.Text()); + this->labels[0]->SetFont(castingFont); + } + this->labels[0]->SetFontHeight(13); + this->labels[0]->SetBold(1); + this->labels[0]->SetColor(0); + this->labels[0]->SetShadow(0, 0xFFFFFF); + this->labels[0]->SetOutline(0, 0xFFFFFF); + this->AddChild(this->labels[0]); + + this->labels[1] = new CUIStaticText(*this->m_context); + this->labels[1]->SetSize(140, 22); + this->labels[1]->Move(194, 58); + { + const std::uint8_t cooldownTextSource[] = { + 0x3B, 0x13, 0x98, 0xBB, 0x67, 0x7C, 0xA3}; + thread_local EncryptedName cooldownTextName(cooldownTextSource); + const char* cooldownText = cooldownTextName.Text(); + this->labels[1]->SetText(cooldownText, std::strlen(cooldownText)); + } + this->labels[1]->SetFitText(0); + this->labels[1]->SetAlign(6, 6); + { + const std::uint8_t cooldownFontSource[] = { + 0xA8, 0x58, 0x3B, 0x64, 0xA8, 0xD1}; + thread_local EncryptedName cooldownFontName(cooldownFontSource); + const char* cooldownFont = cooldownFontName.Text(); + this->labels[1]->SetFont(std::string(cooldownFont)); + } + this->labels[1]->SetFontHeight(13); + this->labels[1]->SetBold(1); + this->labels[1]->SetColor(0); + this->labels[1]->SetShadow(0, 0xFFFFFF); + this->labels[1]->SetOutline(0, 0xFFFFFF); + this->AddChild(this->labels[1]); + + this->labels[2] = new CUIStaticText(*this->m_context); + this->labels[2]->SetSize(44, 22); + this->labels[2]->Move(10, 82); + { + const std::uint8_t levelTextSource[] = { + 0x3A, 0x04, 0x01, 0xC4, 0xB7}; + thread_local EncryptedName levelTextName(levelTextSource); + const char* levelText = levelTextName.Text(); + this->labels[2]->SetText(levelText, std::strlen(levelText)); + } + this->labels[2]->SetFitText(1); + this->labels[2]->SetAlign(6, 6); + { + const std::uint8_t levelFontSource[] = { + 0x7A, 0x34, 0xE7, 0xA0, 0x94, 0x1B}; + thread_local EncryptedName levelFontName(levelFontSource); + const char* levelFont = levelFontName.Text(); + this->labels[2]->SetFont(std::string(levelFont)); + } + this->labels[2]->SetFontHeight(12); + this->labels[2]->SetBold(1); + this->labels[2]->SetColor(0); + this->labels[2]->SetShadow(0, 0xFFFFFF); + this->labels[2]->SetOutline(0, 0xFFFFFF); + this->AddChild(this->labels[2]); + + this->columns[0] = new CUIStaticText(*this->m_context); + this->columns[0]->SetSize(70, 22); + this->columns[0]->Move(54, 82); + { + const std::uint8_t fixedTextSource[] = { + 0xE1, 0x18, 0x0E, 0xED, 0xFF}; + thread_local EncryptedName fixedTextName(fixedTextSource); + const char* fixedText = fixedTextName.Text(); + this->columns[0]->SetText(fixedText, std::strlen(fixedText)); + } + this->columns[0]->SetFitText(1); + this->columns[0]->SetAlign(6, 6); + { + const std::uint8_t fixedFontSource[] = { + 0x0E, 0x18, 0x13, 0x8A, 0xAA, 0x01}; + thread_local EncryptedName fixedFontName(fixedFontSource); + const char* fixedFont = fixedFontName.Text(); + this->columns[0]->SetFont(std::string(fixedFont)); + } + this->columns[0]->SetFontHeight(12); + this->columns[0]->SetBold(1); + this->columns[0]->SetColor(0); + this->columns[0]->SetShadow(0, 0xFFFFFF); + this->columns[0]->SetOutline(0, 0xFFFFFF); + this->AddChild(this->columns[0]); + + this->columns[1] = new CUIStaticText(*this->m_context); + this->columns[1]->SetSize(70, 22); + this->columns[1]->Move(124, 82); + { + const std::uint8_t variableTextSource[] = { + 0xCB, 0x2C, 0xDE, 0xB4, 0x11}; + thread_local EncryptedName variableTextName(variableTextSource); + const char* variableText = variableTextName.Text(); + this->columns[1]->SetText(variableText, std::strlen(variableText)); + } + this->columns[1]->SetFitText(1); + this->columns[1]->SetAlign(6, 6); + { + const std::uint8_t variableFontSource[] = { + 0x1C, 0xC2, 0x0D, 0x30, 0x22, 0x51}; + thread_local EncryptedName variableFontName(variableFontSource); + const char* variableFont = variableFontName.Text(); + this->columns[1]->SetFont(std::string(variableFont)); + } + this->columns[1]->SetFontHeight(12); + this->columns[1]->SetBold(1); + this->columns[1]->SetColor(0); + this->columns[1]->SetShadow(0, 0xFFFFFF); + this->columns[1]->SetOutline(0, 0xFFFFFF); + this->AddChild(this->columns[1]); + + this->columns[2] = new CUIStaticText(*this->m_context); + this->columns[2]->SetSize(70, 22); + this->columns[2]->Move(194, 82); + { + const std::uint8_t globalTextSource[] = { + 0x28, 0xE2, 0x4A, 0xFF, 0xEC, 0x41, 0x91}; + thread_local EncryptedName globalTextName(globalTextSource); + const char* globalText = globalTextName.Text(); + this->columns[2]->SetText(globalText, std::strlen(globalText)); + } + this->columns[2]->SetFitText(1); + this->columns[2]->SetAlign(6, 6); + { + const std::uint8_t globalFontSource[] = { + 0x94, 0x4C, 0x03, 0x78, 0xC4, 0x1F}; + thread_local EncryptedName globalFontName(globalFontSource); + const char* globalFont = globalFontName.Text(); + this->columns[2]->SetFont(std::string(globalFont)); + } + this->columns[2]->SetFontHeight(12); + this->columns[2]->SetBold(1); + this->columns[2]->SetColor(0); + this->columns[2]->SetShadow(0, 0xFFFFFF); + this->columns[2]->SetOutline(0, 0xFFFFFF); + this->AddChild(this->columns[2]); + + this->columns[3] = new CUIStaticText(*this->m_context); + this->columns[3]->SetSize(70, 22); + this->columns[3]->Move(264, 82); + { + const std::uint8_t skillTextSource[] = { + 0x12, 0xB3, 0xCC, 0x54, 0xC7}; + thread_local EncryptedName skillTextName(skillTextSource); + const char* skillText = skillTextName.Text(); + this->columns[3]->SetText(skillText, std::strlen(skillText)); + } + this->columns[3]->SetFitText(1); + this->columns[3]->SetAlign(6, 6); + { + const std::uint8_t skillFontSource[] = { + 0x2A, 0xCA, 0xB9, 0x4E, 0x86, 0x49}; + thread_local EncryptedName skillFontName(skillFontSource); + const char* skillFont = skillFontName.Text(); + this->columns[3]->SetFont(std::string(skillFont)); + } + this->columns[3]->SetFontHeight(12); + this->columns[3]->SetBold(1); + this->columns[3]->SetColor(0); + this->columns[3]->SetShadow(0, 0xFFFFFF); + this->columns[3]->SetOutline(0, 0xFFFFFF); + this->AddChild(this->columns[3]); + + this->delayList = new CUIListBoxEx(*this->m_context); + this->delayList->itemWidth = 325; + this->delayList->rowHeight = 22; + this->delayList->SetSize(325, 220); + this->delayList->Move(10, 104); + this->delayList->SetOnSelect([this](SkillDelayInfo::CUIDelayItem* item, const SkillDelayInfo::CDelayItemData& data) { this->OnSelectItem(item, data); }); + this->delayList->SetBinder([this](SkillDelayInfo::CUIDelayItem* item, const SkillDelayInfo::CDelayItemData& data) { this->OnUpdateItem(item, data); }); + this->delayList->SetImages("", "", "", ""); + this->delayList->itemX = 0; + this->delayList->itemY = 0; + this->delayList->scrollBar->SetSize(13, 100); + this->delayList->scrollBar->Move(422, 0); + this->delayList->scrollBar->step = 10; + { + CUIListBoxEx* delayList = this->delayList; + const std::uint8_t listDownSource[] = { + 0x95, 0x94, 0x41, 0x0D, 0x8D, 0x25, 0x68, 0x60, 0x93, 0xDF, 0x41, 0x3B, 0xF0, 0x51, 0xF1, 0xDE, 0x36, 0x49, 0xEE, 0x9B, 0x21, 0xDB, 0xC9, 0xC2, + 0x22, 0x55, 0xAF, 0x95, 0x20, 0x9B, 0xAD}; + thread_local EncryptedName listDownName(listDownSource); + const char* listDown = listDownName.Text(); + const std::string down(listDown); + const std::uint8_t listUpSource[] = { + 0x99, 0xA2, 0x0B, 0x55, 0xBD, 0xAD, 0x50, 0x7C, 0x9F, 0xE9, 0x0B, 0x63, 0xC0, 0xD9, 0xC9, 0xC2, 0x3A, 0x7F, 0xA4, 0xC3, 0x11, 0x53, 0xE0, 0xC1, + 0x77, 0x6F, 0xA6, 0xDF, 0x7D}; + thread_local EncryptedName listUpName(listUpSource); + const char* listUp = listUpName.Text(); + const std::string up(listUp); + delayList->scrollBar->SetButtonImages(up, down); + } + { + const std::uint8_t listBackgroundSource[] = { + 0x01, 0x36, 0x0D, 0x1F, 0x41, 0xE3, 0x80, 0x14, 0x07, 0x7D, 0x0D, 0x29, 0x3C, 0x97, 0x19, 0xAA, 0xA2, 0xEB, 0xA2, 0x89, 0xED, 0x1D, 0x28, 0xB0, + 0xA5, 0xB7, 0xAF, 0x88, 0xF1, 0x2D}; + thread_local EncryptedName listBackgroundName(listBackgroundSource); + const char* listBackground = listBackgroundName.Text(); + this->delayList->scrollBar->SetBackground(std::string(listBackground)); + } + { + CUIListBoxEx* delayList = this->delayList; + const std::uint8_t listThumbBottomSource[] = { + 0xCD, 0xCC, 0x4D, 0xF3, 0x85, 0x9D, 0x4A, 0x14, 0xCB, 0x87, 0x4D, 0xC5, 0xF8, 0xE9, 0xD3, 0xAA, 0x6E, 0x11, 0xE2, 0x65, 0x29, 0x63, 0xED, 0xB8, + 0x7F, 0x3C, 0xE9, 0x66, 0x32, 0x3D, 0xA1, 0xBB, 0x60, 0x13, 0x8D}; + thread_local EncryptedName listThumbBottomName(listThumbBottomSource); + const char* listThumbBottom = listThumbBottomName.Text(); + const std::string bottom(listThumbBottom); + const std::uint8_t listThumbMiddleSource[] = { + 0xEB, 0xB0, 0x29, 0x51, 0x01, 0x31, 0xE8, 0xB2, 0xED, 0xFB, 0x29, 0x67, 0x7C, 0x45, 0x71, 0x0C, 0x48, 0x6D, 0x86, 0xC7, 0xAD, 0xCF, 0x4F, 0x1E, + 0x59, 0x40, 0x84, 0xC2, 0xA5, 0xD1, 0x4F, 0x12, 0x5B, 0x1F}; + thread_local EncryptedName listThumbMiddleName(listThumbMiddleSource); + const char* listThumbMiddle = listThumbMiddleName.Text(); + const std::string middle(listThumbMiddle); + const std::uint8_t listThumbTopSource[] = { + 0x4D, 0x2E, 0xD1, 0x09, 0x73, 0x67, 0xAC, 0x30, 0x4B, 0x65, 0xD1, 0x3F, 0x0E, 0x13, 0x35, 0x8E, 0xEE, 0xF3, 0x7E, 0x9F, 0xDF, 0x99, 0x0B, 0x9C, + 0xFF, 0xDE, 0x64, 0x83, 0x9D, 0xCB, 0x04, 0x8D, 0x8D}; + thread_local EncryptedName listThumbTopName(listThumbTopSource); + const char* listThumbTop = listThumbTopName.Text(); + const std::string top(listThumbTop); + delayList->scrollBar->SetThumbImages(top, middle, bottom); + } + this->delayList->AddNewItem(); + this->AddChild(this->delayList); + + this->description = new CUITextViewer(*this->m_context); + this->description->SetSize(330, 35); + this->description->Move(11, 334); + this->description->SetTextOffset(0, 0); + { + const std::uint8_t descriptionFontSource[] = { + 0xD4, 0x00, 0xB3, 0x86, 0x20, 0x23}; + thread_local EncryptedName descriptionFontName(descriptionFontSource); + const char* descriptionFont = descriptionFontName.Text(); + this->description->SetFont(std::string(descriptionFont)); + } + this->description->SetFontHeight(11); + this->description->SetBold(false); + this->description->SetTextColor(0xFF); + this->description->SetOutline(false, 0xFFFFFF); + this->description->SetLineSpacing(6); + this->description->SetBackgroundColor(0xFFFFFF); + this->description->SetPadding(3, 3, 3, 3); + this->description->SetScrollBarSize(13, 35); + this->description->SetScrollStep(1); + { + const std::uint8_t descriptionDownSource[] = { + 0x79, 0x82, 0xFD, 0xC9, 0x4D, 0x5D, 0xD0, 0x20, 0x7F, 0xC9, 0xFD, 0xFF, 0x30, 0x29, 0x49, 0x9E, 0xDA, 0x5F, 0x52, 0x5F, 0xE1, 0xA3, 0x71, 0x82, + 0xCE, 0x43, 0x13, 0x51, 0xE0, 0xE3, 0x15}; + thread_local EncryptedName descriptionDownName(descriptionDownSource); + const char* descriptionDown = descriptionDownName.Text(); + const std::string down(descriptionDown); + const std::uint8_t descriptionUpSource[] = { + 0x83, 0x96, 0x9B, 0x91, 0xA7, 0xE3, 0xB4, 0x04, 0x85, 0xDD, 0x9B, 0xA7, 0xDA, 0x97, 0x2D, 0xBA, 0x20, 0x4B, 0x34, 0x07, 0x0B, 0x1D, 0x04, 0xB9, + 0x6D, 0x5B, 0x36, 0x1B, 0x67}; + thread_local EncryptedName descriptionUpName(descriptionUpSource); + const char* descriptionUp = descriptionUpName.Text(); + const std::string up(descriptionUp); + this->description->SetScrollBarButtonImages(up, down); + } + { + const std::uint8_t descriptionBackgroundSource[] = { + 0xFB, 0x48, 0xC1, 0xE1, 0x01, 0x6F, 0xEE, 0x70, 0xFD, 0x03, 0xC1, 0xD7, 0x7C, 0x1B, 0x77, 0xCE, 0x58, 0x95, 0x6E, 0x77, 0xAD, 0x91, 0x46, 0xD4, + 0x5F, 0xC9, 0x63, 0x76, 0xB1, 0xA1}; + thread_local EncryptedName descriptionBackgroundName(descriptionBackgroundSource); + const char* descriptionBackground = descriptionBackgroundName.Text(); + this->description->SetScrollBarBackground(std::string(descriptionBackground)); + } + { + const std::uint8_t descriptionThumbBottomSource[] = { + 0xB3, 0x88, 0x8D, 0xB7, 0x39, 0xA1, 0xC0, 0x1C, 0xB5, 0xC3, 0x8D, 0x81, 0x44, 0xD5, 0x59, 0xA2, 0x10, 0x55, 0x22, 0x21, 0x95, 0x5F, 0x67, 0xB0, + 0x01, 0x78, 0x29, 0x22, 0x8E, 0x01, 0x2B, 0xB3, 0x1E, 0x57, 0x4D}; + thread_local EncryptedName descriptionThumbBottomName(descriptionThumbBottomSource); + const char* descriptionThumbBottom = descriptionThumbBottomName.Text(); + const std::string bottom(descriptionThumbBottom); + const std::uint8_t descriptionThumbMiddleSource[] = { + 0x2B, 0xF0, 0xC9, 0xC9, 0xBF, 0x6F, 0xF4, 0x8E, 0x2D, 0xBB, 0xC9, 0xFF, 0xC2, 0x1B, 0x6D, 0x30, 0x88, 0x2D, 0x66, 0x5F, 0x13, 0x91, 0x53, 0x22, + 0x99, 0x00, 0x64, 0x5A, 0x1B, 0x8F, 0x53, 0x2E, 0x9B, 0x5F}; + thread_local EncryptedName descriptionThumbMiddleName(descriptionThumbMiddleSource); + const char* descriptionThumbMiddle = descriptionThumbMiddleName.Text(); + const std::string middle(descriptionThumbMiddle); + const std::uint8_t descriptionThumbTopSource[] = { + 0xD1, 0x4C, 0x93, 0x63, 0x71, 0x93, 0xB0, 0x86, 0xD7, 0x07, 0x93, 0x55, 0x0C, 0xE7, 0x29, 0x38, 0x72, 0x91, 0x3C, 0xF5, 0xDD, 0x6D, 0x17, 0x2A, + 0x63, 0xBC, 0x26, 0xE9, 0x9F, 0x3F, 0x18, 0x3B, 0x11}; + thread_local EncryptedName descriptionThumbTopName(descriptionThumbTopSource); + const char* descriptionThumbTop = descriptionThumbTopName.Text(); + const std::string top(descriptionThumbTop); + this->description->SetScrollBarThumbImages(top, middle, bottom); + } + this->AddChild(this->description); +}