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(); }
private void OnDestroy() { ObserverSubjectBridge bridge = ObserverSubjectBridge.Instance; StatTracker tracker = StatTracker.Instance; bridge.RemoveObserverFrom <HealthChangeEvent>(tracker, this); bridge.RemoveObserverFrom <DeathEvent>(tracker, this); }
public void OnSubjectRemove(ISubject <HealthChangeEvent> subject) { HealthSubjects.Remove(subject); ObserverSubjectBridge bridge = ObserverSubjectBridge.Instance; foreach (IObserver <HealthChangeEvent> observer in _secondaryHealthObservers) { bridge.RemoveObserverFrom(observer, subject); } }
public void OnSubjectAdd(ISubject <HealthChangeEvent> subject) { HealthSubjects.Add(subject); ObserverSubjectBridge bridge = ObserverSubjectBridge.Instance; foreach (IObserver <HealthChangeEvent> observer in _secondaryHealthObservers) { bridge.RegisterObserverTo(observer, subject); } }