rodecomp/Source/UI/Window/WindowTitlebar.cpp
ragnarok-clanker 7b5f29a7ef Decompile 10 functions in Source/UI/GameSettings/UIHotKeyWnd.cpp, Source/UI/Items/UIMerchantItemLogWnd.cpp, ...
Batch #16976 by KWDev: 10 byte-identical, 0 confirmed by peer review.

- fn_12740 UIHotKeyWnd::SaveHotkeys: byte-identical
- fn_13575 UIMerchantItemLogWnd::OnCreate: byte-identical
- fn_13578 UIMerchantItemLogWnd::OnProcess: byte-identical
- fn_09912 UIRefining_Notice::Paint: byte-identical
- fn_11504 UIWindow::WrapLinkText: byte-identical
- fn_09228 UIAchListWnd::OnLBtnDown: byte-identical
- fn_16914 UIWindow::UIWindow: byte-identical
- fn_12099 UIWindow::DrawTitleBarAt: byte-identical
- fn_07560 NAsyncWorkPtr::NAsyncWorkPtr: byte-identical
- fn_10163 UIRuneSetinfoList::AddLine: byte-identical (already on main)

Merged automatically: every function is byte-identical to the original.
2026-11-11 12:05:23 +00:00

98 lines
3.4 KiB
C++

#include "Resource/Bitmap/BitmapResource.h"
#include "Resource/ResourceMgr.h"
#include "Resource/Bitmap/TextureNames.h"
#include "UI/Window/UIWindow.h"
// OFFSET: 0x008D2CE0
// FUNCTION: fn_12098
int UIWindow::DrawTitleBar(bool closeButton, const char* title, int width) {
if (width == 0) {
width = this->geometry.width;
}
int left = 0;
int right = 0;
int titleHeight = 0;
auto* leftBar = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\titlebar_left.bmp")));
if (leftBar) {
this->DrawBitmap(0, 0, leftBar, false);
left = leftBar->image.width;
}
auto* rightBar = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\titlebar_right.bmp")));
if (rightBar) {
right = rightBar->image.width;
this->DrawBitmap(width - right, 0, rightBar, false);
}
auto* middle = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\titlebar_mid.bmp")));
if (middle) {
const int middleWidth = middle->image.width;
titleHeight = middle->image.height;
const int extent = width - right - left;
const int count = extent / middleWidth + (extent % middleWidth != 0);
for (int index = 0; index < count; ++index) {
this->DrawBitmap(left, 0, middle, false);
left += middleWidth;
}
}
this->DrawTextAt(19, titleHeight - 13, title, 0, 0, 12, 0xFFFFFF, 0, 0);
this->DrawTextAt(18, titleHeight - 14, title, 0, 0, 12, 0, 0, 0);
if (closeButton) {
auto* icon = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\sys_base_off.bmp")));
this->DrawBitmap(3, 3, icon, true);
}
return titleHeight;
}
// OFFSET: 0x008D2E50
// FUNCTION: fn_12099
int UIWindow::DrawTitleBarAt(int x, int width, bool closeButton, const char* title) {
if (width <= 0) {
width = this->geometry.width - x;
}
int left = 0;
int right = 0;
int titleHeight = 0;
auto* leftBar = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\titlebar_left.bmp")));
if (leftBar) {
this->DrawBitmap(x, 0, leftBar, false);
left = leftBar->image.width;
}
auto* rightBar = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\titlebar_right.bmp")));
if (rightBar) {
right = rightBar->image.width;
this->DrawBitmap(x - right + width, 0, rightBar, false);
}
auto* middle = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\titlebar_mid.bmp")));
if (middle) {
const int middleWidth = middle->image.width;
titleHeight = middle->image.height;
const int extent = width - right - left;
const int count = extent / middleWidth + (extent % middleWidth != 0);
const int start = x + left;
for (int index = 0; index < count; ++index) {
this->DrawBitmap(start + index * middleWidth, 0, middle, false);
}
}
this->DrawTextAt(x + 19, titleHeight - 13, title, 0, 0, 12, 0xFFFFFF, 0, 0);
this->DrawTextAt(x + 18, titleHeight - 14, title, 0, 0, 12, 0, 0, 0);
if (closeButton) {
auto* icon = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve("유저인터페이스\\basic_interface\\sys_base_off.bmp")));
if (icon) {
this->DrawBitmap(x + 3, 3, icon, true);
}
}
return titleHeight;
}