Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports LiveSplit.Model.RunFactories
- Imports System.IO
- Imports LiveSplit.Model.Comparisons
- Module Module1
- Sub Main()
- Dim stream = File.OpenRead("C:\Users\Administrator\Downloads\LiveSplit\oWiI.lss")
- Dim runFactory As New XMLRunFactory(stream)
- Dim comparisonGeneratorsFactory As New StandardComparisonGeneratorsFactory()
- Dim run = runFactory.Create(comparisonGeneratorsFactory)
- Dim Goaltimestring As String
- Dim Goaltime As TimeSpan
- Goaltimestring = InputBox("What is your goaltime? Enter as hh:mm:ss.000")
- ''Goaltimestring = "04:37:03.589"
- Goaltime = TimeSpan.Parse(Goaltimestring)
- Dim i As Integer
- Dim n As Integer
- Dim Percentile As Double
- Dim PercMin As Double
- Dim PercMax As Double
- Dim PercPosi As Double
- Dim PercPosiUp As Integer
- Dim PercPosiDn As Integer
- Dim SplitTimes As New ArrayList
- Dim SegTime As Double
- Dim RunSum As Double
- PercMin = 0
- PercMax = 1
- Do
- RunSum = 0
- Percentile = 0.5 * (PercMax - PercMin) + PercMin
- For i = 0 To run.Count - 1
- Dim TempSplits As New ArrayList
- For n = 0 To run(i).SegmentHistory.Count - 1
- If i > 0 Then
- If run(i).SegmentHistory(n).Time.HasValue And run(i - 1).SegmentHistory(n).Time.HasValue Then
- TempSplits.Add(run(i).SegmentHistory(n).Time.Value.TotalMilliseconds)
- End If
- Else
- If run(i).SegmentHistory(n).Time.HasValue Then
- TempSplits.Add(run(i).SegmentHistory(n).Time.Value.TotalMilliseconds)
- End If
- End If
- Next
- PercPosi = Percentile * (TempSplits.Count - 1)
- PercPosiUp = Math.Ceiling(PercPosi)
- PercPosiDn = Math.Floor(PercPosi)
- If PercPosiUp > PercPosiDn Then
- SegTime = TempSplits(PercPosiUp) * (PercPosi - PercPosiDn) + TempSplits(PercPosiDn) * Math.Abs(PercPosiDn - PercPosi)
- Else
- SegTime = TempSplits(PercPosi)
- End If
- SplitTimes.Add(SegTime)
- RunSum += SegTime
- Next
- '' For Each num In SplitTimes
- '' Console.WriteLine(TimeSpan.FromMilliseconds(num))
- '' Next
- '' Console.WriteLine(RunSum.ToString)
- '' Console.WriteLine(Percentile.ToString)
- If Math.Round(RunSum, 0) = Math.Round(Goaltime.TotalMilliseconds, 0) Or PercMax = PercMin Then
- Exit Do
- Else
- SplitTimes.Clear()
- End If
- If RunSum > Goaltime.TotalMilliseconds Then
- PercMax = Percentile
- Else
- PercMin = Percentile
- End If
- Loop
- Console.WriteLine(run.GameName)
- For Each num In SplitTimes
- Console.WriteLine(TimeSpan.FromMilliseconds(num))
- Next
- Console.Read()
- End Sub
- End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement