public void SplitAt(Time time)
        {
            if (CurrentState.CurrentPhase != TimerPhase.Running)
            {
                return;
            }
            if (CurrentState.CurrentTime.RealTime <= TimeSpan.Zero)
            {
                return;
            }

            CurrentState.CurrentSplit.SplitTime = time;
            CurrentState.CurrentSplitIndex++;
            if (CurrentState.Run.Count == CurrentState.CurrentSplitIndex)
            {
                CurrentState.CurrentPhase = TimerPhase.Ended;

                //TODO? (See LiveSplitState.CurrentTime.get
                CurrentState.AttemptEnded = TimeStamp.CurrentDateTime;
            }

            CurrentState.Run.HasChanged = true;

            OnSplit?.Invoke(this, null);
        }
Example #2
0
        public void Split()
        {
            if (CurrentState.CurrentPhase == TimerPhase.Running && CurrentState.CurrentTime.RealTime > TimeSpan.Zero)
            {
                var prevSplit = CurrentState.CurrentSplit;
                if (DoAdvanceSplit())
                {
                    if (IsParentOf(CurrentState.CurrentSplit, prevSplit))
                    {
                        // Skip the parent split.
                        DoAdvanceSplit();
                    }
                    if (CurrentState.Run.Count != CurrentState.CurrentSplitIndex)
                    {
                        CurrentState.CurrentSplit.DeathCount = 0;
                        if (CurrentState.CurrentSplit.Parent != null && !IsSameParent(CurrentState.CurrentSplit, prevSplit))
                        {
                            CurrentState.CurrentSplit.Parent.DeathCount = 0;
                        }
                    }
                }

                CurrentState.Run.HasChanged = true;
                OnSplit?.Invoke(this, null);
            }
        }
Example #3
0
 public void RegisterTimerModel(ITimerModel model)
 {
     model.OnSplit      += (s, e) => OnSplit?.Invoke(this, e);
     model.OnSkipSplit  += (s, e) => OnSkipSplit?.Invoke(this, e);
     model.OnUndoSplit  += (s, e) => OnUndoSplit?.Invoke(this, e);
     model.OnStart      += (s, e) => OnStart?.Invoke(this, e);
     model.OnReset      += (s, e) => OnReset?.Invoke(this, e);
     model.OnPause      += (s, e) => OnPause?.Invoke(this, e);
     model.OnResume     += (s, e) => OnResume?.Invoke(this, e);
     model.OnScrollUp   += (s, e) => OnScrollUp?.Invoke(this, e);
     model.OnScrollDown += (s, e) => OnScrollDown?.Invoke(this, e);
     model.OnSwitchComparisonPrevious += (s, e) => OnSwitchComparisonPrevious?.Invoke(this, e);
     model.OnSwitchComparisonNext     += (s, e) => OnSwitchComparisonNext?.Invoke(this, e);
 }
Example #4
0
        public void Split()
        {
            if (CurrentState.CurrentPhase == TimerPhase.Running && CurrentState.CurrentTime.RealTime > TimeSpan.Zero)
            {
                CurrentState.CurrentSplit.SplitTime = CurrentState.CurrentTime;
                CurrentState.CurrentSplitIndex++;
                if (CurrentState.Run.Count == CurrentState.CurrentSplitIndex)
                {
                    CurrentState.CurrentPhase = TimerPhase.Ended;
                    CurrentState.AttemptEnded = TimeStamp.CurrentDateTime;
                }
                CurrentState.Run.HasChanged = true;

                OnSplit?.Invoke(this, null);
            }
        }
Example #5
0
        public void AdjustedSplit(int offsetMs)
        {
            if (CurrentState.CurrentPhase == TimerPhase.Running && CurrentState.CurrentTime.RealTime > TimeSpan.Zero)
            {
                TimeSpan AdjustedTimeSpan = new TimeSpan(0, 0, 0, 0, offsetMs);
                Time     AdjTime          = new Time();
                AdjTime.RealTime = CurrentState.CurrentTime.RealTime + AdjustedTimeSpan;

                CurrentState.CurrentSplit.SplitTime = AdjTime;
                CurrentState.CurrentSplitIndex++;
                if (CurrentState.Run.Count == CurrentState.CurrentSplitIndex)
                {
                    CurrentState.CurrentPhase = TimerPhase.Ended;
                    CurrentState.AttemptEnded = TimeStamp.CurrentDateTime;
                }
                CurrentState.Run.HasChanged = true;

                OnSplit?.Invoke(this, null);
            }
        }
Example #6
0
 public void OnBaseSplit(object sender, EventArgs e)
 {
     OnSplit?.Invoke(sender, e);
 }