Пример #1
0
    public KillObjective(int amount, string name)
    {
        _enemyName    = name;
        _amountToKill = amount;
        _panel        = Object.Instantiate(ObjectivePrefabs.Instance.GenericTextPrefab, MainCanvas.CanvasComp.transform);
        _text         = _panel.GetComponentInChildren <UnityEngine.UI.Text>();


        List <ISubject <DeathEvent> > subjects =
            StatTracker.Instance.DeathSubjects.FindAll(
                (subject)
                =>
        {
            return(((HealthScript)subject).GetCharacterType() == CharacterType.ENEMY_SPIDER);
        });

        StatTracker.Instance.RegisterDeathEventSpawnReceiver(this);

        ObserverSubjectBridge bridge = ObserverSubjectBridge.Instance;

        foreach (ISubject <DeathEvent> subject in subjects)
        {
            bridge.RegisterObserverTo(this, subject);
        }

        UpdateText();
    }
Пример #2
0
    private void OnDestroy()
    {
        ObserverSubjectBridge bridge  = ObserverSubjectBridge.Instance;
        StatTracker           tracker = StatTracker.Instance;

        bridge.RemoveObserverFrom <HealthChangeEvent>(tracker, this);
        bridge.RemoveObserverFrom <DeathEvent>(tracker, this);
    }
Пример #3
0
    public void OnSubjectRemove(ISubject <HealthChangeEvent> subject)
    {
        HealthSubjects.Remove(subject);

        ObserverSubjectBridge bridge = ObserverSubjectBridge.Instance;

        foreach (IObserver <HealthChangeEvent> observer in _secondaryHealthObservers)
        {
            bridge.RemoveObserverFrom(observer, subject);
        }
    }
Пример #4
0
    public void OnSubjectAdd(ISubject <HealthChangeEvent> subject)
    {
        HealthSubjects.Add(subject);

        ObserverSubjectBridge bridge = ObserverSubjectBridge.Instance;

        foreach (IObserver <HealthChangeEvent> observer in _secondaryHealthObservers)
        {
            bridge.RegisterObserverTo(observer, subject);
        }
    }