diff --git a/Source/UI/Window/UIWindowMgr.h b/Source/UI/Window/UIWindowMgr.h index 4f152924..7e9d9ec3 100644 --- a/Source/UI/Window/UIWindowMgr.h +++ b/Source/UI/Window/UIWindowMgr.h @@ -539,6 +539,7 @@ public: void RefreshWindow01C8Edits(); void SetSurface0478(CBitmapRes* bitmap); void SendFlagEffect(int message); + void RestoreHiddenWindows(); std::vector SaveReplaySettings(); std::vector SaveReplayReserved(); void ApplyReplayOptions(const ReplayOptions& options); diff --git a/Source/UI/Window/WindowMgrState.cpp b/Source/UI/Window/WindowMgrState.cpp index ecc8d25a..04c4f107 100644 --- a/Source/UI/Window/WindowMgrState.cpp +++ b/Source/UI/Window/WindowMgrState.cpp @@ -11,6 +11,9 @@ #include "UI/Window/MiniPartyWndAreaMgr.h" #include "Render/Renderer.h" #include "Client/Mode/ModeMgr.h" +#include "Client/Mode/CGameMode.h" +#include "Contents/World/World.h" +#include "Contents/Actors/Pc.h" #include "Render/DeviceContext/DCSurface.h" #include "Render/Textures/Surface.h" #include "Resource/Bitmap/BitmapResource.h" @@ -19,6 +22,7 @@ #include "Client/ReplayPacketRecorder.h" #include "Client/Mode/ModeDragState.h" #include "Contents/UserData/NormalItemSlots.h" +#include #include #include #include @@ -1100,3 +1104,25 @@ void UIWindowMgr::FocusWindow01C8Edit() { // FUNCTION: fn_17152 void __stdcall Nullsub369(int, int, int, int) { } + +// OFFSET: 0x00A91DB0 +// FUNCTION: fn_17173 +void UIWindowMgr::RestoreHiddenWindows() { + for (UIWindow* window : this->rendered) { + if (std::find(this->hiddenWindows.begin(), this->hiddenWindows.end(), window) != this->hiddenWindows.end()) { + window->Show(1); + } + } + + CGameMode* mode = static_cast(g_modeMgr.GetGameMode()); + if (mode && mode->unknown_0254 == 1) { + this->EnsureWindow(14); + } + + static_cast(g_modeMgr.GetGameMode())->scene->player->RefreshEffect164(); + this->unknown_0508 = 1; + + for (std::map::iterator it = this->overlays.begin(); it != this->overlays.end(); ++it) { + this->CloseWindow(it->first + 216); + } +}