Пример #1
0
        /// <summary>
        /// Do処理 コマンドの実行
        /// </summary>
        /// <param name="command">実行するコマンド</param>
        /// <returns>
        /// コマンドを実行したか
        /// false   : アンドゥ用スタックがいっぱい
        /// </returns>
        public bool Invoke(IUndoRedoCommand command)
        {
            bool ret = true;
            // アンドゥスタックのサイズチェック
            if(m_undoStack.Count >= m_maxSize)
            {
                // 最初の要素を削除して追加
                _PushAndPopFront(m_undoStack, command);
                ret = false;
            }
            else
            {
                // アンドゥ用スタックに実行したコマンドを積んでおく
                _Push(m_undoStack, command);
            }
            // コマンドの実行
            command.Invoke();

            // リドゥ用スタックのクリア
            m_redoStack.Clear();

            return ret;
        }