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

@ -8,6 +8,11 @@ public class BaseCounter : MonoBehaviour, IKitchenObjectParent
public static event EventHandler OnAnyObjectPlaced;
public static void ResetStaticData()
{
OnAnyObjectPlaced = null;
}
[SerializeField] private Transform counterTopPoint;
private KitchenObject kitchenObject;

View file

@ -8,6 +8,11 @@ public class CuttingCounter : BaseCounter, IHasProgress
public static event EventHandler OnAnyCut;
new public static void ResetStaticData()
{
OnAnyCut = null;
}
public event EventHandler<IHasProgress.OnProgressChangeEventsArgs> OnProgressChange;
public event EventHandler OnCut;

View file

@ -8,6 +8,11 @@ public class TrashCounter : BaseCounter
public static event EventHandler OnAnyObjectTrashed;
new public static void ResetStaticData()
{
OnAnyObjectTrashed = null;
}
public override void Interact(Player player)
{
if (player.HasKitchenObject())

View file

@ -6,8 +6,11 @@ using UnityEngine;
public class GameInput : MonoBehaviour
{
public static GameInput Instance { get; private set; }
public event EventHandler OnInteractAction;
public event EventHandler OnInteractAlteranteAction;
public event EventHandler OnPauseAction;
private PlayerInputActions playerInputActions;
@ -15,11 +18,28 @@ public class GameInput : MonoBehaviour
private void Awake()
{
Instance = this;
playerInputActions = new PlayerInputActions();
playerInputActions.Player.Enable();
playerInputActions.Player.Interact.performed += Interact_performed;
playerInputActions.Player.InteractAlternate.performed += InteractAlternate_performed;
playerInputActions.Player.Pause.performed += Pause_performed;
}
private void OnDestroy()
{
playerInputActions.Player.Interact.performed -= Interact_performed;
playerInputActions.Player.InteractAlternate.performed -= InteractAlternate_performed;
playerInputActions.Player.Pause.performed -= Pause_performed;
playerInputActions.Dispose();
}
private void Pause_performed(UnityEngine.InputSystem.InputAction.CallbackContext obj)
{
OnPauseAction?.Invoke(this, EventArgs.Empty);
}
private void InteractAlternate_performed(UnityEngine.InputSystem.InputAction.CallbackContext obj)

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

View file

@ -21,6 +21,8 @@ public class MainMenuUI : MonoBehaviour
{
Application.Quit();
});
Time.timeScale = 1f;
}
}