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); }
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); } }
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); }
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); } }
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); } }
public void OnBaseSplit(object sender, EventArgs e) { OnSplit?.Invoke(sender, e); }