示例#1
0
    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);
 }
示例#4
0
    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);
    }
示例#5
0
    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.");
        }
    }
示例#6
0
 public void UnSubscribe(IDragonBehaviour obj, GameState gameState)
 {
     GameStateSubscribers[gameState].Remove(obj);
 }