public void OnClickDoAction(GameObject obj) { Debug.Log(string.Format("OnClick DoAction : {0}", obj.name)); if (obj.name == "Undo") { if (_doCtrl.GetUndoStackCount() <= 0) { return; } model.DoAction peek = _doCtrl.UndoPop(); OnClickCell(peek.boardCoordinate.column, peek.boardCoordinate.row); model.DoAction redo = peek.SwapDoAction(); _doCtrl.RedoPush(redo); _modelBoard.InputNumber(redo.current.isMemoMode, redo.current.number, redo.current.memoArray, null); } else if (obj.name == "Redo") { if (_doCtrl.GetRedoStackCount() <= 0) { return; } model.DoAction peek = _doCtrl.RedoPop(); OnClickCell(peek.boardCoordinate.column, peek.boardCoordinate.row); model.DoAction undo = peek.SwapDoAction(); _doCtrl.UndoPush(undo); _modelBoard.InputNumber(undo.current.isMemoMode, undo.current.number, undo.current.memoArray, null); } UpdateView(); }
public void UndoStackPush(model.BoardCoordinate boardCoordinate, int previusNumber, int currentNumber, bool isPreviusMemo, bool isCurrentMemo, int[] previusMemo, int[] currentMemo) { model.Do previus = new model.Do(previusNumber, isPreviusMemo, previusMemo); model.Do current = new model.Do(currentNumber, isCurrentMemo, currentMemo); model.DoAction undo = new model.DoAction(boardCoordinate, previus, current); _doCtrl.UndoPush(undo); }
public DoAction SwapDoAction() { int[] previusMemoArr = new int[this.previus.memoArray.Length]; int[] currentMemoArr = new int[this.current.memoArray.Length]; System.Array.Copy(this.previus.memoArray, previusMemoArr, this.previus.memoArray.Length); System.Array.Copy(this.current.memoArray, currentMemoArr, this.current.memoArray.Length); model.Do previus = new model.Do(this.previus.number, this.previus.isMemoMode, previusMemoArr); model.Do current = new model.Do(this.current.number, this.current.isMemoMode, currentMemoArr); model.DoAction doAction = new model.DoAction(this.boardCoordinate, current, previus); return(doAction); }
public void RedoPush(model.DoAction redo) { Debug.Log(string.Format("RedoStackCount : {0}", _redoStack.Count)); _redoStack.Push(redo); }
public void UndoPush(model.DoAction undo) { _undoStack.Push(undo); Debug.Log(string.Format("UndoStackCount : {0}", _undoStack.Count)); }