Esempio n. 1
0
    public void EndChain()
    {
        if (chainStack_.Count == 0)
        {
            UnityEngine.Debug.LogError("チェインが開始していません");
            return;
        }

        ChainAction lastChainAction = chainStack_.Pop();

        if (lastChainAction.HasAction())
        {
            if (chainStack_.Count > 0)
            {
                chainStack_.Peek().AddChain(lastChainAction);
            }
            else
            {
                if (currentIndex_ + 1 < actions_.Count)
                {
                    actions_.RemoveRange(currentIndex_ + 1, actions_.Count - (currentIndex_ + 1));
                }
                ++currentIndex_;
                actions_.Add(lastChainAction);
                OnChainEnded();
            }
        }
        else
        {
            if (chainStack_.Count == 0)
            {
                OnChainEnded();
            }
        }
    }
Esempio n. 2
0
    public void StartChain(ActionManagerProxy proxy = null)
    {
        if (chainStack_.Count == 0)
        {
            OnChainStarted();
        }
        ChainAction chainAction = new ChainAction();

        chainAction.Proxy = proxy;
        chainStack_.Push(chainAction);
    }