Files
Sokoban/Assets/Scripts/GameManager.cs
2023-06-16 09:51:16 +03:00

65 lines
1.2 KiB
C#

using System;
using UnityEngine;
using Level;
public enum GameState
{
Editing,
Gameplay
}
public class GameManager : MonoBehaviour
{
// Static
private static GameManager instance;
// Events
public event GameStateChangedHandler GameStateChanged;
public delegate void GameStateChangedHandler(GameState newState);
// Public
public GameState currentState { get; private set; } = GameState.Editing;
// Private
private LevelData currentLevelData;
// Properties
public static GameManager Instance => instance;
// Methods
private void Awake()
{
if (instance != null && instance != this)
{
Destroy(gameObject);
return;
}
instance = this;
}
// Used by button OnClick
public void SetPlayState()
{
currentLevelData = LevelBuilder.Instance.CreateLevelData();
SetState(GameState.Gameplay);
}
// Use by button OnClick
public void SetEditState()
{
LevelBuilder.Instance.LoadLevelData(currentLevelData);
SetState(GameState.Editing);
}
private void SetState(GameState newState)
{
currentState = newState;
GameStateChanged?.Invoke(currentState);
}
}