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