Skip to content

Commit 685e47d

Browse files
committed
Preparations for UI restart (Part II)
Thanks @SkyLoaderr First part: d47af9c
1 parent b78e70c commit 685e47d

File tree

7 files changed

+32
-5
lines changed

7 files changed

+32
-5
lines changed

src/xrGame/MainMenu.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,18 @@ CMainMenu::CMainMenu()
145145
}
146146

147147
Device.seqFrame.Add(this, REG_PRIORITY_LOW - 1000);
148+
Device.seqResolutionChanged.Add(this);
148149
}
149150

150151
CMainMenu::~CMainMenu()
151152
{
153+
Device.seqResolutionChanged.Remove(this);
152154
Device.seqFrame.Remove(this);
155+
153156
xr_delete(g_btnHint);
154157
xr_delete(g_statHint);
155158
xr_delete(m_startDialog);
156-
g_pGamePersistent->m_pMainMenu = NULL;
159+
g_pGamePersistent->m_pMainMenu = nullptr;
157160

158161
#ifdef WINDOWS
159162
xr_delete(m_account_mngr);
@@ -758,6 +761,12 @@ void CMainMenu::OnDeviceReset()
758761
SetNeedVidRestart();
759762
}
760763

764+
void CMainMenu::OnScreenResolutionChanged()
765+
{
766+
ReadTextureInfo();
767+
ReloadUI();
768+
}
769+
761770
// -------------------------------------------------------------------------------------------------
762771

763772
LPCSTR AddHyphens(LPCSTR c)

src/xrGame/MainMenu.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ class CMainMenu : public IMainMenu,
4949
public pureRender,
5050
public CDialogHolder,
5151
public CUIWndCallback,
52-
public CDeviceResetNotifier
52+
public CDeviceResetNotifier,
53+
public pureScreenResolutionChanged
5354
{
5455
CUIDialogWnd* m_startDialog;
5556

@@ -188,6 +189,7 @@ class CMainMenu : public IMainMenu,
188189
void Hide_CTMS_Dialog();
189190
void SetNeedVidRestart();
190191
virtual void OnDeviceReset();
192+
void OnScreenResolutionChanged() override;
191193
LPCSTR GetGSVer();
192194

193195
bool IsCDKeyIsValid();

src/xrGame/UIGameCustom.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ class CUIGameCustom : public FactoryObjectBase, public CDialogHolder
114114
void ShowCrosshair(bool show) { psHUD_Flags.set(HUD_CROSSHAIR_RT, show); }
115115
bool CrosshairShown() { return !!psHUD_Flags.test(HUD_CROSSHAIR_RT); }
116116
virtual void HideShownDialogs() {}
117+
virtual void ReinitDialogs() {}
117118
StaticDrawableWrapper* AddCustomStatic(const char* id, bool singleInstance);
118119
StaticDrawableWrapper* GetCustomStatic(const char* id);
119120
void RemoveCustomStatic(const char* id);

src/xrGame/UIGameSP.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ void CUIGameSP::HideShownDialogs()
4545
}
4646
}
4747

48+
void CUIGameSP::ReinitDialogs()
49+
{
50+
delete_data(TalkMenu);
51+
TalkMenu = new CUITalkWnd();
52+
delete_data(UIChangeLevelWnd);
53+
UIChangeLevelWnd = new CChangeLevelWnd();
54+
}
55+
4856
void CUIGameSP::SetClGame(game_cl_GameState* g)
4957
{
5058
inherited::SetClGame(g);

src/xrGame/UIGameSP.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ class CUIGameSP : public CUIGameCustom
3535
void ChangeLevel(GameGraph::_GRAPH_ID game_vert_id, u32 level_vert_id, Fvector pos, Fvector ang, Fvector pos2,
3636
Fvector ang2, bool b, const shared_str& message, bool b_allow_change_level);
3737

38-
virtual void HideShownDialogs();
38+
void HideShownDialogs() override;
39+
void ReinitDialogs() override;
40+
3941
#ifdef DEBUG
4042
virtual void Render();
4143
#endif

src/xrGame/console_commands.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1325,6 +1325,9 @@ class CCC_UIRestart : public IConsole_Command
13251325

13261326
void Execute(pcstr /*args*/) override
13271327
{
1328+
Device.seqResolutionChanged.Process();
1329+
if (g_pGamePersistent && g_pGameLevel && Level().game)
1330+
CurrentGameUI()->ReinitDialogs();
13281331
}
13291332
};
13301333

src/xrUICore/Options/UIOptionsManager.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ class XRUICORE_API CUIOptionsManager
2121
void DoUIRestart();
2222
void DoSystemRestart();
2323

24-
bool NeedSystemRestart() { return 0 != (m_restart_flags & e_system_restart); }
25-
bool NeedVidRestart() { return 0 != (m_restart_flags & e_vid_restart); }
24+
bool NeedSystemRestart() const { return 0 != (m_restart_flags & e_system_restart); }
25+
bool NeedVidRestart() const { return 0 != (m_restart_flags & e_vid_restart); }
26+
bool NeedSndRestart() const { return 0 != (m_restart_flags & e_snd_restart); }
27+
bool NeedUIRestart() const { return 0 != (m_restart_flags & e_ui_restart); }
2628
void SendMessage2Group(const shared_str& group, const char* message);
2729

2830
void RegisterItem(CUIOptionsItem* item, const shared_str& group);

0 commit comments

Comments
 (0)