From 1b38cc519d2523005d2fdfd8133fb2b2a17c36ae Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Sat, 31 Oct 2026 19:19:42 +0000 Subject: [PATCH] Decompile 2 functions in Source/UI/AdventureGuide/UIAdventureGuide.cpp, Source/UI/Lists/UIListBoxTemplate.h Batch #8585 by youko: 0 byte-identical, 2 confirmed by peer review. - fn_14005 AdventureGuide::CUIMonsterInfo::Slot15: logic confirmed by peer review - fn_14007 AdventureGuide::CUIQuestInfo::Slot15: logic confirmed by peer review Peer-reviewed-by: gordaoprogramas, System4z, dori Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/UI/AdventureGuide/UIAdventureGuide.cpp | 582 ++++++++++++++++++ Source/UI/Lists/UIListBoxTemplate.h | 11 +- 2 files changed, 592 insertions(+), 1 deletion(-) diff --git a/Source/UI/AdventureGuide/UIAdventureGuide.cpp b/Source/UI/AdventureGuide/UIAdventureGuide.cpp index 8c0e18cd..5cc900b2 100644 --- a/Source/UI/AdventureGuide/UIAdventureGuide.cpp +++ b/Source/UI/AdventureGuide/UIAdventureGuide.cpp @@ -1115,6 +1115,588 @@ void CUICharacterInfo::Slot15(int width, int height) { this->AddChild(this->name); } +// OFFSET: 0x009C8D00 +// FUNCTION: fn_14003 +void CUIItemInfo::Slot15(int width, int height) { + this->image = new CUIStaticImage(*this->m_context); + this->image->SetSize(75, 100); + this->image->Move(45, 14); + this->image->SetImage(std::string()); + this->AddChild(this->image); + + this->nameText = new CUIStaticText(*this->m_context); + this->nameText->SetSize(280, 12); + this->nameText->Move(165, 13); + this->nameText->SetText("", 0); + this->nameText->SetFitText(0); + this->nameText->SetAlign(0, 0); + { + CUIStaticText* name = this->nameText; + const std::uint8_t nameFontSource[] = { + 0xA2, 0x0E, 0x5F, 0x40, 0x20, 0x65}; + thread_local EncryptedName nameFontName(nameFontSource); + const std::string nameFont(nameFontName.Text()); + name->SetFont(nameFont); + } + this->nameText->SetFontHeight(12); + this->nameText->SetBold(1); + this->nameText->SetColor(0xCE6B52); + this->nameText->SetShadow(0, 0xFFFFFF); + this->nameText->SetOutline(0, 0xFFFFFF); + this->AddChild(this->nameText); + + CUITextViewer* description = new CUITextViewer(*this->m_context); + this->unknown_00F0 = reinterpret_cast(description); + description->SetSize(173, 97); + description->Move(165, 26); + description->SetTextOffset(0, 6); + { + const std::uint8_t descriptionFontSource[] = { + 0xA4, 0xA0, 0x3F, 0x9E, 0xC8, 0x07}; + thread_local EncryptedName descriptionFontName(descriptionFontSource); + const std::string descriptionFont(descriptionFontName.Text()); + description->SetFont(descriptionFont); + } + description->SetFontHeight(12); + description->SetBold(0); + description->SetTextColor(0); + description->SetOutline(0, 0xFFFF00FF); + description->SetLineSpacing(6); + description->SetBackgroundColor(0xFFFF00FF); + description->SetPadding(0, 0, 0, 0); + description->SetScrollBarSize(8, 97); + description->SetScrollStep(20); + { + const std::uint8_t downImageSource[] = { + 0x3F, 0x4C, 0x9D, 0xF9, 0x67, 0x61, 0x66, 0xF2, 0x39, 0x07, 0x9D, 0xCF, 0x1A, 0x15, 0xFF, 0x7E, 0x9B, 0x95, 0x38, 0x6D, 0xD3, 0xDA, 0xD1, 0x5A, + 0xB8, 0x96, 0x34, 0x67, 0xC2, 0xF3, 0xD0, 0x5C, 0x8D, 0x8C, 0x31, 0x6F, 0xF8, 0xCE, 0xD1, 0x4D, 0x90, 0x94, 0x02, 0x67, 0xC8, 0xD8, 0xCD, 0x11, + 0x9D, 0x8E, 0x2D, 0x03}; + thread_local EncryptedName downImageName(downImageSource); + const std::string downImage(downImageName.Text()); + const std::uint8_t upImageSource[] = { + 0x99, 0x28, 0xC3, 0x87, 0x95, 0x05, 0xE2, 0x16, 0x9F, 0x63, 0xC3, 0xB1, 0xE8, 0x71, 0x7B, 0x9A, 0x3D, 0xF1, 0x66, 0x13, 0x21, 0xBE, 0x55, 0xBE, + 0x1E, 0xF2, 0x6A, 0x19, 0x30, 0x97, 0x54, 0xB8, 0x2B, 0xE8, 0x6F, 0x11, 0x0A, 0xAA, 0x55, 0xA9, 0x36, 0xF0, 0x5C, 0x08, 0x25, 0xE5, 0x45, 0xB6, + 0x29, 0x87}; + thread_local EncryptedName upImageName(upImageSource); + const std::string upImage(upImageName.Text()); + description->SetScrollBarButtonImages(upImage, downImage); + } + { + const std::uint8_t scrollBackgroundSource[] = { + 0x2F, 0x82, 0x97, 0xF7, 0x05, 0x1F, 0x26, 0x4A, 0x29, 0xC9, 0x97, 0xC1, 0x78, 0x6B, 0xBF, 0xC6, 0x8B, 0x5B, 0x32, 0x63, 0xB1, 0xA4, 0x91, 0xE2, + 0xA8, 0x58, 0x3E, 0x69, 0xA0, 0x8D, 0x90, 0xE4, 0x9D, 0x42, 0x3B, 0x61, 0x9A, 0xB3, 0x84, 0xD8, 0x82, 0x44, 0x33, 0x23, 0xA7, 0xBC, 0x93, 0x87}; + thread_local EncryptedName scrollBackgroundName(scrollBackgroundSource); + const std::string scrollBackground(scrollBackgroundName.Text()); + description->SetScrollBarBackground(scrollBackground); + } + { + const std::uint8_t thumbBottomSource[] = { + 0x91, 0x5A, 0x0F, 0xB3, 0x3F, 0xD9, 0x44, 0x12, 0x97, 0x11, 0x0F, 0x85, 0x42, 0xAD, 0xDD, 0x9E, 0x35, 0x83, 0xAA, 0x27, 0x8B, 0x62, 0xF3, 0xBA, + 0x16, 0x80, 0xA6, 0x2D, 0x9A, 0x4B, 0xF2, 0xBC, 0x23, 0x9A, 0xA3, 0x25, 0xA0, 0x63, 0xE9, 0xAA, 0x3C, 0x97, 0x90, 0x2D, 0x90, 0x60, 0xEF, 0xF1, + 0x33, 0x98, 0xBF, 0x49}; + thread_local EncryptedName thumbBottomName(thumbBottomSource); + const std::string thumbBottom(thumbBottomName.Text()); + const std::uint8_t thumbMiddleSource[] = { + 0xFD, 0xEE, 0x4B, 0x33, 0x39, 0xD5, 0x00, 0x60, 0xFB, 0xA5, 0x4B, 0x05, 0x44, 0xA1, 0x99, 0xEC, 0x59, 0x37, 0xEE, 0xA7, 0x8D, 0x6E, 0xB7, 0xC8, + 0x7A, 0x34, 0xE2, 0xAD, 0x9C, 0x47, 0xB6, 0xCE, 0x4F, 0x2E, 0xE7, 0xA5, 0xA6, 0x6F, 0xAD, 0xD8, 0x50, 0x23, 0xD4, 0xA4, 0x90, 0x7F, 0xEB, 0xCF, + 0x50, 0x31, 0x8B}; + thread_local EncryptedName thumbMiddleName(thumbMiddleSource); + const std::string thumbMiddle(thumbMiddleName.Text()); + const std::uint8_t thumbTopSource[] = { + 0x4D, 0x12, 0x7B, 0x99, 0x77, 0xF7, 0x7E, 0x9C, 0x4B, 0x59, 0x7B, 0xAF, 0x0A, 0x83, 0xE7, 0x10, 0xE9, 0xCB, 0xDE, 0x0D, 0xC3, 0x4C, 0xC9, 0x34, + 0xCA, 0xC8, 0xD2, 0x07, 0xD2, 0x65, 0xC8, 0x32, 0xFF, 0xD2, 0xD7, 0x0F, 0xE8, 0x4D, 0xD3, 0x24, 0xE0, 0xDF, 0xE4, 0x16, 0xC7, 0x17, 0xD9, 0x3C, + 0xFD, 0xBD}; + thread_local EncryptedName thumbTopName(thumbTopSource); + const std::string thumbTop(thumbTopName.Text()); + description->SetScrollBarThumbImages(thumbTop, thumbMiddle, thumbBottom); + } + this->AddChild(description); + + CUITextViewer* options = new CUITextViewer(*this->m_context); + this->unknown_00F4 = reinterpret_cast(options); + options->SetSize(115, 90); + options->Move(338, 26); + options->SetTextOffset(0, 8); + { + const std::uint8_t optionFontSource[] = { + 0x0E, 0x18, 0x13, 0x8A, 0xAA, 0x01}; + thread_local EncryptedName optionFontName(optionFontSource); + const std::string optionFont(optionFontName.Text()); + options->SetFont(optionFont); + } + options->SetFontHeight(12); + options->SetBold(0); + options->SetTextColor(0); + options->SetOutline(0, 0xFFFF00FF); + options->SetLineSpacing(6); + options->SetBackgroundColor(0xFFFF00FF); + options->SetPadding(0, 0, 0, 0); + options->SetScrollBarSize(8, 90); + options->SetScrollStep(20); + { + const std::uint8_t downImageSource[] = { + 0x9B, 0x18, 0xA1, 0xA3, 0x8F, 0x9F, 0xD0, 0x3A, 0x9D, 0x53, 0xA1, 0x95, 0xF2, 0xEB, 0x49, 0xB6, 0x3F, 0xC1, 0x04, 0x37, 0x3B, 0x24, 0x67, 0x92, + 0x1C, 0xC2, 0x08, 0x3D, 0x2A, 0x0D, 0x66, 0x94, 0x29, 0xD8, 0x0D, 0x35, 0x10, 0x30, 0x67, 0x85, 0x34, 0xC0, 0x3E, 0x3D, 0x20, 0x26, 0x7B, 0xD9, + 0x39, 0xDA, 0x11, 0x59}; + thread_local EncryptedName downImageName(downImageSource); + const std::string downImage(downImageName.Text()); + const std::uint8_t upImageSource[] = { + 0xB1, 0x2C, 0xAB, 0xF1, 0xD1, 0xC1, 0x98, 0xB0, 0xB7, 0x67, 0xAB, 0xC7, 0xAC, 0xB5, 0x01, 0x3C, 0x15, 0xF5, 0x0E, 0x65, 0x65, 0x7A, 0x2F, 0x18, + 0x36, 0xF6, 0x02, 0x6F, 0x74, 0x53, 0x2E, 0x1E, 0x03, 0xEC, 0x07, 0x67, 0x4E, 0x6E, 0x2F, 0x0F, 0x1E, 0xF4, 0x34, 0x7E, 0x61, 0x21, 0x3F, 0x10, + 0x01, 0x83}; + thread_local EncryptedName upImageName(upImageSource); + const std::string upImage(upImageName.Text()); + options->SetScrollBarButtonImages(upImage, downImage); + } + { + const std::uint8_t scrollBackgroundSource[] = { + 0x59, 0x96, 0x3D, 0xCB, 0x95, 0x75, 0x54, 0x8C, 0x5F, 0xDD, 0x3D, 0xFD, 0xE8, 0x01, 0xCD, 0x00, 0xFD, 0x4F, 0x98, 0x5F, 0x21, 0xCE, 0xE3, 0x24, + 0xDE, 0x4C, 0x94, 0x55, 0x30, 0xE7, 0xE2, 0x22, 0xEB, 0x56, 0x91, 0x5D, 0x0A, 0xD9, 0xF6, 0x1E, 0xF4, 0x50, 0x99, 0x1F, 0x37, 0xD6, 0xE1, 0x41}; + thread_local EncryptedName scrollBackgroundName(scrollBackgroundSource); + const std::string scrollBackground(scrollBackgroundName.Text()); + options->SetScrollBarBackground(scrollBackground); + } + { + const std::uint8_t thumbBottomSource[] = { + 0xAD, 0x10, 0x15, 0xDD, 0x2B, 0x87, 0x62, 0x1A, 0xAB, 0x5B, 0x15, 0xEB, 0x56, 0xF3, 0xFB, 0x96, 0x09, 0xC9, 0xB0, 0x49, 0x9F, 0x3C, 0xD5, 0xB2, + 0x2A, 0xCA, 0xBC, 0x43, 0x8E, 0x15, 0xD4, 0xB4, 0x1F, 0xD0, 0xB9, 0x4B, 0xB4, 0x3D, 0xCF, 0xA2, 0x00, 0xDD, 0x8A, 0x43, 0x84, 0x3E, 0xC9, 0xF9, + 0x0F, 0xD2, 0xA5, 0x27}; + thread_local EncryptedName thumbBottomName(thumbBottomSource); + const std::string thumbBottom(thumbBottomName.Text()); + const std::uint8_t thumbMiddleSource[] = { + 0x6F, 0xA6, 0xC9, 0x1D, 0x07, 0x07, 0xAC, 0x58, 0x69, 0xED, 0xC9, 0x2B, 0x7A, 0x73, 0x35, 0xD4, 0xCB, 0x7F, 0x6C, 0x89, 0xB3, 0xBC, 0x1B, 0xF0, + 0xE8, 0x7C, 0x60, 0x83, 0xA2, 0x95, 0x1A, 0xF6, 0xDD, 0x66, 0x65, 0x8B, 0x98, 0xBD, 0x01, 0xE0, 0xC2, 0x6B, 0x56, 0x8A, 0xAE, 0xAD, 0x47, 0xF7, + 0xC2, 0x79, 0x09}; + thread_local EncryptedName thumbMiddleName(thumbMiddleSource); + const std::string thumbMiddle(thumbMiddleName.Text()); + const std::uint8_t thumbTopSource[] = { + 0x13, 0x96, 0xAF, 0xEB, 0x69, 0xD1, 0x58, 0x7C, 0x15, 0xDD, 0xAF, 0xDD, 0x14, 0xA5, 0xC1, 0xF0, 0xB7, 0x4F, 0x0A, 0x7F, 0xDD, 0x6A, 0xEF, 0xD4, + 0x94, 0x4C, 0x06, 0x75, 0xCC, 0x43, 0xEE, 0xD2, 0xA1, 0x56, 0x03, 0x7D, 0xF6, 0x6B, 0xF5, 0xC4, 0xBE, 0x5B, 0x30, 0x64, 0xD9, 0x31, 0xFF, 0xDC, + 0xA3, 0x39}; + thread_local EncryptedName thumbTopName(thumbTopSource); + const std::string thumbTop(thumbTopName.Text()); + options->SetScrollBarThumbImages(thumbTop, thumbMiddle, thumbBottom); + } + this->AddChild(options); + + CUITextViewer* sources = new CUITextViewer(*this->m_context); + this->unknown_00F8 = reinterpret_cast(sources); + sources->SetSize(108, 118); + sources->Move(480, 5); + sources->SetTextOffset(0, 6); + { + const std::uint8_t sourceFontSource[] = { + 0x1E, 0x78, 0xA7, 0xC6, 0x10, 0x63}; + thread_local EncryptedName sourceFontName(sourceFontSource); + const std::string sourceFont(sourceFontName.Text()); + sources->SetFont(sourceFont); + } + sources->SetFontHeight(12); + sources->SetBold(0); + sources->SetTextColor(0); + sources->SetOutline(0, 0xFFFF00FF); + sources->SetLineSpacing(6); + sources->SetBackgroundColor(0xFFFF00FF); + sources->SetPadding(0, 0, 0, 0); + sources->SetScrollBarSize(8, 118); + sources->SetScrollStep(20); + { + const std::uint8_t downImageSource[] = { + 0x01, 0x36, 0x0D, 0x1F, 0x41, 0xE3, 0x80, 0x14, 0x07, 0x7D, 0x0D, 0x29, 0x3C, 0x97, 0x19, 0x98, 0xA5, 0xEF, 0xA8, 0x8B, 0xF5, 0x58, 0x37, 0xBC, + 0x86, 0xEC, 0xA4, 0x81, 0xE4, 0x71, 0x36, 0xBA, 0xB3, 0xF6, 0xA1, 0x89, 0xDE, 0x4C, 0x37, 0xAB, 0xAE, 0xEE, 0x92, 0x81, 0xEE, 0x5A, 0x2B, 0xF7, + 0xA3, 0xF4, 0xBD, 0xE5}; + thread_local EncryptedName downImageName(downImageSource); + const std::string downImage(downImageName.Text()); + const std::uint8_t upImageSource[] = { + 0x95, 0x94, 0x41, 0x0D, 0x8D, 0x25, 0x68, 0x60, 0x93, 0xDF, 0x41, 0x3B, 0xF0, 0x51, 0xF1, 0xEC, 0x31, 0x4D, 0xE4, 0x99, 0x39, 0x9E, 0xDF, 0xC8, + 0x12, 0x4E, 0xE8, 0x93, 0x28, 0xB7, 0xDE, 0xCE, 0x27, 0x54, 0xED, 0x9B, 0x12, 0x8A, 0xDF, 0xDF, 0x3A, 0x4C, 0xDE, 0x82, 0x3D, 0xC5, 0xCF, 0xC0, + 0x25, 0x3B}; + thread_local EncryptedName upImageName(upImageSource); + const std::string upImage(upImageName.Text()); + sources->SetScrollBarButtonImages(upImage, downImage); + } + { + const std::uint8_t scrollBackgroundSource[] = { + 0x4D, 0x2E, 0xD1, 0x09, 0x73, 0x67, 0xAC, 0x30, 0x4B, 0x65, 0xD1, 0x3F, 0x0E, 0x13, 0x35, 0xBC, 0xE9, 0xF7, 0x74, 0x9D, 0xC7, 0xDC, 0x1B, 0x98, + 0xCA, 0xF4, 0x78, 0x97, 0xD6, 0xF5, 0x1A, 0x9E, 0xFF, 0xEE, 0x7D, 0x9F, 0xEC, 0xCB, 0x0E, 0xA2, 0xE0, 0xE8, 0x75, 0xDD, 0xD1, 0xC4, 0x19, 0xFD}; + thread_local EncryptedName scrollBackgroundName(scrollBackgroundSource); + const std::string scrollBackground(scrollBackgroundName.Text()); + sources->SetScrollBarBackground(scrollBackground); + } + { + const std::uint8_t thumbBottomSource[] = { + 0x53, 0xDA, 0x1F, 0x15, 0x8D, 0xED, 0xCA, 0x56, 0x55, 0x91, 0x1F, 0x23, 0xF0, 0x99, 0x53, 0xDA, 0xF7, 0x03, 0xBA, 0x81, 0x39, 0x56, 0x7D, 0xFE, + 0xD4, 0x00, 0xB6, 0x8B, 0x28, 0x7F, 0x7C, 0xF8, 0xE1, 0x1A, 0xB3, 0x83, 0x12, 0x57, 0x67, 0xEE, 0xFE, 0x17, 0x80, 0x8B, 0x22, 0x54, 0x61, 0xB5, + 0xF1, 0x18, 0xAF, 0xEF}; + thread_local EncryptedName thumbBottomName(thumbBottomSource); + const std::string thumbBottom(thumbBottomName.Text()); + const std::uint8_t thumbMiddleSource[] = { + 0xCD, 0xCC, 0x4D, 0xF3, 0x85, 0x9D, 0x4A, 0x14, 0xCB, 0x87, 0x4D, 0xC5, 0xF8, 0xE9, 0xD3, 0x98, 0x69, 0x15, 0xE8, 0x67, 0x31, 0x26, 0xFD, 0xBC, + 0x4A, 0x16, 0xE4, 0x6D, 0x20, 0x0F, 0xFC, 0xBA, 0x7F, 0x0C, 0xE1, 0x65, 0x1A, 0x27, 0xE7, 0xAC, 0x60, 0x01, 0xD2, 0x64, 0x2C, 0x37, 0xA1, 0xBB, + 0x60, 0x13, 0x8D}; + thread_local EncryptedName thumbMiddleName(thumbMiddleSource); + const std::string thumbMiddle(thumbMiddleName.Text()); + const std::uint8_t thumbTopSource[] = { + 0xEB, 0xB0, 0x29, 0x51, 0x01, 0x31, 0xE8, 0xB2, 0xED, 0xFB, 0x29, 0x67, 0x7C, 0x45, 0x71, 0x3E, 0x4F, 0x69, 0x8C, 0xC5, 0xB5, 0x8A, 0x5F, 0x1A, + 0x6C, 0x6A, 0x80, 0xCF, 0xA4, 0xA3, 0x5E, 0x1C, 0x59, 0x70, 0x85, 0xC7, 0x9E, 0x8B, 0x45, 0x0A, 0x46, 0x7D, 0xB6, 0xDE, 0xB1, 0xD1, 0x4F, 0x12, + 0x5B, 0x1F}; + thread_local EncryptedName thumbTopName(thumbTopSource); + const std::string thumbTop(thumbTopName.Text()); + sources->SetScrollBarThumbImages(thumbTop, thumbMiddle, thumbBottom); + } + this->AddChild(sources); +} + +// OFFSET: 0x009CC580 +// FUNCTION: fn_14005 +void CUIMonsterInfo::Slot15(int width, int height) { + this->unknown_00E8 = new CUIStaticText(*this->m_context); + this->unknown_00E8->SetSize(280, 12); + this->unknown_00E8->Move(165, 19); + this->unknown_00E8->SetText("", 0); + this->unknown_00E8->SetFitText(0); + this->unknown_00E8->SetAlign(0, 0); + { + CUIStaticText* name = this->unknown_00E8; + const std::uint8_t nameFontSource[] = { + 0x82, 0x58, 0x47, 0x56, 0xE4, 0x1D}; + thread_local EncryptedName nameFontName(nameFontSource); + const std::string nameFont(nameFontName.Text()); + name->SetFont(nameFont); + } + this->unknown_00E8->SetFontHeight(12); + this->unknown_00E8->SetBold(0); + this->unknown_00E8->SetColor(0xCE6B52); + this->unknown_00E8->SetShadow(1, 0xDEDEDE); + this->unknown_00E8->SetOutline(0, 0xFFFFFF); + this->AddChild(this->unknown_00E8); + + this->unknown_00EC = reinterpret_cast(new CUITextViewer(*this->m_context)); + reinterpret_cast(this->unknown_00EC)->SetSize(288, 84); + reinterpret_cast(this->unknown_00EC)->Move(165, 39); + reinterpret_cast(this->unknown_00EC)->SetTextOffset(0, 6); + { + CUITextViewer* details = reinterpret_cast(this->unknown_00EC); + const std::uint8_t detailsFontSource[] = { + 0x1C, 0x26, 0x33, 0xB4, 0xEA, 0x9F}; + thread_local EncryptedName detailsFontName(detailsFontSource); + const std::string detailsFont(detailsFontName.Text()); + details->SetFont(detailsFont); + } + reinterpret_cast(this->unknown_00EC)->SetFontHeight(12); + reinterpret_cast(this->unknown_00EC)->SetBold(0); + reinterpret_cast(this->unknown_00EC)->SetTextColor(0); + reinterpret_cast(this->unknown_00EC)->SetOutline(0, 0xFFFF00FF); + reinterpret_cast(this->unknown_00EC)->SetLineSpacing(6); + reinterpret_cast(this->unknown_00EC)->SetBackgroundColor(0xFFFF00FF); + reinterpret_cast(this->unknown_00EC)->SetPadding(0, 0, 0, 0); + reinterpret_cast(this->unknown_00EC)->SetScrollBarSize(8, 84); + reinterpret_cast(this->unknown_00EC)->SetScrollStep(20); + { + CUITextViewer* details = reinterpret_cast(this->unknown_00EC); + const std::uint8_t downImageSource[] = { + 0x0D, 0xAC, 0x0D, 0x81, 0x57, 0xF5, 0xD6, 0xFE, 0x0B, 0xE7, 0x0D, 0xB7, 0x2A, 0x81, 0x4F, 0x72, 0xA9, 0x75, 0xA8, 0x15, 0xE3, 0x4E, 0x61, 0x56, + 0x8A, 0x76, 0xA4, 0x1F, 0xF2, 0x67, 0x60, 0x50, 0xBF, 0x6C, 0xA1, 0x17, 0xC8, 0x5A, 0x61, 0x41, 0xA2, 0x74, 0x92, 0x1F, 0xF8, 0x4C, 0x7D, 0x1D, + 0xAF, 0x6E, 0xBD, 0x7B}; + thread_local EncryptedName downImageName(downImageSource); + const std::string downImage(downImageName.Text()); + const std::uint8_t upImageSource[] = { + 0xB7, 0x38, 0x47, 0xE7, 0xE3, 0x9D, 0x24, 0xA2, 0xB1, 0x73, 0x47, 0xD1, 0x9E, 0xE9, 0xBD, 0x2E, 0x13, 0xE1, 0xE2, 0x73, 0x57, 0x26, 0x93, 0x0A, + 0x30, 0xE2, 0xEE, 0x79, 0x46, 0x0F, 0x92, 0x0C, 0x05, 0xF8, 0xEB, 0x71, 0x7C, 0x32, 0x93, 0x1D, 0x18, 0xE0, 0xD8, 0x68, 0x53, 0x7D, 0x83, 0x02, + 0x07, 0x97}; + thread_local EncryptedName upImageName(upImageSource); + const std::string upImage(upImageName.Text()); + details->SetScrollBarButtonImages(upImage, downImage); + } + { + CUITextViewer* details = reinterpret_cast(this->unknown_00EC); + const std::uint8_t scrollBackgroundSource[] = { + 0x11, 0xF4, 0x57, 0x1F, 0xF9, 0x49, 0x2E, 0xE2, 0x17, 0xBF, 0x57, 0x29, 0x84, 0x3D, 0xB7, 0x6E, 0xB5, 0x2D, 0xF2, 0x8B, 0x4D, 0xF2, 0x99, 0x4A, + 0x96, 0x2E, 0xFE, 0x81, 0x5C, 0xDB, 0x98, 0x4C, 0xA3, 0x34, 0xFB, 0x89, 0x66, 0xE5, 0x8C, 0x70, 0xBC, 0x32, 0xF3, 0xCB, 0x5B, 0xEA, 0x9B, 0x2F}; + thread_local EncryptedName scrollBackgroundName(scrollBackgroundSource); + const std::string scrollBackground(scrollBackgroundName.Text()); + details->SetScrollBarBackground(scrollBackground); + } + { + CUITextViewer* details = reinterpret_cast(this->unknown_00EC); + const std::uint8_t thumbBottomSource[] = { + 0xD7, 0xFE, 0x21, 0xBB, 0xF9, 0x0D, 0x46, 0x4A, 0xD1, 0xB5, 0x21, 0x8D, 0x84, 0x79, 0xDF, 0xC6, 0x73, 0x27, 0x84, 0x2F, 0x4D, 0xB6, 0xF1, 0xE2, + 0x50, 0x24, 0x88, 0x25, 0x5C, 0x9F, 0xF0, 0xE4, 0x65, 0x3E, 0x8D, 0x2D, 0x66, 0xB7, 0xEB, 0xF2, 0x7A, 0x33, 0xBE, 0x25, 0x56, 0xB4, 0xED, 0xA9, + 0x75, 0x3C, 0x91, 0x41}; + thread_local EncryptedName thumbBottomName(thumbBottomSource); + const std::string thumbBottom(thumbBottomName.Text()); + const std::uint8_t thumbMiddleSource[] = { + 0xEF, 0x78, 0x85, 0xDF, 0xF9, 0x65, 0xE8, 0x6C, 0xE9, 0x33, 0x85, 0xE9, 0x84, 0x11, 0x71, 0xE0, 0x4B, 0xA1, 0x20, 0x4B, 0x4D, 0xDE, 0x5F, 0xC4, + 0x68, 0xA2, 0x2C, 0x41, 0x5C, 0xF7, 0x5E, 0xC2, 0x5D, 0xB8, 0x29, 0x49, 0x66, 0xDF, 0x45, 0xD4, 0x42, 0xB5, 0x1A, 0x48, 0x50, 0xCF, 0x03, 0xC3, + 0x42, 0xA7, 0x45}; + thread_local EncryptedName thumbMiddleName(thumbMiddleSource); + const std::string thumbMiddle(thumbMiddleName.Text()); + const std::uint8_t thumbTopSource[] = { + 0xB5, 0x94, 0xC3, 0xD5, 0xD3, 0x0F, 0x64, 0xA6, 0xB3, 0xDF, 0xC3, 0xE3, 0xAE, 0x7B, 0xFD, 0x2A, 0x11, 0x4D, 0x66, 0x41, 0x67, 0xB4, 0xD3, 0x0E, + 0x32, 0x4E, 0x6A, 0x4B, 0x76, 0x9D, 0xD2, 0x08, 0x07, 0x54, 0x6F, 0x43, 0x4C, 0xB5, 0xC9, 0x1E, 0x18, 0x59, 0x5C, 0x5A, 0x63, 0xEF, 0xC3, 0x06, + 0x05, 0x3B}; + thread_local EncryptedName thumbTopName(thumbTopSource); + const std::string thumbTop(thumbTopName.Text()); + details->SetScrollBarThumbImages(thumbTop, thumbMiddle, thumbBottom); + } + this->AddChild(this->unknown_00EC); + + this->unknown_00F0 = reinterpret_cast(new CUITextViewer(*this->m_context)); + reinterpret_cast(this->unknown_00F0)->SetSize(108, 118); + reinterpret_cast(this->unknown_00F0)->Move(480, 5); + reinterpret_cast(this->unknown_00F0)->SetTextOffset(0, 6); + { + CUITextViewer* values = reinterpret_cast(this->unknown_00F0); + const std::uint8_t valuesFontSource[] = { + 0xD8, 0xA8, 0xEF, 0x76, 0x1A, 0x45}; + thread_local EncryptedName valuesFontName(valuesFontSource); + const std::string valuesFont(valuesFontName.Text()); + values->SetFont(valuesFont); + } + reinterpret_cast(this->unknown_00F0)->SetFontHeight(12); + reinterpret_cast(this->unknown_00F0)->SetBold(0); + reinterpret_cast(this->unknown_00F0)->SetTextColor(0); + reinterpret_cast(this->unknown_00F0)->SetOutline(0, 0xFFFF00FF); + reinterpret_cast(this->unknown_00F0)->SetLineSpacing(6); + reinterpret_cast(this->unknown_00F0)->SetBackgroundColor(0xFFFF00FF); + reinterpret_cast(this->unknown_00F0)->SetPadding(0, 0, 0, 0); + reinterpret_cast(this->unknown_00F0)->SetScrollBarSize(8, 118); + reinterpret_cast(this->unknown_00F0)->SetScrollStep(20); + { + CUITextViewer* values = reinterpret_cast(this->unknown_00F0); + const std::uint8_t downImageSource[] = { + 0x17, 0x3A, 0xDF, 0x61, 0x91, 0x8B, 0x42, 0xC6, 0x11, 0x71, 0xDF, 0x57, 0xEC, 0xFF, 0xDB, 0x4A, 0xB3, 0xE3, 0x7A, 0xF5, 0x25, 0x30, 0xF5, 0x6E, + 0x90, 0xE0, 0x76, 0xFF, 0x34, 0x19, 0xF4, 0x68, 0xA5, 0xFA, 0x73, 0xF7, 0x0E, 0x24, 0xF5, 0x79, 0xB8, 0xE2, 0x40, 0xFF, 0x3E, 0x32, 0xE9, 0x25, + 0xB5, 0xF8, 0x6F, 0x9B}; + thread_local EncryptedName downImageName(downImageSource); + const std::string downImage(downImageName.Text()); + const std::uint8_t upImageSource[] = { + 0x4F, 0xF6, 0xA1, 0x11, 0x75, 0xD7, 0xC6, 0x0A, 0x49, 0xBD, 0xA1, 0x27, 0x08, 0xA3, 0x5F, 0x86, 0xEB, 0x2F, 0x04, 0x85, 0xC1, 0x6C, 0x71, 0xA2, + 0xC8, 0x2C, 0x08, 0x8F, 0xD0, 0x45, 0x70, 0xA4, 0xFD, 0x36, 0x0D, 0x87, 0xEA, 0x78, 0x71, 0xB5, 0xE0, 0x2E, 0x3E, 0x9E, 0xC5, 0x37, 0x61, 0xAA, + 0xFF, 0x59}; + thread_local EncryptedName upImageName(upImageSource); + const std::string upImage(upImageName.Text()); + values->SetScrollBarButtonImages(upImage, downImage); + } + { + CUITextViewer* values = reinterpret_cast(this->unknown_00F0); + const std::uint8_t scrollBackgroundSource[] = { + 0x15, 0x96, 0xEB, 0xB3, 0x27, 0x69, 0x52, 0x68, 0x13, 0xDD, 0xEB, 0x85, 0x5A, 0x1D, 0xCB, 0xE4, 0xB1, 0x4F, 0x4E, 0x27, 0x93, 0xD2, 0xE5, 0xC0, + 0x92, 0x4C, 0x42, 0x2D, 0x82, 0xFB, 0xE4, 0xC6, 0xA7, 0x56, 0x47, 0x25, 0xB8, 0xC5, 0xF0, 0xFA, 0xB8, 0x50, 0x4F, 0x67, 0x85, 0xCA, 0xE7, 0xA5}; + thread_local EncryptedName scrollBackgroundName(scrollBackgroundSource); + const std::string scrollBackground(scrollBackgroundName.Text()); + values->SetScrollBarBackground(scrollBackground); + } + { + CUITextViewer* values = reinterpret_cast(this->unknown_00F0); + const std::uint8_t thumbBottomSource[] = { + 0x6B, 0x00, 0x4D, 0x77, 0x73, 0x43, 0x62, 0x18, 0x6D, 0x4B, 0x4D, 0x41, 0x0E, 0x37, 0xFB, 0x94, 0xCF, 0xD9, 0xE8, 0xE3, 0xC7, 0xF8, 0xD5, 0xB0, + 0xEC, 0xDA, 0xE4, 0xE9, 0xD6, 0xD1, 0xD4, 0xB6, 0xD9, 0xC0, 0xE1, 0xE1, 0xEC, 0xF9, 0xCF, 0xA0, 0xC6, 0xCD, 0xD2, 0xE9, 0xDC, 0xFA, 0xC9, 0xFB, + 0xC9, 0xC2, 0xFD, 0x8D}; + thread_local EncryptedName thumbBottomName(thumbBottomSource); + const std::string thumbBottom(thumbBottomName.Text()); + const std::uint8_t thumbMiddleSource[] = { + 0xCF, 0xE0, 0x85, 0x55, 0x5D, 0x8B, 0x5C, 0xCE, 0xC9, 0xAB, 0x85, 0x63, 0x20, 0xFF, 0xC5, 0x42, 0x6B, 0x39, 0x20, 0xC1, 0xE9, 0x30, 0xEB, 0x66, + 0x48, 0x3A, 0x2C, 0xCB, 0xF8, 0x19, 0xEA, 0x60, 0x7D, 0x20, 0x29, 0xC3, 0xC2, 0x31, 0xF1, 0x76, 0x62, 0x2D, 0x1A, 0xC2, 0xF4, 0x21, 0xB7, 0x61, + 0x62, 0x3F, 0x45}; + thread_local EncryptedName thumbMiddleName(thumbMiddleSource); + const std::string thumbMiddle(thumbMiddleName.Text()); + const std::uint8_t thumbTopSource[] = { + 0xB3, 0x40, 0x7B, 0x2B, 0x15, 0x2D, 0x6E, 0x32, 0xB5, 0x0B, 0x7B, 0x1D, 0x68, 0x59, 0xF7, 0xBE, 0x17, 0x99, 0xDE, 0xBF, 0xA1, 0x96, 0xD9, 0x9A, + 0x34, 0x9A, 0xD2, 0xB5, 0xB0, 0xBF, 0xD8, 0x9C, 0x01, 0x80, 0xD7, 0xBD, 0x8A, 0x97, 0xC3, 0x8A, 0x1E, 0x8D, 0xE4, 0xA4, 0xA5, 0xCD, 0xC9, 0x92, + 0x03, 0xEF}; + thread_local EncryptedName thumbTopName(thumbTopSource); + const std::string thumbTop(thumbTopName.Text()); + values->SetScrollBarThumbImages(thumbTop, thumbMiddle, thumbBottom); + } + this->AddChild(this->unknown_00F0); +} + +// OFFSET: 0x009CFAF0 +// FUNCTION: fn_14007 +void CUIQuestInfo::Slot15(int width, int height) { + this->unknown_00E8 = new CUIStaticImage(*this->m_context); + this->unknown_00E8->SetSize(85, 70); + this->unknown_00E8->Move(250, 10); + { + CUIStaticImage* stamp = static_cast(this->unknown_00E8); + const std::uint8_t stampImageSource[] = { + 0x31, 0x68, 0xF9, 0xF3, 0xD7, 0xB7, 0x8A, 0x3C, 0x37, 0x23, 0xF9, 0xC5, 0xAA, 0xC3, 0x13, 0xB0, 0x95, 0xB1, 0x5C, 0x67, 0x63, 0x0C, 0x3D, 0x94, + 0xB6, 0xB2, 0x50, 0x6D, 0x72, 0x25, 0x3C, 0x85, 0x90, 0xAA, 0x49, 0x56, 0x74, 0x16, 0x22, 0x81, 0x9D, 0xA2, 0x4D, 0x6C, 0x73, 0x57, 0x2D, 0x9C, + 0x81, 0xC7}; + thread_local EncryptedName stampImageName(stampImageSource); + const std::string stampImage(stampImageName.Text()); + stamp->SetImage(stampImage); + } + this->AddChild(this->unknown_00E8); + + this->unknown_00EC = reinterpret_cast(new CUITextViewer(*this->m_context)); + reinterpret_cast(this->unknown_00EC)->SetSize(360, 57); + reinterpret_cast(this->unknown_00EC)->Move(25, 13); + reinterpret_cast(this->unknown_00EC)->SetTextOffset(0, 0); + { + CUITextViewer* title = reinterpret_cast(this->unknown_00EC); + const std::uint8_t titleFontSource[] = { + 0x32, 0xB8, 0x81, 0x34, 0x06, 0x65}; + thread_local EncryptedName titleFontName(titleFontSource); + const std::string titleFont(titleFontName.Text()); + title->SetFont(titleFont); + } + reinterpret_cast(this->unknown_00EC)->SetFontHeight(12); + reinterpret_cast(this->unknown_00EC)->SetBold(1); + reinterpret_cast(this->unknown_00EC)->SetTextColor(0); + reinterpret_cast(this->unknown_00EC)->SetOutline(0, 0xFFFF00FF); + reinterpret_cast(this->unknown_00EC)->SetLineSpacing(6); + reinterpret_cast(this->unknown_00EC)->SetBackgroundColor(0xFFFF00FF); + reinterpret_cast(this->unknown_00EC)->SetPadding(15, 5, 5, 5); + reinterpret_cast(this->unknown_00EC)->SetScrollBarSize(8, 87); + reinterpret_cast(this->unknown_00EC)->SetScrollStep(20); + { + CUITextViewer* title = reinterpret_cast(this->unknown_00EC); + const std::uint8_t downImageSource[] = { + 0x3D, 0x78, 0x8D, 0x53, 0x75, 0x41, 0x52, 0x2A, 0x3B, 0x33, 0x8D, 0x65, 0x08, 0x35, 0xCB, 0xA6, 0x99, 0xA1, 0x28, 0xC7, 0xC1, 0xFA, 0xE5, 0x82, + 0xBA, 0xA2, 0x24, 0xCD, 0xD0, 0xD3, 0xE4, 0x84, 0x8F, 0xB8, 0x21, 0xC5, 0xEA, 0xEE, 0xE5, 0x95, 0x92, 0xA0, 0x12, 0xCD, 0xDA, 0xF8, 0xF9, 0xC9, + 0x9F, 0xBA, 0x3D, 0xA9}; + thread_local EncryptedName downImageName(downImageSource); + const std::string downImage(downImageName.Text()); + const std::uint8_t upImageSource[] = { + 0x3D, 0x16, 0x7B, 0xDB, 0x5F, 0x33, 0x84, 0x84, 0x3B, 0x5D, 0x7B, 0xED, 0x22, 0x47, 0x1D, 0x08, 0x99, 0xCF, 0xDE, 0x4F, 0xEB, 0x88, 0x33, 0x2C, + 0xBA, 0xCC, 0xD2, 0x45, 0xFA, 0xA1, 0x32, 0x2A, 0x8F, 0xD6, 0xD7, 0x4D, 0xC0, 0x9C, 0x33, 0x3B, 0x92, 0xCE, 0xE4, 0x54, 0xEF, 0xD3, 0x23, 0x24, + 0x8D, 0xB9}; + thread_local EncryptedName upImageName(upImageSource); + const std::string upImage(upImageName.Text()); + title->SetScrollBarButtonImages(upImage, downImage); + } + { + CUITextViewer* title = reinterpret_cast(this->unknown_00EC); + const std::uint8_t scrollBackgroundSource[] = { + 0xAB, 0x16, 0x07, 0xF5, 0xA7, 0x41, 0x38, 0x7A, 0xAD, 0x5D, 0x07, 0xC3, 0xDA, 0x35, 0xA1, 0xF6, 0x0F, 0xCF, 0xA2, 0x61, 0x13, 0xFA, 0x8F, 0xD2, + 0x2C, 0xCC, 0xAE, 0x6B, 0x02, 0xD3, 0x8E, 0xD4, 0x19, 0xD6, 0xAB, 0x63, 0x38, 0xED, 0x9A, 0xE8, 0x06, 0xD0, 0xA3, 0x21, 0x05, 0xE2, 0x8D, 0xB7}; + thread_local EncryptedName scrollBackgroundName(scrollBackgroundSource); + const std::string scrollBackground(scrollBackgroundName.Text()); + title->SetScrollBarBackground(scrollBackground); + } + { + CUITextViewer* title = reinterpret_cast(this->unknown_00EC); + const std::uint8_t thumbBottomSource[] = { + 0x0D, 0x5E, 0x59, 0x4F, 0x4D, 0x95, 0xC2, 0x60, 0x0B, 0x15, 0x59, 0x79, 0x30, 0xE1, 0x5B, 0xEC, 0xA9, 0x87, 0xFC, 0xDB, 0xF9, 0x2E, 0x75, 0xC8, + 0x8A, 0x84, 0xF0, 0xD1, 0xE8, 0x07, 0x74, 0xCE, 0xBF, 0x9E, 0xF5, 0xD9, 0xD2, 0x2F, 0x6F, 0xD8, 0xA0, 0x93, 0xC6, 0xD1, 0xE2, 0x2C, 0x69, 0x83, + 0xAF, 0x9C, 0xE9, 0xB5}; + thread_local EncryptedName thumbBottomName(thumbBottomSource); + const std::string thumbBottom(thumbBottomName.Text()); + const std::uint8_t thumbMiddleSource[] = { + 0x57, 0x5E, 0x21, 0x27, 0x11, 0x5D, 0x2C, 0xE2, 0x51, 0x15, 0x21, 0x11, 0x6C, 0x29, 0xB5, 0x6E, 0xF3, 0x87, 0x84, 0xB3, 0xA5, 0xE6, 0x9B, 0x4A, + 0xD0, 0x84, 0x88, 0xB9, 0xB4, 0xCF, 0x9A, 0x4C, 0xE5, 0x9E, 0x8D, 0xB1, 0x8E, 0xE7, 0x81, 0x5A, 0xFA, 0x93, 0xBE, 0xB0, 0xB8, 0xF7, 0xC7, 0x4D, + 0xFA, 0x81, 0xE1}; + thread_local EncryptedName thumbMiddleName(thumbMiddleSource); + const std::string thumbMiddle(thumbMiddleName.Text()); + const std::uint8_t thumbTopSource[] = { + 0x4F, 0x36, 0x2B, 0xF7, 0x75, 0xB1, 0x3A, 0xF4, 0x49, 0x7D, 0x2B, 0xC1, 0x08, 0xC5, 0xA3, 0x78, 0xEB, 0xEF, 0x8E, 0x63, 0xC1, 0x0A, 0x8D, 0x5C, + 0xC8, 0xEC, 0x82, 0x69, 0xD0, 0x23, 0x8C, 0x5A, 0xFD, 0xF6, 0x87, 0x61, 0xEA, 0x0B, 0x97, 0x4C, 0xE2, 0xFB, 0xB4, 0x78, 0xC5, 0x51, 0x9D, 0x54, + 0xFF, 0x99}; + thread_local EncryptedName thumbTopName(thumbTopSource); + const std::string thumbTop(thumbTopName.Text()); + title->SetScrollBarThumbImages(thumbTop, thumbMiddle, thumbBottom); + } + this->AddChild(this->unknown_00EC); + + this->unknown_00F0 = reinterpret_cast(new CUITextViewer(*this->m_context)); + reinterpret_cast(this->unknown_00F0)->SetSize(200, 87); + reinterpret_cast(this->unknown_00F0)->Move(400, 5); + reinterpret_cast(this->unknown_00F0)->SetTextOffset(0, 6); + { + CUITextViewer* lines = reinterpret_cast(this->unknown_00F0); + const std::uint8_t linesFontSource[] = { + 0x38, 0x60, 0xE1, 0x78, 0x5A, 0x0F}; + thread_local EncryptedName linesFontName(linesFontSource); + const std::string linesFont(linesFontName.Text()); + lines->SetFont(linesFont); + } + reinterpret_cast(this->unknown_00F0)->SetFontHeight(12); + reinterpret_cast(this->unknown_00F0)->SetBold(1); + reinterpret_cast(this->unknown_00F0)->SetTextColor(0); + reinterpret_cast(this->unknown_00F0)->SetOutline(0, 0xFFFF00FF); + reinterpret_cast(this->unknown_00F0)->SetLineSpacing(6); + reinterpret_cast(this->unknown_00F0)->SetBackgroundColor(0xFFFF00FF); + reinterpret_cast(this->unknown_00F0)->SetPadding(15, 5, 5, 5); + reinterpret_cast(this->unknown_00F0)->SetScrollBarSize(8, 87); + reinterpret_cast(this->unknown_00F0)->SetScrollStep(20); + { + CUITextViewer* lines = reinterpret_cast(this->unknown_00F0); + const std::uint8_t downImageSource[] = { + 0xE3, 0x5E, 0x17, 0xED, 0x17, 0x87, 0x26, 0xB0, 0xE5, 0x15, 0x17, 0xDB, 0x6A, 0xF3, 0xBF, 0x3C, 0x47, 0x87, 0xB2, 0x79, 0xA3, 0x3C, 0x91, 0x18, + 0x64, 0x84, 0xBE, 0x73, 0xB2, 0x15, 0x90, 0x1E, 0x51, 0x9E, 0xBB, 0x7B, 0x88, 0x28, 0x91, 0x0F, 0x4C, 0x86, 0x88, 0x73, 0xB8, 0x3E, 0x8D, 0x53, + 0x41, 0x9C, 0xA7, 0x17}; + thread_local EncryptedName downImageName(downImageSource); + const std::string downImage(downImageName.Text()); + const std::uint8_t upImageSource[] = { + 0xBF, 0x7A, 0x6F, 0xA1, 0xAB, 0x7F, 0xD0, 0xC2, 0xB9, 0x31, 0x6F, 0x97, 0xD6, 0x0B, 0x49, 0x4E, 0x1B, 0xA3, 0xCA, 0x35, 0x1F, 0xC4, 0x67, 0x6A, + 0x38, 0xA0, 0xC6, 0x3F, 0x0E, 0xED, 0x66, 0x6C, 0x0D, 0xBA, 0xC3, 0x37, 0x34, 0xD0, 0x67, 0x7D, 0x10, 0xA2, 0xF0, 0x2E, 0x1B, 0x9F, 0x77, 0x62, + 0x0F, 0xD5}; + thread_local EncryptedName upImageName(upImageSource); + const std::string upImage(upImageName.Text()); + lines->SetScrollBarButtonImages(upImage, downImage); + } + { + CUITextViewer* lines = reinterpret_cast(this->unknown_00F0); + const std::uint8_t scrollBackgroundSource[] = { + 0x21, 0x36, 0x47, 0xB5, 0x41, 0x0D, 0xE4, 0xBE, 0x27, 0x7D, 0x47, 0x83, 0x3C, 0x79, 0x7D, 0x32, 0x85, 0xEF, 0xE2, 0x21, 0xF5, 0xB6, 0x53, 0x16, + 0xA6, 0xEC, 0xEE, 0x2B, 0xE4, 0x9F, 0x52, 0x10, 0x93, 0xF6, 0xEB, 0x23, 0xDE, 0xA1, 0x46, 0x2C, 0x8C, 0xF0, 0xE3, 0x61, 0xE3, 0xAE, 0x51, 0x73}; + thread_local EncryptedName scrollBackgroundName(scrollBackgroundSource); + const std::string scrollBackground(scrollBackgroundName.Text()); + lines->SetScrollBarBackground(scrollBackground); + } + { + CUITextViewer* lines = reinterpret_cast(this->unknown_00F0); + const std::uint8_t thumbBottomSource[] = { + 0x09, 0xBC, 0x39, 0x89, 0x39, 0x17, 0xD0, 0xBC, 0x0F, 0xF7, 0x39, 0xBF, 0x44, 0x63, 0x49, 0x30, 0xAD, 0x65, 0x9C, 0x1D, 0x8D, 0xAC, 0x67, 0x14, + 0x8E, 0x66, 0x90, 0x17, 0x9C, 0x85, 0x66, 0x12, 0xBB, 0x7C, 0x95, 0x1F, 0xA6, 0xAD, 0x7D, 0x04, 0xA4, 0x71, 0xA6, 0x17, 0x96, 0xAE, 0x7B, 0x5F, + 0xAB, 0x7E, 0x89, 0x73}; + thread_local EncryptedName thumbBottomName(thumbBottomSource); + const std::string thumbBottom(thumbBottomName.Text()); + const std::uint8_t thumbMiddleSource[] = { + 0xA3, 0x5A, 0x21, 0x85, 0xFB, 0xEB, 0xD8, 0x06, 0xA5, 0x11, 0x21, 0xB3, 0x86, 0x9F, 0x41, 0x8A, 0x07, 0x83, 0x84, 0x11, 0x4F, 0x50, 0x6F, 0xAE, + 0x24, 0x80, 0x88, 0x1B, 0x5E, 0x79, 0x6E, 0xA8, 0x11, 0x9A, 0x8D, 0x13, 0x64, 0x51, 0x75, 0xBE, 0x0E, 0x97, 0xBE, 0x12, 0x52, 0x41, 0x33, 0xA9, + 0x0E, 0x85, 0xE1}; + thread_local EncryptedName thumbMiddleName(thumbMiddleSource); + const std::string thumbMiddle(thumbMiddleName.Text()); + const std::uint8_t thumbTopSource[] = { + 0x8F, 0x0E, 0x0F, 0xCF, 0xA3, 0x19, 0x84, 0xB4, 0x89, 0x45, 0x0F, 0xF9, 0xDE, 0x6D, 0x1D, 0x38, 0x2B, 0xD7, 0xAA, 0x5B, 0x17, 0xA2, 0x33, 0x1C, + 0x08, 0xD4, 0xA6, 0x51, 0x06, 0x8B, 0x32, 0x1A, 0x3D, 0xCE, 0xA3, 0x59, 0x3C, 0xA3, 0x29, 0x0C, 0x22, 0xC3, 0x90, 0x40, 0x13, 0xF9, 0x23, 0x14, + 0x3F, 0xA1}; + thread_local EncryptedName thumbTopName(thumbTopSource); + const std::string thumbTop(thumbTopName.Text()); + lines->SetScrollBarThumbImages(thumbTop, thumbMiddle, thumbBottom); + } + this->AddChild(this->unknown_00F0); + + this->unknown_00F4 = reinterpret_cast(new CUITextViewer(*this->m_context)); + reinterpret_cast(this->unknown_00F4)->SetSize(360, 13); + reinterpret_cast(this->unknown_00F4)->Move(25, 73); + reinterpret_cast(this->unknown_00F4)->SetTextOffset(0, 0); + { + CUITextViewer* status = reinterpret_cast(this->unknown_00F4); + const std::uint8_t statusFontSource[] = { + 0x5A, 0x70, 0xFF, 0x40, 0x1C, 0x23}; + thread_local EncryptedName statusFontName(statusFontSource); + const std::string statusFont(statusFontName.Text()); + status->SetFont(statusFont); + } + reinterpret_cast(this->unknown_00F4)->SetFontHeight(12); + reinterpret_cast(this->unknown_00F4)->SetBold(0); + reinterpret_cast(this->unknown_00F4)->SetTextColor(0); + reinterpret_cast(this->unknown_00F4)->SetOutline(0, 0xFFFF00FF); + reinterpret_cast(this->unknown_00F4)->SetLineSpacing(6); + reinterpret_cast(this->unknown_00F4)->SetBackgroundColor(0xFFFF00FF); + reinterpret_cast(this->unknown_00F4)->SetPadding(15, 0, 3, 0); + reinterpret_cast(this->unknown_00F4)->SetScrollBarSize(8, 12); + reinterpret_cast(this->unknown_00F4)->SetScrollStep(1); + reinterpret_cast(this->unknown_00F4)->SetScrollBarButtonImages("", ""); + reinterpret_cast(this->unknown_00F4)->SetScrollBarBackground(""); + reinterpret_cast(this->unknown_00F4)->SetScrollBarThumbImages("", "", ""); + this->AddChild(this->unknown_00F4); +} + // OFFSET: 0x009DCE10 // FUNCTION: fn_14330 void CUICharacterInfo::Slot16() { diff --git a/Source/UI/Lists/UIListBoxTemplate.h b/Source/UI/Lists/UIListBoxTemplate.h index 24c7fac2..96b742b3 100644 --- a/Source/UI/Lists/UIListBoxTemplate.h +++ b/Source/UI/Lists/UIListBoxTemplate.h @@ -81,12 +81,19 @@ public: class CUIItemInfo : public CUIListItem { public: explicit CUIItemInfo(UIWindowContext& context); + void Slot15(int width, int height) override; void Slot16() override; void Slot32(int x, int y) override; void SetDescription(int type, const std::vector& description); - /* 00E8 */ unsigned char unknown_00E8[0x08]; + union { + /* 00E8 */ unsigned char unknown_00E8[0x08]; + struct { + /* 00E8 */ CUIStaticImage* image; + /* 00EC */ CUIStaticText* nameText; + }; + }; /* 00F0 */ CUIStaticText* unknown_00F0; /* 00F4 */ CUIStaticText* unknown_00F4; /* 00F8 */ CUIStaticText* unknown_00F8; @@ -99,6 +106,7 @@ public: class CUIMonsterInfo : public CUIListItem { public: explicit CUIMonsterInfo(UIWindowContext& context); + void Slot15(int width, int height) override; void Slot16() override; void Paint() override; void SetMonster(const std::string& title); @@ -113,6 +121,7 @@ public: class CUIQuestInfo : public CUIListItem { public: explicit CUIQuestInfo(UIWindowContext& context); + void Slot15(int width, int height) override; void Slot16() override; void SetTitle(int id); void SetTip(int id);