using System; using UnityEngine; namespace Syntriax.Modules.Factory { public abstract class FactoryBase : MonoBehaviour, IFactory { public bool IsInitialized { get; private set; } = false; public Action OnInitialized { get; set; } = null; public Action OnReset { get; set; } = null; public Action OnStateChanged { get; set; } = null; public void Initialize() { if (IsInitialized) return; OnFactoryInitialize(); IsInitialized = true; OnInitialized?.Invoke(this); OnStateChanged?.Invoke(this); } public void Reset() { if (!IsInitialized) return; OnFactoryReset(); IsInitialized = false; OnReset?.Invoke(this); OnStateChanged?.Invoke(this); } /// protected abstract void OnFactoryInitialize(); /// protected abstract void OnFactoryReset(); } }