75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.IO;
|
|
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
public enum NoticeCategory {
|
|
Initial,
|
|
Slower,
|
|
Faster,
|
|
Fastest,
|
|
}
|
|
|
|
public class TimingNotice {
|
|
double Seconds;
|
|
public NoticeCategory Category = NoticeCategory.Initial;
|
|
|
|
public static TimingNotice Compare(double seconds, double? pbSeconds = null, double? lrSeconds = null) => lrSeconds switch {
|
|
double lr when seconds < lr => new TimingNotice { Seconds = Math.Abs(lr - seconds), Category = NoticeCategory.Fastest },
|
|
_ => pbSeconds switch {
|
|
double pb when seconds < pb => new TimingNotice { Seconds = Math.Abs(pb - seconds), Category = NoticeCategory.Faster },
|
|
double pb when seconds >= pb => new TimingNotice { Seconds = Math.Abs(pb - seconds), Category = NoticeCategory.Slower },
|
|
_ => new TimingNotice { Seconds = seconds, Category = NoticeCategory.Initial },
|
|
}
|
|
};
|
|
|
|
public Label ToLabel() {
|
|
Label l = Category switch {
|
|
NoticeCategory.Initial => new Label($"{TimeSpan.FromSeconds(Seconds):m\\:ss\\.fff}"),
|
|
NoticeCategory.Slower => new Label($"+{Seconds:0.000}"),
|
|
NoticeCategory.Faster => new Label($"-{Seconds:0.000}"),
|
|
NoticeCategory.Fastest => new Label($"-{Seconds:0.000}"),
|
|
_ => new Label($"-{Seconds:0.000}"),
|
|
};
|
|
|
|
string colourClass = Category switch {
|
|
NoticeCategory.Initial => "",
|
|
NoticeCategory.Slower => "yellow",
|
|
NoticeCategory.Faster => "green",
|
|
NoticeCategory.Fastest => "purple",
|
|
_ => "",
|
|
};
|
|
|
|
l.AddToClassList(colourClass);
|
|
return l;
|
|
}
|
|
}
|
|
|
|
public enum DiffColour {
|
|
Green,
|
|
Purple,
|
|
White,
|
|
Yellow,
|
|
}
|
|
|
|
public class SectorTime {
|
|
public int Sector;
|
|
public double Seconds;
|
|
public override string ToString() => $"{Seconds:0.000}";
|
|
}
|
|
|
|
public class Lap {
|
|
public string Map;
|
|
public List<SectorTime> Sectors;
|
|
|
|
// 0:1:39
|
|
public override string ToString() {
|
|
return $"{TimeSpan.FromSeconds(TotalTime):m\\:ss\\.fff}";
|
|
}
|
|
|
|
public double TotalTime => Sectors.Sum(s => s.Seconds);
|
|
}
|