public void OnAddItem(IDragonBehaviour behaviour, Action <T> action) { if (behaviour != null) { if (behaviour.IsActive) { NotifyExisting(action); _onAddSubscribers.Add(action); } behaviour.OnEnabled += () => { NotifyExisting(action); _onAddSubscribers.Add(action); }; behaviour.OnDisabled += () => { _onAddSubscribers.Remove(action); }; } else { throw new NullReferenceException("dragonObject can't be null."); } }
public void UnbindWith(IDragonBehaviour behaviour) { if (Bindings != null && Bindings.Contains(behaviour)) { Bindings.Remove(behaviour); } }
public void BindWith(IDragonBehaviour behaviour) { if (Bindings == null) { Bindings = new List <IDragonBehaviour>(); } Bindings.Add(behaviour); }
public void Subscribe(IDragonBehaviour obj, GameState gameState, bool skipAnimation = false) { if (!GameStateSubscribers.ContainsKey(gameState)) { GameStateSubscribers[gameState] = new List <IDragonBehaviour>(); } obj.OnDestroyed += () => GameStateSubscribers[gameState].Remove(obj); GameStateSubscribers[gameState].Add(obj); if (!GameStates.ContainsKey(gameState)) { GameStates[gameState] = State.Disabled; } obj.OnGameStateChanged(gameState, GameStates[gameState], skipAnimation); }
public void OnRemoveItem(IDragonBehaviour dragonBehaviourObject, Action <T> action) { if (dragonBehaviourObject != null) { _onRemoveSubscribers.Add(action); dragonBehaviourObject.OnEnabled += () => { _onRemoveSubscribers.Add(action); }; dragonBehaviourObject.OnDisabled += () => { _onRemoveSubscribers.Remove(action); }; } else { throw new NullReferenceException("dragonObject can't be null."); } }
public void UnSubscribe(IDragonBehaviour obj, GameState gameState) { GameStateSubscribers[gameState].Remove(obj); }