From 00e0d082f0e3f54e2a0125039dcaeec4cc7691c0 Mon Sep 17 00:00:00 2001 From: Xottab-DUTY Date: Sat, 27 Apr 2019 18:51:24 +0500 Subject: [PATCH] CChangeLevelWnd: repaired level changer window Both for CoP and CS --- src/xrGame/UIGameSP.cpp | 26 +++++++++++++++++++++----- src/xrGame/UIGameSP.h | 5 +++-- src/xrGame/ui/UIDialogWnd.h | 4 ++-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/xrGame/UIGameSP.cpp b/src/xrGame/UIGameSP.cpp index c007635787b..a94bb6fe819 100644 --- a/src/xrGame/UIGameSP.cpp +++ b/src/xrGame/UIGameSP.cpp @@ -299,10 +299,9 @@ bool CChangeLevelWnd::OnKeyboardAction(int dik, EUIMessages keyboard_action) return inherited::OnKeyboardAction(dik, keyboard_action); } -// Не инициализировалась форма, поскольку виртуальная функция отличалась набором аргуметов -//morrey bool g_block_pause = false; +// Morrey: Не инициализировалась форма, поскольку виртуальная функция отличалась набором аргуметов void CChangeLevelWnd::Show(bool status) { inherited::Show(status); @@ -327,10 +326,27 @@ void CChangeLevelWnd::Show(bool status) } } -//old -void CChangeLevelWnd::Hide() +void CChangeLevelWnd::ShowDialog(bool bDoHideIndicators) +{ + m_messageBox->InitMessageBox(m_b_allow_change_level + ? "message_box_change_level" + : "message_box_change_level_disabled"); + + SetWndPos(m_messageBox->GetWndPos()); + m_messageBox->SetWndPos(Fvector2().set(0.0f, 0.0f)); + SetWndSize(m_messageBox->GetWndSize()); + + m_messageBox->SetText(m_message_str.c_str()); + + g_block_pause = true; + Device.Pause(TRUE, TRUE, TRUE, "CChangeLevelWnd_show"); + bShowPauseString = FALSE; + inherited::ShowDialog(bDoHideIndicators); +} + +void CChangeLevelWnd::HideDialog() { g_block_pause = false; Device.Pause(FALSE, TRUE, TRUE, "CChangeLevelWnd_hide"); + inherited::HideDialog(); } -//morrey diff --git a/src/xrGame/UIGameSP.h b/src/xrGame/UIGameSP.h index 6bf408f27d1..358b5ae5f76 100644 --- a/src/xrGame/UIGameSP.h +++ b/src/xrGame/UIGameSP.h @@ -70,7 +70,8 @@ class CChangeLevelWnd : public CUIDialogWnd virtual ~CChangeLevelWnd(){}; virtual void SendMessage(CUIWindow* pWnd, s16 msg, void* pData); virtual bool WorkInPause() const { return true; } - virtual void Show(bool status); - virtual void Hide(); + void Show(bool status) override; + void ShowDialog(bool bDoHideIndicators) override; + void HideDialog() override; virtual bool OnKeyboardAction(int dik, EUIMessages keyboard_action); }; diff --git a/src/xrGame/ui/UIDialogWnd.h b/src/xrGame/ui/UIDialogWnd.h index 1a0ae68be11..20c152b5d7d 100644 --- a/src/xrGame/ui/UIDialogWnd.h +++ b/src/xrGame/ui/UIDialogWnd.h @@ -28,8 +28,8 @@ class CUIDialogWnd : public CUIWindow virtual bool NeedCenterCursor() const { return true; } virtual bool WorkInPause() const { return m_bWorkInPause; } virtual bool Dispatch(int cmd, int param) { return true; } - void ShowDialog(bool bDoHideIndicators); - void HideDialog(); + virtual void ShowDialog(bool bDoHideIndicators); + virtual void HideDialog(); virtual bool IR_process(); };