diff --git a/Source/UI/ProbabilityTable/UIProbabilityTable.cpp b/Source/UI/ProbabilityTable/UIProbabilityTable.cpp new file mode 100644 index 00000000..d44659e2 --- /dev/null +++ b/Source/UI/ProbabilityTable/UIProbabilityTable.cpp @@ -0,0 +1,66 @@ +#include "UI/ProbabilityTable/UIProbabilityTable.h" + +#include "UI/Window/WindowBorder.h" + +// OFFSET: 0x00A4BFF0 +// FUNCTION: fn_16120 +template <> +void CUIListBoxEx::Paint() { + this->ClearSurface(0xFFFF00FF); +} + +// OFFSET: 0x00A4C000 + +// OFFSET: 0x00A4C580 + +// OFFSET: 0x00A4DC90 +// FUNCTION: fn_16195 +void CUIProbabilityTable::OnButtonClick() { +} + +// OFFSET: 0x00A4E030 +// FUNCTION: fn_16198 +void CUIProbabilityTable::OnPrepareItem(ProbabilityTable::CUIItem*, const ProbabilityTable::CItemData&) { +} + +namespace ProbabilityTable { + +// OFFSET: 0x00A4E110 +// FUNCTION: fn_16200 +void CUIItem::Paint() { + this->ClearSurface(this->backgroundColor); + this->FillRegion(0, this->geometry.height - 1, this->geometry.width, 1, 0xFFCEADA5); + this->FillRegion(0, 0, 1, this->geometry.height, 0xFFCEADA5); + this->FillRegion(232, 0, 1, this->geometry.height, 0xFFCEADA5); + this->FillRegion(this->geometry.width - 1, 0, 1, this->geometry.height, 0xFFCEADA5); +} + +} + +// OFFSET: 0x00A4E180 + +namespace ProbabilityTable { + +// OFFSET: 0x00A4E250 +// FUNCTION: fn_16202 +void CUIItem::Slot16() { + this->nameText->scrollBar->SetHidden(1); + this->probabilityText->scrollBar->SetHidden(1); +} + +// OFFSET: 0x00A4E350 +// FUNCTION: fn_16204 +void CUIItem::Slot25(int, int) { +} + +} + +// OFFSET: 0x00A4E360 +// FUNCTION: fn_16205 +template <> +void CUIListBoxEx::UpdateScrollBar() { + this->scrollBar->SetTotal(this->data.size() * this->rowHeight + this->itemY); + this->scrollBar->SetVisible(this->geometry.height); + this->scrollBar->SetPosition(this->scrollBar->position); + this->rebind = 1; +} diff --git a/Source/UI/ProbabilityTable/UIProbabilityTable.h b/Source/UI/ProbabilityTable/UIProbabilityTable.h new file mode 100644 index 00000000..03de1598 --- /dev/null +++ b/Source/UI/ProbabilityTable/UIProbabilityTable.h @@ -0,0 +1,48 @@ +#ifndef RAGNAROK_SOURCE_UI_PROBABILITYTABLE_UIPROBABILITYTABLE_H +#define RAGNAROK_SOURCE_UI_PROBABILITYTABLE_UIPROBABILITYTABLE_H + +#include "UI/FrameSkin.h" +#include "UI/Lists/UIListBoxTemplate.h" +#include "UI/Text/UITextViewerControl.h" + +#include +#include + +namespace ProbabilityTable { + +class CItemData { +public: + /* 0000 */ std::uint32_t color; + /* 0004 */ std::string name; + /* 001C */ int unknown_001C; + /* 0020 */ double probability; +}; + +class CUIItem : public CUIListItem { +public: + void Slot16() override; + void Paint() override; + void Slot25(int x, int y) override; + + /* 00E8 */ CUITextViewer* nameText; + /* 00EC */ CUITextViewer* probabilityText; + /* 00F0 */ std::uint32_t backgroundColor; + /* 00F4 */ unsigned char unknown_00F4[0x04]; +}; + +} + +class CUIProbabilityTable : public CUIFrameWnd { +public: + void Paint() override; + + void OnButtonClick(); + void OnPrepareItem(ProbabilityTable::CUIItem* item, const ProbabilityTable::CItemData& data); +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(ProbabilityTable::CItemData) == 0x28); +static_assert(sizeof(ProbabilityTable::CUIItem) == 0xF8); +#endif + +#endif diff --git a/Source/UI/Quest/UIOngoingQuestInfo.cpp b/Source/UI/Quest/UIOngoingQuestInfo.cpp index 7ef123da..6c975a9a 100644 --- a/Source/UI/Quest/UIOngoingQuestInfo.cpp +++ b/Source/UI/Quest/UIOngoingQuestInfo.cpp @@ -1,5 +1,19 @@ #include "UI/Quest/UIOngoingQuestInfo.h" +// OFFSET: 0x00A4FDE0 +// FUNCTION: fn_16223 +template <> +void CUIListBoxEx::ClearItems() { + for (OngoingQuestInfo::CUIRewardItem* item : this->items) { + this->RemoveChild(item, 1); + } + + this->items.clear(); + this->selected = static_cast(-1); +} + +// OFFSET: 0x00A4FE70 + // OFFSET: 0x00A55650 // FUNCTION: fn_16300 void CUIOngoingQuestInfo::OnFirstAction() { diff --git a/Source/UI/Quest/UIOngoingQuestInfo.h b/Source/UI/Quest/UIOngoingQuestInfo.h index 9ff1b7fa..972b659c 100644 --- a/Source/UI/Quest/UIOngoingQuestInfo.h +++ b/Source/UI/Quest/UIOngoingQuestInfo.h @@ -8,6 +8,7 @@ class CUIOngoingQuestInfo : public CUIFrameWnd { public: void OnFirstAction(); + virtual void Slot53(); }; namespace OngoingQuestInfo { diff --git a/data/compile.json b/data/compile.json index e984803c..2049d914 100644 --- a/data/compile.json +++ b/data/compile.json @@ -764,6 +764,7 @@ "Source/UI/Party/UIRequestJoinPartyMgr.cpp": 2, "Source/UI/Party/UIRequestJoinPartyWnd.cpp": 2, "Source/UI/PriceCommission.cpp": 2, + "Source/UI/ProbabilityTable/UIProbabilityTable.cpp": 2, "Source/UI/Quest/UIOngoingQuestInfo.cpp": 2, "Source/UI/Quest/UIQuestDisplay.cpp": 2, "Source/UI/Quest/UIRecommendedQuestInfo.cpp": 2,