public void SelectResult(Solver.Result result) { var o = m_FileView.SelectResult(result); o.Do(); m_UndoStack.Add(o); }
private void SetResult(Solver.Result result) { m_Result = result; if (result == null) { m_BoardRenderer.Reset(); m_Time.Text = string.Empty; m_Level.Text = string.Empty; m_BMT.Text = string.Empty; } else { m_BoardRenderer.SetBoardAndTetromino(result.PrevState.Board, result.Step.Tetromino); m_Time.Text = result.NextState.TimeString; m_Level.Text = string.Format("Level: {0}", result.NextState.Level.ToString()); m_BMT.Text = string.Format("BMT: {0}", result.Step.Inputs.Count - 2); } }
public IUndoable SelectResult(Solver.Result result) { var index = m_Index; var fileAction = m_File.CreateSelectResult(index, result); var r = new GenericUndoable(() => { SuspendUpdates(); fileAction.Do(); Index = index + 1; ResumeUpdates(); }, () => { SuspendUpdates(); fileAction.Undo(); Index = index; ResumeUpdates(); }); return(r); }
public IUndoable CreateSelectResult(int index, Solver.Result result) { EnsureInvariant(); Ensure(index < m_States.Count); Ensure(index <= m_Steps.Count); var removedStates = m_States.Skip(index + 1).ToList(); var removedSteps = m_Steps.Skip(index).ToList(); Ensure(removedStates.Count == removedSteps.Count); return(new GenericUndoable(() => { EnsureInvariant(); Ensure(index < m_States.Count); Ensure(index <= m_Steps.Count); m_States.RemoveRange(index + 1, m_States.Count - index - 1); m_Steps.RemoveRange(index, m_Steps.Count - index); m_States.Add(result.NextState); m_Steps.Add(result.Step); EnsureInvariant(); NotifyChanged(); }, () => { EnsureInvariant(); Ensure(m_States.Count == index + 2); Ensure(m_Steps.Count == index + 1); Ensure(removedStates.Count == removedSteps.Count); m_States.RemoveLast(); m_Steps.RemoveLast(); m_States.AddRange(removedStates); m_Steps.AddRange(removedSteps); EnsureInvariant(); NotifyChanged(); })); }
public DummySolver(Solver.Result resultIsAlways = Result.SAT) { this.ResultIsAlways = resultIsAlways; }