Add pause menu and fix static data dulpication when loading scenes

This commit is contained in:
BuyMyMojo 2023-03-04 03:57:30 +11:00
parent 0849fcfde7
commit e4706c7a42
11 changed files with 992 additions and 2 deletions

View file

@ -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);
}
}
}