Files
2026-02-09 23:53:14 +01:00

94 lines
2.6 KiB
C#

using UnityEngine;
using UnityEngine.Events;
namespace OctoCore
{
[DefaultExecutionOrder(-101)]
public class OctoEvents : MonoBehaviour
{
public static OctoEvents Instance { get; private set; }
[SerializeField] private UnityEvent _onPlatformInitialized;
[SerializeField] private UnityEvent _onSaveInitialized;
[SerializeField] private UnityEvent _onInputsInitialized;
[SerializeField] private UnityEvent _onLocalizationInitialized;
[SerializeField] private UnityEvent _onScenesInitialized;
[SerializeField] private UnityEvent _onUiInitialized;
[SerializeField] private UnityEvent _onOctoCoreInitialized;
bool _platformInitialized;
bool _saveInitialized;
bool _inputsInitialized;
bool _localizationInitialized;
bool _scenesInitialized;
bool _uiInitialized;
void Awake()
{
Instance = this;
}
void OnDestroy()
{
if (Instance == this)
Instance = null;
}
private void SetOctoCoreInitialized()
{
if (_platformInitialized &&
_saveInitialized &&
_inputsInitialized &&
_localizationInitialized &&
_scenesInitialized &&
_uiInitialized)
{
Debug.Log($"[OctoCore] OctoCore Initialized");
_onOctoCoreInitialized?.Invoke();
}
}
public void SetPlatformInitialized()
{
_onPlatformInitialized?.Invoke();
_platformInitialized = true;
SetOctoCoreInitialized();
}
public void SetSaveInitialized()
{
_onSaveInitialized?.Invoke();
_saveInitialized = true;
SetOctoCoreInitialized();
}
public void SetInputsInitialized()
{
_onInputsInitialized?.Invoke();
_inputsInitialized = true;
SetOctoCoreInitialized();
}
public void SetLocalizationInitialized()
{
_onLocalizationInitialized?.Invoke();
_localizationInitialized = true;
SetOctoCoreInitialized();
}
public void SetScenesInitialized()
{
_onScenesInitialized?.Invoke();
_scenesInitialized = true;
SetOctoCoreInitialized();
}
public void SetUiInitialized()
{
_onUiInitialized?.Invoke();
_uiInitialized = true;
SetOctoCoreInitialized();
}
}
}