From a17c307648da2b7e69b90a417296eb5544317be2 Mon Sep 17 00:00:00 2001
From: D-AIRY <admin@ds-servers.com>
Date: Tue, 30 Jun 2020 18:54:57 +0300
Subject: [PATCH] Fixed menu sound

---
 source/game/GameStates.cpp | 67 ++++++++++++++++++++++++++------------
 source/game/GameStates.h   | 14 ++++----
 2 files changed, 54 insertions(+), 27 deletions(-)

diff --git a/source/game/GameStates.cpp b/source/game/GameStates.cpp
index 441310903..4241ef43b 100644
--- a/source/game/GameStates.cpp
+++ b/source/game/GameStates.cpp
@@ -27,15 +27,27 @@ void CMainMenuGameState::activate()
 {
 	GameData::m_pGUIStack->setActiveDesktop(m_pDesktop);
 
-	if (GameData::m_pGameLayer)
-		GameData::m_pGameLayer->play(false);
-
-	if (GameData::m_pGuiLayer)
+	if(GameData::m_pGuiLayer)
 	{
 		GameData::m_pGuiLayer->play(true);
 
-		if (GameData::m_pSoundPlayer)
+		if(GameData::m_pSoundPlayer)
+		{
 			GameData::m_pSoundPlayer->play();
+		}
+	}
+}
+
+void CMainMenuGameState::deactivate()
+{
+	if(GameData::m_pGuiLayer)
+	{
+		GameData::m_pGuiLayer->play(false);
+
+		if(GameData::m_pSoundPlayer)
+		{
+			GameData::m_pSoundPlayer->stop();
+		}
 	}
 }
 
@@ -61,6 +73,31 @@ CIngameMenuGameState::~CIngameMenuGameState()
 void CIngameMenuGameState::activate()
 {
 	GameData::m_pGUIStack->setActiveDesktop(m_pDesktop);
+
+	if(GameData::m_pGuiLayer)
+	{
+		GameData::m_pGuiLayer->play(true);
+
+		if(GameData::m_pSoundPlayer)
+		{
+			GameData::m_pSoundPlayer->play();
+		}
+	}
+}
+
+void CIngameMenuGameState::deactivate()
+{
+	GameData::m_pGUIStack->setActiveDesktop(m_pDesktop);
+
+	if(GameData::m_pGuiLayer)
+	{
+		GameData::m_pGuiLayer->play(false);
+
+		if(GameData::m_pSoundPlayer)
+		{
+			GameData::m_pSoundPlayer->stop();
+		}
+	}
 }
 
 //##########################################################################
@@ -76,15 +113,9 @@ void CIngameGameState::activate()
 	SSInput_SetEnable(true);
 	SPhysics_EnableSimulation();
 
-	if (GameData::m_pGameLayer)
-		GameData::m_pGameLayer->play(true);
-
-	if (GameData::m_pGuiLayer)
+	if(GameData::m_pGameLayer)
 	{
-		GameData::m_pGuiLayer->play(false);
-
-		if (GameData::m_pSoundPlayer)
-			GameData::m_pSoundPlayer->stop();
+		GameData::m_pGameLayer->play(true);
 	}
 }
 
@@ -96,15 +127,9 @@ void CIngameGameState::deactivate()
 	SSInput_SetEnable(false);
 	SPhysics_DisableSimulation();
 
-	if (GameData::m_pGameLayer)
-		GameData::m_pGameLayer->play(false);
-
-	if (GameData::m_pGuiLayer)
+	if(GameData::m_pGameLayer)
 	{
-		GameData::m_pGuiLayer->play(true);
-
-		if (GameData::m_pSoundPlayer)
-			GameData::m_pSoundPlayer->play();
+		GameData::m_pGameLayer->play(false);
 	}
 }
 
diff --git a/source/game/GameStates.h b/source/game/GameStates.h
index da4364658..4e2329902 100644
--- a/source/game/GameStates.h
+++ b/source/game/GameStates.h
@@ -4,26 +4,28 @@
 #include "IGameState.h"
 #include <gui/guimain.h>
 
-class CMainMenuGameState: public IGameState
+class CMainMenuGameState final: public IGameState
 {
 public:
 	CMainMenuGameState();
 	~CMainMenuGameState();
-	void activate();
+	void activate() override;
+	void deactivate() override;
 
 protected:
-	gui::IDesktop * m_pDesktop;
+	gui::IDesktop *m_pDesktop;
 };
 
-class CIngameMenuGameState: public IGameState
+class CIngameMenuGameState final: public IGameState
 {
 public:
 	CIngameMenuGameState();
 	~CIngameMenuGameState();
-	void activate();
+	void activate() override;
+	void deactivate() override;
 
 protected:
-	gui::IDesktop * m_pDesktop;
+	gui::IDesktop *m_pDesktop;
 };
 
 class CIngameGameState: public IGameState
-- 
GitLab