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
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -21,6 +21,8 @@ public class MainMenuUI : MonoBehaviour
|
|||
{
|
||||
Application.Quit();
|
||||
});
|
||||
|
||||
Time.timeScale = 1f;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Reference in a new issue