From 4767ffecd2188288f7fe3a403369fb7ca80764ca Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Fri, 30 Oct 2026 21:09:51 +0000 Subject: [PATCH] Decompile fn_09907 (UIRefiningWnd::Slot15) Batch #6263 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_09907 UIRefiningWnd::Slot15: logic confirmed by peer review Peer-reviewed-by: ragnarok-clanker, alisonrag, KWDev Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/UI/UIRefiningWnd.cpp | 57 +++++++++++++++++++++++++++++++++++++ Source/UI/UIRefiningWnd.h | 10 +++++++ 2 files changed, 67 insertions(+) diff --git a/Source/UI/UIRefiningWnd.cpp b/Source/UI/UIRefiningWnd.cpp index 80518e0f..b1cda457 100644 --- a/Source/UI/UIRefiningWnd.cpp +++ b/Source/UI/UIRefiningWnd.cpp @@ -14,6 +14,7 @@ #include "Resource/Bitmap/BitmapResource.h" #include "Resource/ResourceMgr.h" #include "Resource/TextureNames.h" +#include "UI/Buttons/UIBasicButton.h" #include "UI/Window/UIWindowMgr.h" #include "UI/Window/WindowManagerWindows.h" #include "Utility/Text/FormatString.h" @@ -45,6 +46,62 @@ struct RefiningClosePacket { }; #pragma pack(pop) +// OFFSET: 0x007F5E30 +// FUNCTION: fn_09907 +void UIRefiningWnd::Slot15(int width, int height) { + this->AddBaseButton(*this->m_controls); + this->AddCloseButton(*this->m_controls, "", 0); + + UIBasicButton* basic = new UIBasicButton(*this->m_context, *this->m_controls); + basic->Configure(56, LookupMessage(218)); + basic->Move(204, 322); + basic->SetId(185); + this->AddChild(basic); + this->unknown_00C0 = basic; + + this->refiningButton = new UIRefining_BtnRefining(*this->m_context, *this->m_controls); + this->refiningButton->SetBitmap("유저인터페이스\\refining_renewal\\bt_refining_normal.bmp", 0, 0); + this->refiningButton->SetBitmap("유저인터페이스\\refining_renewal\\bt_refining_normal.bmp", 1, 0); + this->refiningButton->SetBitmap("유저인터페이스\\refining_renewal\\bt_refining_press.bmp", 2, 0); + this->refiningButton->SetBitmap("유저인터페이스\\refining_renewal\\bt_refining_disable.bmp", 3, 0); + this->refiningButton->Resize(this->refiningButton->BitmapWidth(), this->refiningButton->BitmapHeight()); + this->refiningButton->Move(84, 262); + this->refiningButton->SetId(184); + this->refiningButton->SetDisabled(1); + this->refiningButton->Invalidate(); + this->AddChild(this->refiningButton); + + this->returnButton = new UIRefining_BtnReturn(*this->m_context, *this->m_controls); + this->returnButton->UpdateBitmaps(); + this->returnButton->Move(20, 267); + this->returnButton->SetId(519); + this->returnButton->Enable(0); + this->AddChild(this->returnButton); + + this->againButton = new UIRefining_BtnAgain(*this->m_context, *this->m_controls); + this->againButton->UpdateBitmaps(); + this->againButton->Move(142, 267); + this->againButton->SetId(520); + this->againButton->Enable(0); + this->AddChild(this->againButton); + + this->notice = new UIRefining_Notice(*this->m_context, *this->m_controls); + this->notice->SetSize(194, 22); + this->notice->Move(6, 322); + this->AddChild(this->notice); + + UIBitmapButton* help = new UIBitmapButton(*this->m_context, *this->m_controls); + help->SetBitmap("유저인터페이스\\basic_interface\\btn_help_normal.bmp", 0, 0); + help->SetBitmap("유저인터페이스\\basic_interface\\btn_help_over.bmp", 1, 0); + help->SetBitmap("유저인터페이스\\basic_interface\\btn_help_pressed.bmp", 2, 0); + help->SetBitmap("유저인터페이스\\basic_interface\\btn_help_disabled.bmp", 3, 0); + help->SetSize(help->BitmapWidth(), help->BitmapHeight()); + help->Move(230, 20); + help->SetTooltip(LookupMessage(4115)); + help->SetId(510); + this->AddChild(help); +} + // OFFSET: 0x007F5270 // FUNCTION: fn_09902 void UIRefiningWnd::Slot10(int x, int y, std::intptr_t value) { diff --git a/Source/UI/UIRefiningWnd.h b/Source/UI/UIRefiningWnd.h index a04246c4..5190329c 100644 --- a/Source/UI/UIRefiningWnd.h +++ b/Source/UI/UIRefiningWnd.h @@ -24,6 +24,8 @@ static_assert(sizeof(RefiningMaterial) == 9); class UIRefining_BtnAgain : public UIBitmapButton { public: + // INLINED + UIRefining_BtnAgain(UIWindowContext& windows, UIButtonContext& controls) : UIBitmapButton(windows, controls), cost(0) {} void Paint() override; void Enable(unsigned char value) override; void UpdateBitmaps(); @@ -35,6 +37,8 @@ public: class UIRefining_BtnRefining : public UIBitmapButton { public: + // INLINED + UIRefining_BtnRefining(UIWindowContext& windows, UIButtonContext& controls) : UIBitmapButton(windows, controls), cost(0) {} void Paint() override; void Enable(unsigned char value) override; @@ -43,6 +47,8 @@ public: class UIRefining_BtnReturn : public UIBitmapButton { public: + // INLINED + UIRefining_BtnReturn(UIWindowContext& windows, UIButtonContext& controls) : UIBitmapButton(windows, controls), highlighted(1) {} void Paint() override; void UpdateBitmaps(); @@ -51,6 +57,9 @@ public: class UIRefining_Notice : public UIStaticText { public: + // INLINED + UIRefining_Notice(UIWindowContext& windows, UIButtonContext& controls) + : UIStaticText(windows, controls), savedHighlight(0), expireTick(0), autoShown(0), highlight(0) {} void Slot19() override; void Paint() override; void SetNotice(const char* value, int duration, unsigned char highlight); @@ -65,6 +74,7 @@ public: class UIRefiningWnd : public UIFrameWnd { public: void Slot10(int x, int y, std::intptr_t value) override; + void Slot15(int width, int height) override; void Slot19() override; void Slot25(int x, int y) override; void Slot26(int x, int y) override;