rodecomp/Source/UI/Window/UIResizer.cpp
ragnarok-clanker 3b9e20f397 Decompile 6 functions in Source/UI/Window/UIWindow.cpp, Source/UI/Window/UIWindow.h, ...
Batch #5165 by Yommy: 0 byte-identical, 6 confirmed by peer review.

- fn_16959 UIWindow::WrapFormattedText: logic confirmed by peer review
- fn_09912 UIRefining_Notice::Paint: logic confirmed by peer review
- fn_10812 UINameBalloonText::Paint: logic confirmed by peer review
- fn_10824 UIVerticalNameBalloonText::Paint: logic confirmed by peer review
- fn_10845 UIResizer::Slot25: logic confirmed by peer review
- fn_10869 UIResizer::Slot27: logic confirmed by peer review

Peer-reviewed-by: alisonrag, youko
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-10-30 09:09:20 +00:00

120 lines
2.6 KiB
C++

#include "Client/Mode/ModeCursor.h"
#include "Resource/Bitmap/BitmapResource.h"
#include "Resource/ResourceMgr.h"
#include "Resource/TextureNames.h"
#include "UI/Window/UIResizer.h"
#include "UI/Window/UIWindowMgr.h"
// OFFSET: 0x0085D650
// FUNCTION: fn_10815
void UIResizer::Paint() {
if (!this->bitmapName.empty()) {
CBitmapRes* bitmap = static_cast<CBitmapRes*>(ResourceMgr::Instance().Load(Resolve(this->bitmapName.c_str())));
this->DrawBitmap(0, 0, bitmap ? &bitmap->image : nullptr, false);
return;
}
this->ClearSurface(this->backgroundColor);
this->FillRegion(0, 0, this->geometry.width, 2, this->lineColor);
}
// OFFSET: 0x0085ECE0
// FUNCTION: fn_10845
void UIResizer::Slot25(int x, int y) {
g_windowMgr.SetCapture(this);
this->startX = x;
this->startY = y;
if (this->parent) {
this->parentWidth = this->parent->geometry.width;
this->parentHeight = this->parent->geometry.height;
}
this->ToScreen(this->startX, this->startY);
}
// OFFSET: 0x0085F470
// FUNCTION: fn_10862
void UIResizer::Slot28(int, int) {
}
// OFFSET: 0x0085F6D0
// FUNCTION: fn_10869
void UIResizer::Slot27(int x, int y) {
if (g_windowMgr.Capture() != this) {
return;
}
int screenX = x;
int screenY = y;
this->ToScreen(screenX, screenY);
if (!this->parent) {
return;
}
const int dx = screenX - this->startX;
int width = this->parentWidth;
int height = this->parentHeight;
const int dy = screenY - this->startY;
switch (this->direction) {
case 0:
width -= dx;
break;
case 1:
width += dx;
break;
case 2:
height -= dy;
break;
case 3:
height += dy;
break;
case 4:
width -= dx;
height -= dy;
break;
case 5:
width += dx;
height -= dy;
break;
case 6:
width -= dx;
height += dy;
break;
case 7:
width += dx;
height += dy;
break;
}
this->parent->SendMsg(this, 14, this->direction, width, height, 0);
}
// OFFSET: 0x0085FA20
// FUNCTION: fn_10879
void UIResizer::ResetCursor(int x, int y) {
if (g_windowMgr.Capture() == this || (x >= 0 && x < this->geometry.width && y >= 0 && y <= this->geometry.height)) {
this->m_context->cursor.Set(2, this->m_context->cursorTick);
} else if (g_windowMgr.Capture() != this) {
this->m_context->cursor.Set(0, this->m_context->cursorTick);
}
}
// OFFSET: 0x0085EFD0
// FUNCTION: fn_10853
void UIResizer::Slot31(int, int) {
if (g_windowMgr.Capture() != this) {
return;
}
if (this->parent) {
this->parent->Slot36();
}
g_windowMgr.ReleaseCapture();
}
// OFFSET: 0x008697F0
// FUNCTION: fn_10971
void UIResizer::SetDirection(int value) {
this->direction = value;
}