diff --git a/Source/UI/UICaptchaPreviewWnd.cpp b/Source/UI/UICaptchaPreviewWnd.cpp index aef1a57f..c3355ebf 100644 --- a/Source/UI/UICaptchaPreviewWnd.cpp +++ b/Source/UI/UICaptchaPreviewWnd.cpp @@ -1,7 +1,49 @@ #include "UI/UICaptchaPreviewWnd.h" +#include "UI/UIMacroDetectorWnd.h" +#include "UI/Window/WindowBorder.h" +#include "Contents/MessageTable.h" +#include "Utility/Text/FormatString.h" + +#include +#include // OFFSET: 0x007ED950 // FUNCTION: fn_09812 void UICaptchaPreviewWnd::Paint() { this->ClearSurface(0xFFFFFFFF); } + +// OFFSET: 0x007ED960 +// FUNCTION: fn_09813 +void UIMacroDetectorWnd::Paint() { + this->sub_8D2CE0(false, "", 0); + this->DrawButtonBar(0, 0, 1); + this->FillRegion(0, 16, this->geometry.width, this->geometry.height - 36, 0xFFFFFFFF); + DrawRectangleBorder(*this, 0, 16, this->geometry.width, this->geometry.height - 36, 0xC6C6C6); + + this->sub_A84360(25, 28, LookupMessage(2883), 0, 0, 12, 0, 1, 0); + this->sub_A84360(25, 45, LookupMessage(2884), 0, 0, 12, 0, 1, 0); + this->sub_A84360(25, 62, LookupMessage(2885), 0, 0, 12, 0, 1, 0); + + this->sub_A84360(25, 82, this->message.c_str(), 0, 0, 12, 0x2323FF, 1, 0); + + this->FillRegion(59, 158, 222, 92, 0xC6C6C6); + this->FillRegion(60, 97, 220, 30, 0xC6C6C6); + + DWORD now = timeGetTime(); + std::uint32_t remaining = (this->messageDuration + this->startTick) - now; + if (remaining != 0) { + float width = (static_cast(remaining) / static_cast(this->totalDuration)) * 220.0f; + this->FillRegion(60, 97, static_cast(width), 30, 0xFF); + + unsigned int seconds = remaining / 1000; + { + std::string str = FormatOwnedString("%2d : %2d", seconds / 60, seconds); + this->sub_A86440(280, 138, str.c_str(), 0, 0, 13, 0xFF2323, 1); + } + { + std::string str = FormatOwnedString(LookupMessage(2886), this->unknown_00D0); + this->sub_A84360(60, 138, str.c_str(), 0, 0, 13, 0x2323FF, 1, 0); + } + } +} diff --git a/Source/UI/UIMacroDetectorWnd.h b/Source/UI/UIMacroDetectorWnd.h index 0e3b8b1e..426ecb4c 100644 --- a/Source/UI/UIMacroDetectorWnd.h +++ b/Source/UI/UIMacroDetectorWnd.h @@ -9,11 +9,20 @@ class UIMacroDetectorWnd : public UIFrameWnd { public: void Slot19() 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; - /* 00B4 */ unsigned char unknown_00B4[0x28]; + void sub_8D2CE0(bool closeButton, const char* title, int width); + void sub_A84360(int x, int y, const char* text, int bytes, int family, int height, std::uint32_t color, unsigned char bold, unsigned char italic); + void sub_A86440(int right, int y, const char* text, int bytes, int family, int height, std::uint32_t color, unsigned char bold); + + /* 00BC */ unsigned char unknown_00BC[0x14]; + /* 00D0 */ unsigned char unknown_00D0; + /* 00D1 */ unsigned char unknown_00D1[3]; + /* 00D4 */ std::uint32_t totalDuration; + /* 00D8 */ std::uint32_t startTick; /* 00DC */ std::uint32_t messageDuration; /* 00E0 */ unsigned char unknown_00E0[0x18]; /* 00F8 */ std::string message;