Add pause menu and fix static data dulpication when loading scenes
This commit is contained in:
parent
0849fcfde7
commit
e4706c7a42
11 changed files with 992 additions and 2 deletions
|
@ -9,6 +9,8 @@ public class GameStateManager : MonoBehaviour
|
|||
public static GameStateManager Instace{ get; private set; }
|
||||
|
||||
public event EventHandler OnStateChanged;
|
||||
public event EventHandler OnGamePaused;
|
||||
public event EventHandler OnGameUnpaused;
|
||||
|
||||
private enum State
|
||||
{
|
||||
|
@ -19,6 +21,7 @@ public class GameStateManager : MonoBehaviour
|
|||
}
|
||||
|
||||
private State state;
|
||||
private bool isGamePaused = false;
|
||||
|
||||
// --- Timers ---
|
||||
private float waitingToStartTimer = 1f;
|
||||
|
@ -32,6 +35,18 @@ public class GameStateManager : MonoBehaviour
|
|||
Instace = this;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
GameInput.Instance.OnPauseAction += GameInput_OnPauseAction;
|
||||
}
|
||||
|
||||
private void GameInput_OnPauseAction(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
TogglePauseGame();
|
||||
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
switch (state)
|
||||
|
@ -95,4 +110,24 @@ public class GameStateManager : MonoBehaviour
|
|||
return gamePlayTimer / gamePlayTimerMax;
|
||||
}
|
||||
|
||||
public void TogglePauseGame()
|
||||
{
|
||||
|
||||
isGamePaused = !isGamePaused;
|
||||
|
||||
if (isGamePaused)
|
||||
{
|
||||
Time.timeScale = 0f;
|
||||
|
||||
OnGamePaused?.Invoke(this, EventArgs.Empty);
|
||||
} else
|
||||
{
|
||||
Time.timeScale = 1f;
|
||||
|
||||
OnGameUnpaused?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Reference in a new issue