private void EmptyStopHandler(StopEventArgs e) { }
/// <summary> /// Event handler for Number Stop events. /// Checks if a zero sum has been made. If one has the a ZeroSum event is raised. /// </summary> /// <param name="e">Contains the index of the number that has stopped</param> public void Stop(StopEventArgs e) { int index = e.index; int nextIndex = index + 1; Number Start = numbers[e.index]; int sum = 0; if (Start != null) { sum = Start.Value; } List<Number> gonners = new List<Number>(); while ((Start != null) && (Start.Value != 0) && (sum != 0) && (index > -1)) { sum = Start.Value; while ((nextIndex < numbers.Length) && (sum != 0) && (numbers[nextIndex] != null) && (numbers[nextIndex].Value != 0)) { sum += numbers[nextIndex].Value; if (sum == 0) { for (int i = index; i <= nextIndex; ++i) { gonners.Add(numbers[i]); } } ++nextIndex; } --index; nextIndex = index + 1; if (index > -1) { Start = numbers[index]; } } if (gonners.Count > 0) { ZeroSum(new ZeroSumEventArgs(gonners)); } }