timing colours
This commit is contained in:
1 parent
926415e786
commit
9981ee00ef
3 files changed
+35
-15
No files matched your search
@@ -0,0 +1,17 @@
|
||||
public static class IEnumerableExtensions {
|
||||
public static T MinBy<T, K>(this IEnumerable<T> source, Func<T, K> selector) {
|
||||
T min = default;
|
||||
|
||||
bool anyValue = false;
|
||||
|
||||
foreach (var item in source) {
|
||||
if (!anyValue || Comparer<K>.Default.Compare(selector(item), selector(min)) < 0) {
|
||||
min = item;
|
||||
anyValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
return min;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,8 @@ public class ShipUi : MonoBehaviour {
|
||||
.Where(s => s.Sector == sector.sector)
|
||||
.Select(s => {
|
||||
Label l = new Label($"{s}");
|
||||
l.AddToClassList(s.ColourClass());
|
||||
string colourClass = timing.GetSectorColour(s).ToString().ToLowerInvariant();
|
||||
l.AddToClassList(colourClass);
|
||||
return l;
|
||||
})
|
||||
.DefaultIfEmpty(new Label("-"))
|
||||
|
||||
+16
-14
@@ -25,13 +25,13 @@ public readonly struct SectorTime {
|
||||
|
||||
public override string ToString() => $"{Value:0.000}";
|
||||
|
||||
public string ColourClass() => Colour switch {
|
||||
SectorColour.Green => "green",
|
||||
SectorColour.Purple => "purple",
|
||||
SectorColour.White => "white",
|
||||
SectorColour.Yellow => "yellow",
|
||||
_ => throw new Exception("unknown colour"),
|
||||
};
|
||||
// public string ColourClass() => Colour switch {
|
||||
// SectorColour.Green => "green",
|
||||
// SectorColour.Purple => "purple",
|
||||
// SectorColour.White => "white",
|
||||
// SectorColour.Yellow => "yellow",
|
||||
// _ => throw new Exception("unknown colour"),
|
||||
// };
|
||||
}
|
||||
|
||||
public struct Lap {
|
||||
@@ -42,7 +42,7 @@ public struct Lap {
|
||||
return $"Lap {Number} : {TimeSpan.FromSeconds(TotalTime()):g} {String.Join(" ", Sectors.ConvertAll(s => s.ToString()))}";
|
||||
}
|
||||
|
||||
double TotalTime() {
|
||||
public double TotalTime() {
|
||||
return Sectors.Sum(s => s.Value);
|
||||
}
|
||||
}
|
||||
@@ -148,13 +148,15 @@ public class Timing: MonoBehaviour {
|
||||
}
|
||||
|
||||
public SectorColour GetSectorColour(SectorTime s) {
|
||||
var fastestLap = lapTimes.MinBy(l => l.TotalTime());
|
||||
var fastestSector = fastestLap.Single(fls => fls.Sector == s.Sector);
|
||||
if (lapTimes.Count == 0)
|
||||
return SectorColour.Green;
|
||||
|
||||
return s.Value switch {
|
||||
< fastestSector.Value => SectorColour.Green,
|
||||
> fastestSector.Value => SectorColour.Yellow,
|
||||
_ => SectorColour.White,
|
||||
var fastestLap = lapTimes.MinBy(l => l.TotalTime());
|
||||
var fastestSector = fastestLap.Sectors.Single(fls => fls.Sector == s.Sector);
|
||||
|
||||
return (s.Value < fastestSector.Value) switch {
|
||||
true => SectorColour.Green,
|
||||
false => SectorColour.Yellow,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user