using System;
using UnityEngine;

namespace Patterns_And_Principles.Patterns.The_Observer_Pattern.Scripts.WithEvent._01_BasicExample
{
    public class Subject : MonoBehaviour
    {
        // static: Event nesneye değil sınıfa bağlıdır.
        // Bu yüzden tüm Subject objeleri ortak tek bir ThingHappened event'i kullanır.
        public static event Action ThingHappened;

        public void OnThingHappened()
        {
            /*
             * Bu ?. operatörü null-conditional operator
             * Hiç kimse subscribe etmemiş olabilir.
             * Event null olabilir.
             * Null bir delegate’i çağırmaya çalışırsan → NullReferenceException alırsın.
             */
            ThingHappened?.Invoke();
        }
    }
}