#nullable enable using Nox.Core; using Nox.Platform; using Nox.Game.UI; using UnityEngine; namespace Nox.Game { public class PauseMenuPlayMode : IPlayMode { private readonly PlatformSettings platformSettings; private readonly GameDataState gameDataState; private PauseMenuReferences? pauseMenuReference; private readonly IMenuView? pauseMenuView; private readonly InputSystem_Actions inputActions; public PauseMenuPlayMode(PlatformSettings platformSettings, GameDataState gameDataState, IMenuView pauseMenuView) { this.platformSettings = platformSettings; this.gameDataState = gameDataState; this.pauseMenuView = pauseMenuView; inputActions = platformSettings.inputSettings.inputActions; inputActions.UI.Enable(); } public bool IsGameModeInitialized { get; private set; } public void EnterPlayMode() { Debug.Log("Entering PauseMenu Play Mode"); pauseMenuView?.Initialize(); IsGameModeInitialized = true; } public void Tick() { if(inputActions.UI.PauseMenu.WasPerformedThisFrame()) { pauseMenuView?.Hide(); gameDataState.ChangePlayMode(gameDataState.PreviousPlayMode); } pauseMenuView?.Tick(); } public void LateTick() { } public void ExitGameMode() { pauseMenuView?.Hide(); } public void Dispose() { inputActions.UI.Disable(); } } }