Decompile 4 functions in Source/Contents/Messenger/MessengerMember.cpp, Source/UI/Buttons/UITextButton.cpp, ...
Batch #8342 by eAthena: 0 byte-identical, 4 confirmed by peer review. - fn_16233 CUIListBoxEx<OngoingQuestInfo::CUIRewardItem,OngoingQuestInfo::CRewardItemData>::AddNewItem: logic confirmed by peer review - fn_16234 CUIListBoxEx<OngoingQuestInfo::CUIRewardItem,OngoingQuestInfo::CRewardItemData>::Slot53: logic confirmed by peer review - fn_16235 CUIListBoxEx<OngoingQuestInfo::CUIRewardItem,OngoingQuestInfo::CRewardItemData>::Resize: logic confirmed by peer review - fn_16291 OngoingQuestInfo::CUIRewardItem::CUIRewardItem: logic confirmed by peer review Peer-reviewed-by: gordaoprogramas, kyoshi, dori Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
parent
0a6594a177
commit
fdd084f0cb
6 changed files with 106 additions and 10 deletions
|
|
@ -47,10 +47,6 @@ namespace {
|
|||
const char* sub_DDE770(const char* mapName);
|
||||
};
|
||||
|
||||
class UIMessengerGroupDropWnd : public UIWindow {
|
||||
public:
|
||||
void sub_73A1C0(int x, int y, int unknown);
|
||||
};
|
||||
}
|
||||
|
||||
class UIDragMiniPartyWnd : public UIFrameWnd {
|
||||
|
|
@ -126,6 +122,7 @@ public:
|
|||
void Slot35(int delta) override;
|
||||
MessengerMember MemberAt(int x, int y);
|
||||
void OpenMiniPartyWnd(int cell, const MessengerMember& member);
|
||||
void DropMember(int x, int y, int index);
|
||||
MessengerMember MemberAtIndex(int index);
|
||||
void UpdateScroll();
|
||||
void LayoutButtons();
|
||||
|
|
@ -171,6 +168,10 @@ public:
|
|||
|
||||
// GLOBAL: gl_24961
|
||||
bool g_messengerGroupCollapsed;
|
||||
// GLOBAL: gl_25219
|
||||
int g_messengerDropColumnWidth;
|
||||
// GLOBAL: gl_25220
|
||||
int g_messengerDropRowHeight;
|
||||
|
||||
#if defined(_WIN32) && !defined(_WIN64)
|
||||
static_assert(sizeof(MiniPartyIconPosition) == 12);
|
||||
|
|
@ -443,9 +444,9 @@ void UIDragMiniPartyWnd::MoveGauge(int x, int y) {
|
|||
// OFFSET: 0x00738CE0
|
||||
// FUNCTION: fn_07671
|
||||
void UIDragMiniPartyWnd::Slot31(int argument1, int argument2) {
|
||||
auto* window = static_cast<UIMessengerGroupDropWnd*>(g_windowMgr.LookupWindow(34));
|
||||
auto* window = static_cast<UIMessengerGroupWnd*>(g_windowMgr.LookupWindow(34));
|
||||
if (window) {
|
||||
window->sub_73A1C0(argument1 + this->geometry.x, argument2 + this->geometry.y, this->unknown_0108);
|
||||
window->DropMember(argument1 + this->geometry.x, argument2 + this->geometry.y, this->unknown_0108);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -670,6 +671,8 @@ MiniPartyInfoEntry::MiniPartyInfoEntry(const char* text, int value) : text(text)
|
|||
// FUNCTION: fn_07700
|
||||
UIMessengerGroupWnd::~UIMessengerGroupWnd() = default;
|
||||
|
||||
// OFFSET: 0x0073A1C0
|
||||
|
||||
// OFFSET: 0x0073A3F0
|
||||
// FUNCTION: fn_07704
|
||||
MessengerMember UIMessengerGroupWnd::MemberAt(int x, int y) {
|
||||
|
|
@ -695,7 +698,7 @@ MessengerMember UIMessengerGroupWnd::MemberAt(int x, int y) {
|
|||
|
||||
// OFFSET: 0x0073A330
|
||||
// FUNCTION: fn_07703
|
||||
void UIMessengerGroupWnd::OpenMiniPartyWnd(int cell, const MessengerMember& member) {
|
||||
__declspec(noinline) void UIMessengerGroupWnd::OpenMiniPartyWnd(int cell, const MessengerMember& member) {
|
||||
UIMiniPartyWnd* window = new UIMiniPartyWnd(*this->m_context, *this->m_frameContext);
|
||||
window->SetSize(174, 52);
|
||||
window->m_cell = cell;
|
||||
|
|
@ -706,7 +709,7 @@ void UIMessengerGroupWnd::OpenMiniPartyWnd(int cell, const MessengerMember& memb
|
|||
|
||||
// OFFSET: 0x0073A540
|
||||
// FUNCTION: fn_07705
|
||||
MessengerMember UIMessengerGroupWnd::MemberAtIndex(int index) {
|
||||
__declspec(noinline) MessengerMember UIMessengerGroupWnd::MemberAtIndex(int index) {
|
||||
int position = 0;
|
||||
for (auto it = this->members.begin(); it != this->members.end(); ++it, ++position) {
|
||||
if (index == position) {
|
||||
|
|
@ -973,7 +976,7 @@ void UIWindowMgr::MoveTransient(int x, int y) {
|
|||
|
||||
// OFFSET: 0x00AA9E90
|
||||
// FUNCTION: fn_17262
|
||||
void UIWindowMgr::RetireTransientWindow() {
|
||||
__declspec(noinline) void UIWindowMgr::RetireTransientWindow() {
|
||||
UIDragMiniPartyWnd* transient = static_cast<UIDragMiniPartyWnd*>(this->window_4F250);
|
||||
if (transient && transient->member.valid) {
|
||||
transient->geometry.unknown_0030 = 1;
|
||||
|
|
|
|||
|
|
@ -3378,3 +3378,14 @@ UITVBitmapButton::UITVBitmapButton()
|
|||
}
|
||||
|
||||
// OFFSET: 0x0086EC10
|
||||
|
||||
#include "Contents/Configuration/ServiceConfiguration.h"
|
||||
#include "Contents/TipOfTheDay.h"
|
||||
|
||||
// OFFSET: 0x0086DE10
|
||||
|
||||
// OFFSET: 0x008894B0
|
||||
|
||||
// OFFSET: 0x00889600
|
||||
|
||||
// OFFSET: 0x0088FDC0
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ class UIChatHisBox2 : public UIChatHisBox {
|
|||
public:
|
||||
UIChatHisBox2(UIWindowContext& windows, UIListBoxContext& list);
|
||||
bool Slot08() override;
|
||||
void Paint() override;
|
||||
void Slot15(int width, int height) override;
|
||||
void Configure(int x, int y, int width, int height, unsigned char transparent) override;
|
||||
void Slot33(int x, int y) override;
|
||||
|
|
@ -21,6 +22,7 @@ public:
|
|||
class UIChatHisBox3 : public UIChatHisBox2 {
|
||||
public:
|
||||
UIChatHisBox3(UIWindowContext& windows, UIListBoxContext& list);
|
||||
void Paint() override;
|
||||
void Slot15(int width, int height) override;
|
||||
void Resize(int width, int height) override;
|
||||
|
||||
|
|
@ -30,6 +32,7 @@ public:
|
|||
|
||||
class UIMemberListBox : public UIChatHisBox2 {
|
||||
public:
|
||||
UIMemberListBox(UIWindowContext& windows, UIListBoxContext& list);
|
||||
void Paint() override;
|
||||
void Slot25(int x, int y) override;
|
||||
void Slot28(int x, int y) override;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ public:
|
|||
UITreeView(UIWindowContext& windows, UIEditContext& edit, UIButtonContext& controls);
|
||||
void Resize(int width, int height) override;
|
||||
void Slot15(int width, int height) override;
|
||||
void Paint() override;
|
||||
void Slot25(int x, int y) override;
|
||||
void Slot27(int x, int y) override;
|
||||
void Slot31(int x, int y) override;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
template <>
|
||||
void CUIListBoxEx<OngoingQuestInfo::CUIRewardItem, OngoingQuestInfo::CRewardItemData>::OnScroll(int position);
|
||||
|
||||
template <> void CUIListBoxEx<OngoingQuestInfo::CUIRewardItem, OngoingQuestInfo::CRewardItemData>::AddNewItem(); template <> void CUIListBoxEx<OngoingQuestInfo::CUIRewardItem, OngoingQuestInfo::CRewardItemData>::Slot53(int resolveSkin); template <> void CUIListBoxEx<OngoingQuestInfo::CUIRewardItem, OngoingQuestInfo::CRewardItemData>::Resize(int width, int height);
|
||||
// OFFSET: 0x00A4F580
|
||||
// FUNCTION: fn_16213
|
||||
bool UnusedTrueA4F580() {
|
||||
|
|
@ -704,3 +704,80 @@ CUIScrollWindow::CUIScrollWindow(UIWindowContext& context)
|
|||
: CUIControl(context), firstLine(nullptr), secondContents(nullptr), secondLine(nullptr), rewards(nullptr), scrollBar(nullptr), firstContents(nullptr) {
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x00A53A90
|
||||
// FUNCTION: fn_16233
|
||||
template <>
|
||||
void CUIListBoxEx<OngoingQuestInfo::CUIRewardItem, OngoingQuestInfo::CRewardItemData>::AddNewItem() {
|
||||
if (this->itemWidth <= 0 || this->rowHeight <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (OngoingQuestInfo::CUIRewardItem* item : this->items) {
|
||||
this->RemoveChild(item, 1);
|
||||
}
|
||||
this->items.clear();
|
||||
this->selected = static_cast<unsigned int>(-1);
|
||||
|
||||
if (this->rowHeight <= this->geometry.height) {
|
||||
unsigned count = static_cast<unsigned>(this->geometry.height / this->rowHeight) + 1;
|
||||
if (this->geometry.height % this->rowHeight > 1) {
|
||||
++count;
|
||||
}
|
||||
this->items.resize(count, nullptr);
|
||||
for (OngoingQuestInfo::CUIRewardItem*& slot : this->items) {
|
||||
OngoingQuestInfo::CUIRewardItem* item = new OngoingQuestInfo::CUIRewardItem(*this->m_context);
|
||||
item->SetSize(this->itemWidth, this->rowHeight);
|
||||
item->Show(0);
|
||||
CResPtr<CBitmapRes>* images = reinterpret_cast<CResPtr<CBitmapRes>*>(reinterpret_cast<std::uint8_t*>(this) + 0x80);
|
||||
item->SetImageResources(images[0], images[1], images[2], images[3]);
|
||||
item->onHover = [this](CUIListItem* listItem) {
|
||||
for (OngoingQuestInfo::CUIRewardItem* other : this->items) {
|
||||
other->SetHighlighted(other == listItem);
|
||||
}
|
||||
};
|
||||
item->onPress = [this](CUIListItem* listItem) {
|
||||
this->SelectItem(listItem);
|
||||
};
|
||||
this->AddChild(item);
|
||||
slot = item;
|
||||
}
|
||||
}
|
||||
|
||||
this->scrollBar->SetTotal(this->geometry.height);
|
||||
this->scrollBar->SetVisible(this->geometry.height);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00A53CF0
|
||||
// FUNCTION: fn_16234
|
||||
template <>
|
||||
void CUIListBoxEx<OngoingQuestInfo::CUIRewardItem, OngoingQuestInfo::CRewardItemData>::Slot53(int resolveSkin) {
|
||||
CResPtr<CBitmapRes>* images = reinterpret_cast<CResPtr<CBitmapRes>*>(reinterpret_cast<std::uint8_t*>(this) + 0x80);
|
||||
images[0] = CResPtr<CBitmapRes>(this->LoadBitmapResource(this->imageNames[0], resolveSkin));
|
||||
images[1] = CResPtr<CBitmapRes>(this->LoadBitmapResource(this->imageNames[1], resolveSkin));
|
||||
images[2] = CResPtr<CBitmapRes>(this->LoadBitmapResource(this->imageNames[2], resolveSkin));
|
||||
images[3] = CResPtr<CBitmapRes>(this->LoadBitmapResource(this->disabledName, resolveSkin));
|
||||
for (OngoingQuestInfo::CUIRewardItem* item : this->items) {
|
||||
item->SetImageResources(images[0], images[1], images[2], images[3]);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x00A53F00
|
||||
// FUNCTION: fn_16235
|
||||
template <>
|
||||
void CUIListBoxEx<OngoingQuestInfo::CUIRewardItem, OngoingQuestInfo::CRewardItemData>::Resize(int width, int height) {
|
||||
UIWindow::Resize(width, height);
|
||||
this->AddNewItem();
|
||||
this->scrollBar->Resize(this->scrollBar->geometry.width, height);
|
||||
this->scrollBar->SetTotal(static_cast<int>(this->data.size()) * this->rowHeight + this->itemY);
|
||||
this->scrollBar->SetVisible(this->geometry.height);
|
||||
this->scrollBar->SetPosition(this->scrollBar->position);
|
||||
this->rebind = 1;
|
||||
}
|
||||
|
||||
namespace OngoingQuestInfo {
|
||||
// OFFSET: 0x00A54EA0
|
||||
// FUNCTION: fn_16291
|
||||
CUIRewardItem::CUIRewardItem(UIWindowContext& context) : CUIListItem(context), background(nullptr), gameItem(nullptr), nameText(nullptr), countText(nullptr) {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ public:
|
|||
|
||||
class CUIRewardItem : public CUIListItem {
|
||||
public:
|
||||
explicit CUIRewardItem(UIWindowContext& context);
|
||||
void Slot15(int width, int height) override;
|
||||
void Slot16() override;
|
||||
void Paint() override;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue