Decompile 23 functions in Source/UI/Quest/UIQuestDisplay.cpp, Source/UI/Quest/UIQuestDisplay.h, ...
Batch #4400 by youko: 8 byte-identical, 15 confirmed by peer review. - fn_12912 UIRPImageWnd2::Paint: logic confirmed by peer review - fn_12914 UIShowWarpWnd::Paint: byte-identical - fn_12916 UITransMenuWnd::Paint: logic confirmed by peer review - fn_12917 UIDebuffRemoveWnd::Slot25: byte-identical - fn_12918 UIMileageWnd::Slot25: byte-identical - fn_12919 UINoteWnd_Scroll::Slot25: logic confirmed by peer review - fn_12920 UIStaticText_LF::Slot25: logic confirmed by peer review - fn_12921 UITransMenuWnd::Slot25: logic confirmed by peer review - fn_12922 UIDebuffRemoveWnd::Slot31: byte-identical - fn_12923 UIMileageWnd::Slot31: logic confirmed by peer review - fn_12924 UINoteWnd_Scroll::Slot31: logic confirmed by peer review - fn_12925 UIStaticText_LF::Slot31: logic confirmed by peer review - fn_12926 UIMileageWnd::Slot28: logic confirmed by peer review - fn_12927 UIOpenMailBoxWnd::Slot53: byte-identical - fn_12928 UIDebuffRemoveWnd::Slot27: byte-identical - fn_12929 UIMileageWnd::Slot27: byte-identical - fn_12930 UITransMenuWnd::Slot27: logic confirmed by peer review - fn_12932 UIMileageWnd::Slot19: logic confirmed by peer review - fn_12933 UIOpenRoulletteWnd::Slot19: byte-identical - fn_12934 UIQuestDisplay::Slot33: logic confirmed by peer review - fn_12935 UINoteWnd_Scroll::Slot35: logic confirmed by peer review - fn_12936 UIStaticText_LF::Slot35: logic confirmed by peer review - fn_12937 UITransMenuWnd::Resize: logic confirmed by peer review Peer-reviewed-by: eAthena, KWDev Reviewed-by: ragnarok-clanker Adds to the build: Source/UI/Text/UIStaticText_LF.cpp, Source/UI/Window/UINoteWnd.cpp, Source/UI/Window/UIRPImageWnd2.cpp, Source/UI/Window/UIShowWarpWnd.cpp
This commit is contained in:
parent
e97ca18c6b
commit
1ff6ad3bf7
21 changed files with 395 additions and 0 deletions
|
|
@ -19,6 +19,49 @@ struct PACKET_CZ_ACTIVE_QUEST {
|
|||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
// OFFSET: 0x0094F1D0
|
||||
// FUNCTION: fn_12934
|
||||
void UIQuestDisplay::Slot33(int x, int y) {
|
||||
const int previous = this->m_selectedIndex;
|
||||
int selected = -1;
|
||||
int single = 0;
|
||||
int none = 0;
|
||||
int multiple = 0;
|
||||
int index = 0;
|
||||
const auto end = g_renewQuestMgr->m_ongoingQuests.end();
|
||||
for (auto it = g_renewQuestMgr->m_ongoingQuests.begin(); it != end; ++it, ++index) {
|
||||
if (single + multiple + none >= 5) {
|
||||
break;
|
||||
}
|
||||
|
||||
const int top = single * 50 + (none + multiple * 2) * 40;
|
||||
const RenewQuestOngoingInfo& info = it->second;
|
||||
if (info.m_active && info.m_simpleView) {
|
||||
if (top <= y && y <= top + 10) {
|
||||
selected = index;
|
||||
break;
|
||||
}
|
||||
|
||||
if (info.m_huntCount == 0) {
|
||||
++none;
|
||||
} else if (info.m_huntCount > 1) {
|
||||
++multiple;
|
||||
} else {
|
||||
++single;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this->m_selectedIndex = selected;
|
||||
if (previous != this->m_selectedIndex) {
|
||||
this->Invalidate();
|
||||
}
|
||||
|
||||
if (this->m_selectedIndex != -1) {
|
||||
this->SendMsg(nullptr, 49, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x009515D0
|
||||
// FUNCTION: fn_12953
|
||||
void UIQuestDisplay::Slot11() {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ struct QuestDisplayMenuItem {
|
|||
class UIQuestDisplay : public UIWindow {
|
||||
public:
|
||||
void Slot11() override;
|
||||
void Slot33(int x, int y) override;
|
||||
int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override;
|
||||
|
||||
protected:
|
||||
|
|
|
|||
25
Source/UI/Text/UIStaticText_LF.cpp
Normal file
25
Source/UI/Text/UIStaticText_LF.cpp
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#include "UI/Text/UIStaticText_LF.h"
|
||||
|
||||
// OFFSET: 0x0094EEA0
|
||||
// FUNCTION: fn_12920
|
||||
void UIStaticText_LF::Slot25(int x, int y) {
|
||||
if (this->parent) {
|
||||
this->parent->Slot25(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094EFA0
|
||||
// FUNCTION: fn_12925
|
||||
void UIStaticText_LF::Slot31(int x, int y) {
|
||||
if (this->parent) {
|
||||
this->parent->Slot31(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F300
|
||||
// FUNCTION: fn_12936
|
||||
void UIStaticText_LF::Slot35(int delta) {
|
||||
if (this->parent) {
|
||||
this->parent->Slot35(delta);
|
||||
}
|
||||
}
|
||||
13
Source/UI/Text/UIStaticText_LF.h
Normal file
13
Source/UI/Text/UIStaticText_LF.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef RAGNAROK_SOURCE_UI_TEXT_UISTATICTEXT_LF_H
|
||||
#define RAGNAROK_SOURCE_UI_TEXT_UISTATICTEXT_LF_H
|
||||
|
||||
#include "UI/Window/UIWindow.h"
|
||||
|
||||
class UIStaticText_LF : public UIWindow {
|
||||
public:
|
||||
void Slot25(int x, int y) override;
|
||||
void Slot31(int x, int y) override;
|
||||
void Slot35(int delta) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -12,6 +12,21 @@ struct DebuffRemovePacket {
|
|||
#pragma pack(pop)
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094EE60
|
||||
// FUNCTION: fn_12917
|
||||
void UIDebuffRemoveWnd::Slot25(int x, int y) {
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094EF00
|
||||
// FUNCTION: fn_12922
|
||||
void UIDebuffRemoveWnd::Slot31(int x, int y) {
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F030
|
||||
// FUNCTION: fn_12928
|
||||
void UIDebuffRemoveWnd::Slot27(int x, int y) {
|
||||
}
|
||||
|
||||
// OFFSET: 0x00950400
|
||||
// FUNCTION: fn_12940
|
||||
int UIDebuffRemoveWnd::SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@
|
|||
|
||||
class UIDebuffRemoveWnd : public UIFrameWnd {
|
||||
public:
|
||||
void Slot25(int x, int y) override;
|
||||
void Slot27(int x, int y) override;
|
||||
void Slot31(int x, int y) override;
|
||||
int SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) override;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,96 @@
|
|||
#include "UI/Window/UIMileageWnd.h"
|
||||
#include "Client/Session.h"
|
||||
#include "Contents/Configuration/ServiceOptions.h"
|
||||
#include "Network/Connection/Connection.h"
|
||||
#include "Network/Packets/PacketId.h"
|
||||
#include "UI/Buttons/UIButton.h"
|
||||
#include "Utility/Text/FormatString.h"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <windows.h>
|
||||
#include <timeapi.h>
|
||||
|
||||
namespace {
|
||||
#pragma pack(push, 1)
|
||||
struct DynamicNpcCreatePacket {
|
||||
/* 0000 */ std::int16_t id;
|
||||
/* 0002 */ char name[24];
|
||||
};
|
||||
#pragma pack(pop)
|
||||
}
|
||||
|
||||
// GLOBAL: gl_24859
|
||||
int g_mileageWndActive;
|
||||
|
||||
// GLOBAL: gl_24860
|
||||
int g_mileageWndPoint;
|
||||
|
||||
// GLOBAL: gl_24890
|
||||
int g_mileageWndElapsed;
|
||||
|
||||
// GLOBAL: gl_24861
|
||||
int g_mileageWndBonus;
|
||||
|
||||
// OFFSET: 0x0094EE70
|
||||
// FUNCTION: fn_12918
|
||||
void UIMileageWnd::Slot25(int x, int y) {
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094EF10
|
||||
// FUNCTION: fn_12923
|
||||
void UIMileageWnd::Slot31(int x, int y) {
|
||||
if (g_session.unknown_0000 == 20) {
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicNpcCreatePacket packet = {ID_CZ_DYNAMICNPC_CREATE_REQUEST};
|
||||
StringFormat(packet.name, sizeof(packet.name), static_cast<std::size_t>(-1), "GOLDPCCAFE");
|
||||
GetRagConnection().Send(sizeof(packet), &packet);
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094EFC0
|
||||
// FUNCTION: fn_12926
|
||||
void UIMileageWnd::Slot28(int x, int y) {
|
||||
if (this->m_tooltip.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int tipX = 10;
|
||||
int tipY = -20;
|
||||
this->ToScreen(tipX, tipY);
|
||||
this->m_controls->services.Tooltip(this->m_tooltip.c_str(), tipX, tipY, -1, false, true);
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F040
|
||||
// FUNCTION: fn_12929
|
||||
void UIMileageWnd::Slot27(int x, int y) {
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F130
|
||||
// FUNCTION: fn_12932
|
||||
void UIMileageWnd::Slot19() {
|
||||
if (!this->geometry.visible || this->m_point >= 300 || this->m_remaining == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const std::uint32_t now = timeGetTime();
|
||||
const std::uint32_t elapsed = now - this->m_startTime;
|
||||
if (elapsed < 1000) {
|
||||
return;
|
||||
}
|
||||
|
||||
const std::uint32_t seconds = elapsed / 1000;
|
||||
this->m_remaining -= seconds;
|
||||
if (this->m_remaining < 0) {
|
||||
this->m_remaining = 0;
|
||||
}
|
||||
|
||||
this->m_startTime = seconds * 1000 - elapsed + now;
|
||||
this->Invalidate();
|
||||
g_mileageWndElapsed = 3600 - this->m_remaining;
|
||||
}
|
||||
|
||||
// OFFSET: 0x00950690
|
||||
// FUNCTION: fn_12942
|
||||
int UIMileageWnd::SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) {
|
||||
|
|
|
|||
|
|
@ -4,9 +4,17 @@
|
|||
#include "UI/Window/UIFrameWnd.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
struct UIButtonContext;
|
||||
|
||||
class UIMileageWnd : public UIFrameWnd {
|
||||
public:
|
||||
void Slot19() override;
|
||||
void Slot25(int x, int y) override;
|
||||
void Slot27(int x, int y) override;
|
||||
void Slot28(int x, int y) override;
|
||||
void Slot31(int x, int y) override;
|
||||
int SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) override;
|
||||
|
||||
protected:
|
||||
|
|
@ -14,10 +22,13 @@ protected:
|
|||
/* 00B8 */ int m_point;
|
||||
/* 00BC */ int m_remaining;
|
||||
/* 00C0 */ int m_bonus;
|
||||
/* 00C4 */ std::string m_tooltip;
|
||||
UIButtonContext* m_controls;
|
||||
};
|
||||
|
||||
extern int g_mileageWndActive;
|
||||
extern int g_mileageWndPoint;
|
||||
extern int g_mileageWndElapsed;
|
||||
extern int g_mileageWndBonus;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
30
Source/UI/Window/UINoteWnd.cpp
Normal file
30
Source/UI/Window/UINoteWnd.cpp
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#include "UI/Window/UINoteWnd.h"
|
||||
#include "UI/Lists/UIScrollBar.h"
|
||||
|
||||
// OFFSET: 0x0094EE80
|
||||
// FUNCTION: fn_12919
|
||||
void UINoteWnd_Scroll::Slot25(int x, int y) {
|
||||
if (this->parent) {
|
||||
this->parent->Slot25(x + 23, y + 27);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094EF80
|
||||
// FUNCTION: fn_12924
|
||||
void UINoteWnd_Scroll::Slot31(int x, int y) {
|
||||
if (this->parent) {
|
||||
this->parent->Slot31(x + 23, y + 27);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F2C0
|
||||
// FUNCTION: fn_12935
|
||||
void UINoteWnd_Scroll::Slot35(int delta) {
|
||||
if (this->wheelScroll == 1) {
|
||||
if (delta < 0) {
|
||||
this->SendMsg(this->scrollBar, 7, 12, 0, 0, 0);
|
||||
} else {
|
||||
this->SendMsg(this->scrollBar, 7, -12, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
13
Source/UI/Window/UINoteWnd.h
Normal file
13
Source/UI/Window/UINoteWnd.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef RAGNAROK_SOURCE_UI_WINDOW_UINOTEWND_H
|
||||
#define RAGNAROK_SOURCE_UI_WINDOW_UINOTEWND_H
|
||||
|
||||
#include "UI/UIScrollWnd.h"
|
||||
|
||||
class UINoteWnd_Scroll : public UIScrollWnd {
|
||||
public:
|
||||
void Slot25(int x, int y) override;
|
||||
void Slot31(int x, int y) override;
|
||||
void Slot35(int delta) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -3,6 +3,11 @@
|
|||
#include "UI/Window/UIWindowMgr.h"
|
||||
#include "UI/Window/WindowManagerWindows.h"
|
||||
|
||||
// OFFSET: 0x0094F020
|
||||
// FUNCTION: fn_12927
|
||||
void UIOpenMailBoxWnd::Slot53() {
|
||||
}
|
||||
|
||||
// OFFSET: 0x00950A60
|
||||
// FUNCTION: fn_12945
|
||||
int UIOpenMailBoxWnd::SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
class UIOpenMailBoxWnd : public UIFrameWnd {
|
||||
public:
|
||||
int SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) override;
|
||||
virtual void Slot53();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -14,6 +14,11 @@ struct RouletteOpenPacket {
|
|||
#pragma pack(pop)
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F1C0
|
||||
// FUNCTION: fn_12933
|
||||
void UIOpenRoulletteWnd::Slot19() {
|
||||
}
|
||||
|
||||
// OFFSET: 0x00950B60
|
||||
// FUNCTION: fn_12946
|
||||
int UIOpenRoulletteWnd::SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
class UIOpenRoulletteWnd : public UIFrameWnd {
|
||||
public:
|
||||
void Slot19() override;
|
||||
int SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) override;
|
||||
};
|
||||
|
||||
|
|
|
|||
14
Source/UI/Window/UIRPImageWnd2.cpp
Normal file
14
Source/UI/Window/UIRPImageWnd2.cpp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#include "UI/Window/UIRPImageWnd2.h"
|
||||
|
||||
// OFFSET: 0x0094EAF0
|
||||
// FUNCTION: fn_12912
|
||||
void UIRPImageWnd2::Paint() {
|
||||
if (this->m_drawImage != 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
this->SetSolid(this->m_context->primitives, this->geometry.width, this->geometry.height, 0);
|
||||
for (int i = 0; i < this->m_imageCount; ++i) {
|
||||
this->DrawNamed(this->m_context->primitives, 0, 0, this->m_imageName, 0xFFFFFFFF, 0, 0);
|
||||
}
|
||||
}
|
||||
18
Source/UI/Window/UIRPImageWnd2.h
Normal file
18
Source/UI/Window/UIRPImageWnd2.h
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#ifndef RAGNAROK_SOURCE_UI_WINDOW_UIRPIMAGEWND2_H
|
||||
#define RAGNAROK_SOURCE_UI_WINDOW_UIRPIMAGEWND2_H
|
||||
|
||||
#include "UI/Window/UIFrameWnd.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
class UIRPImageWnd2 : public UIFrameWnd {
|
||||
public:
|
||||
void Paint() override;
|
||||
|
||||
protected:
|
||||
/* 00B4 */ std::string m_imageName;
|
||||
/* 00CC */ int m_imageCount;
|
||||
/* 00D0 */ unsigned char m_drawImage;
|
||||
};
|
||||
|
||||
#endif
|
||||
7
Source/UI/Window/UIShowWarpWnd.cpp
Normal file
7
Source/UI/Window/UIShowWarpWnd.cpp
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#include "UI/Window/UIShowWarpWnd.h"
|
||||
|
||||
// OFFSET: 0x0094ECE0
|
||||
// FUNCTION: fn_12914
|
||||
void UIShowWarpWnd::Paint() {
|
||||
this->DrawBorder(0, 0, 0, 0);
|
||||
}
|
||||
11
Source/UI/Window/UIShowWarpWnd.h
Normal file
11
Source/UI/Window/UIShowWarpWnd.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef RAGNAROK_SOURCE_UI_WINDOW_UISHOWWARPWND_H
|
||||
#define RAGNAROK_SOURCE_UI_WINDOW_UISHOWWARPWND_H
|
||||
|
||||
#include "UI/Window/UIFrameWnd.h"
|
||||
|
||||
class UIShowWarpWnd : public UIFrameWnd {
|
||||
public:
|
||||
void Paint() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -1,4 +1,69 @@
|
|||
#include "UI/Window/UITransMenuWnd.h"
|
||||
#include "UI/Buttons/UIButton.h"
|
||||
|
||||
// OFFSET: 0x0094ED40
|
||||
// FUNCTION: fn_12916
|
||||
void UITransMenuWnd::Paint() {
|
||||
this->ClearSurface(0xFFFF00FF);
|
||||
if (this->m_items.begin() == this->m_items.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
const int cellHeight = (this->geometry.height - 2 * this->m_margin) / this->m_items.size();
|
||||
for (unsigned i = 0; i < this->m_items.size(); ++i) {
|
||||
std::uint32_t color = this->m_items[i].enabled ? 0xFFFFFF : 0x646464;
|
||||
if (i == this->m_selected) {
|
||||
color = 0x282828;
|
||||
const int half = this->m_margin / 2;
|
||||
this->FillRegion(0, (i - 1) * half + cellHeight * i + this->m_margin, this->geometry.width, cellHeight + half, 0xC8C8C8);
|
||||
}
|
||||
|
||||
auto& controls = *this->m_controls;
|
||||
const int margin = this->m_margin;
|
||||
this->DrawTextAt(controls.fonts, controls.locale, margin, (margin / 2 + cellHeight) * i + margin, this->m_items[i].text, 0, 0, this->m_lineHeight, color, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094EEC0
|
||||
// FUNCTION: fn_12921
|
||||
void UITransMenuWnd::Slot25(int x, int y) {
|
||||
if (this->m_selected == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
const TransMenuItem& item = this->m_items[this->m_selected];
|
||||
if (item.enabled) {
|
||||
this->SendMsg(nullptr, 48, item.command, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F050
|
||||
// FUNCTION: fn_12930
|
||||
void UITransMenuWnd::Slot27(int x, int y) {
|
||||
const int margin = this->m_margin;
|
||||
const int previous = this->m_selected;
|
||||
int selected = -1;
|
||||
if (margin <= y) {
|
||||
const unsigned count = this->m_items.size();
|
||||
if ((this->m_lineHeight + margin / 2) * count + margin >= static_cast<unsigned>(y)) {
|
||||
const int cellHeight = (this->geometry.height - 2 * margin) / count;
|
||||
selected = (y - margin) / cellHeight;
|
||||
}
|
||||
}
|
||||
|
||||
this->m_selected = selected;
|
||||
if (previous != selected && selected != -1) {
|
||||
this->Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: 0x0094F380
|
||||
// FUNCTION: fn_12937
|
||||
void UITransMenuWnd::Resize(int width, int height) {
|
||||
this->UIWindow::Resize(width, height);
|
||||
this->m_width = this->geometry.width;
|
||||
this->m_height = this->geometry.height;
|
||||
}
|
||||
|
||||
// OFFSET: 0x00951440
|
||||
// FUNCTION: fn_12950
|
||||
|
|
|
|||
|
|
@ -3,9 +3,41 @@
|
|||
|
||||
#include "UI/Window/UIFrameWnd.h"
|
||||
|
||||
class UITransMenuWnd : public UIFrameWnd {
|
||||
public:
|
||||
int SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) override;
|
||||
#include <vector>
|
||||
|
||||
struct UIButtonContext;
|
||||
|
||||
struct TransMenuItem {
|
||||
/* 0000 */ char text[24];
|
||||
/* 0018 */ int command;
|
||||
/* 001C */ bool enabled;
|
||||
};
|
||||
|
||||
class UITransMenuWnd : public UIFrameWnd {
|
||||
public:
|
||||
void Resize(int width, int height) override;
|
||||
void Paint() override;
|
||||
void Slot25(int x, int y) override;
|
||||
void Slot27(int x, int y) override;
|
||||
int SendMsg(UIWindow* sender, int message, std::intptr_t a, std::intptr_t b, std::intptr_t c, std::intptr_t d) override;
|
||||
|
||||
protected:
|
||||
/* 00B4 */ std::vector<TransMenuItem> m_items;
|
||||
/* 00C0 */ std::uint32_t unknown_00C0;
|
||||
/* 00C4 */ std::uint32_t unknown_00C4;
|
||||
/* 00C8 */ int m_width;
|
||||
/* 00CC */ int m_height;
|
||||
/* 00D0 */ std::uint32_t unknown_00D0;
|
||||
/* 00D4 */ std::uint32_t unknown_00D4;
|
||||
/* 00D8 */ std::uint32_t unknown_00D8;
|
||||
/* 00DC */ int m_lineHeight;
|
||||
/* 00E0 */ int m_margin;
|
||||
/* 00E4 */ int m_selected;
|
||||
UIButtonContext* m_controls;
|
||||
};
|
||||
|
||||
#if defined(_WIN32) && !defined(_WIN64)
|
||||
static_assert(sizeof(TransMenuItem) == 0x20);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -862,6 +862,7 @@
|
|||
"Source/UI/Text/UIAchWnd.cpp": 2,
|
||||
"Source/UI/Text/UIBalloonText.cpp": 2,
|
||||
"Source/UI/Text/UIStaticText.cpp": 2,
|
||||
"Source/UI/Text/UIStaticText_LF.cpp": 2,
|
||||
"Source/UI/Text/UITagTextViewer.cpp": 2,
|
||||
"Source/UI/Text/UITextViewer.cpp": 2,
|
||||
"Source/UI/Text/UITextViewerLinks.cpp": 2,
|
||||
|
|
@ -910,13 +911,16 @@
|
|||
"Source/UI/Window/UINavigationWnd.cpp": 2,
|
||||
"Source/UI/Window/UINewSelectCharWnd.cpp": 2,
|
||||
"Source/UI/Window/UINormalMB.cpp": 2,
|
||||
"Source/UI/Window/UINoteWnd.cpp": 2,
|
||||
"Source/UI/Window/UIOpenMailBoxWnd.cpp": 2,
|
||||
"Source/UI/Window/UIOpenRoulletteWnd.cpp": 2,
|
||||
"Source/UI/Window/UIRPImageWnd2.cpp": 2,
|
||||
"Source/UI/Window/UIResizer.cpp": 2,
|
||||
"Source/UI/Window/UIRoMapWnd.cpp": 2,
|
||||
"Source/UI/Window/UIRoulletteWnd.cpp": 2,
|
||||
"Source/UI/Window/UISecondCostumeWnd.cpp": 2,
|
||||
"Source/UI/Window/UISeekPartyListWnd.cpp": 2,
|
||||
"Source/UI/Window/UIShowWarpWnd.cpp": 2,
|
||||
"Source/UI/Window/UITab.cpp": 2,
|
||||
"Source/UI/Window/UITransMenuWnd.cpp": 2,
|
||||
"Source/UI/Window/UIWindow.cpp": 2,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue