#ifndef RAGNAROK_SOURCE_UI_RODEX_UIRODEXINBOXWND_H #define RAGNAROK_SOURCE_UI_RODEX_UIRODEXINBOXWND_H #include "Contents/RodexMailStore.h" #include "UI/Item/UIItemWnd.h" #include #include #include #include #include #include #include class UIBasicButton; class UIBitmapButton; class UIBmpRadioBtn; class UICheckBox; class UIEditCtrl; class UIRadioBtn; class UITextButton; using RodexMailEntry = std::pair; // INLINED inline std::map* RodexMailsOfType(int type) { if (type == 0) { return &g_rodexMailStore->m_mails0; } if (type == 1) { return &g_rodexMailStore->m_mails1; } if (type == 2) { return &g_rodexMailStore->m_mails2; } return nullptr; } struct RodexMailEntryLess { bool operator()(const RodexMailEntry& left, const RodexMailEntry& right) const; }; class UIRodexInboxWnd : public UIItemWnd { public: UIRodexInboxWnd(); bool Slot03() override; void Slot15(int width, int height) override; void Paint() override; void Slot25(int x, int y) override; void Slot26(int x, int y) override; void Nullsub257(); void Slot28(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; void DrawMailIcons(int row, unsigned char attachments, unsigned char read, unsigned char returned); void SetButtonsDisabled(unsigned char disabled); void SetMailRow(int row, std::int64_t mailId, std::string name, std::string subject, unsigned char read, unsigned char returned, int noAttachment); void DrawExpireTime(int row, __time32_t sendTime, __time32_t expireTime, unsigned char returned); void ClearChecks(); void RefreshMailLists(); void RemoveInboxMail(int id); void SearchBySender(std::string keyword); void SearchByTitle(std::string keyword); void InitializeMailActions(); void RequestAllMailActions(); /* 0130 */ UIBmpRadioBtn* unknown_0130; /* 0134 */ UIBmpRadioBtn* unknown_0134; /* 0138 */ UIBmpRadioBtn* unknown_0138; /* 013C */ UIBitmapButton* unknown_013C; /* 0140 */ UIBitmapButton* unknown_0140; /* 0144 */ UITextButton* unknown_0144[6]; /* 015C */ UITextButton* unknown_015C[6]; /* 0174 */ UICheckBox* checks[6]; /* 018C */ UIBasicButton* unknown_018C; /* 0190 */ UIBasicButton* unknown_0190; /* 0194 */ UIBitmapButton* unknown_0194; /* 0198 */ UIBitmapButton* unknown_0198; /* 019C */ int unknown_019C; /* 01A0 */ int unknown_01A0; /* 01A4 */ unsigned char expired; /* 01A8 */ UIBitmapButton* unknown_01A8[6]; /* 01C0 */ UIRadioBtn* unknown_01C0[2]; /* 01C8 */ UIEditCtrl* unknown_01C8; /* 01CC */ UIBitmapButton* unknown_01CC; /* 01D0 */ UIBmpRadioBtn* unknown_01D0; /* 01D4 */ unsigned char unknown_01D4; /* 01D8 */ std::vector searchResults; /* 01E4 */ std::vector mails0; /* 01F0 */ std::vector mails1; /* 01FC */ std::vector mails2; }; #if defined(_WIN32) && !defined(_WIN64) static_assert(sizeof(RodexMailEntry) == 0x10); static_assert(offsetof(UIRodexInboxWnd, unknown_012C) == 0x12C); static_assert(offsetof(UIRodexInboxWnd, checks) == 0x174); static_assert(offsetof(UIRodexInboxWnd, expired) == 0x1A4); static_assert(offsetof(UIRodexInboxWnd, searchResults) == 0x1D8); static_assert(offsetof(UIRodexInboxWnd, mails2) == 0x1FC); #endif #endif