public void Extend(SessionStats session) {
/* extremums */
{
var drivenDistance = _associatedStorage.GetDouble(KeyDistancePerCarPrefix + session.CarId) + session.Distance;
_associatedStorage.Set(KeyDistancePerCarPrefix + session.CarId, drivenDistance);
if (session.CarId == MaxDistancePerCarCarId) {
MaxDistancePerCar += session.Distance;
} else if (drivenDistance > MaxDistancePerCar) {
MaxDistancePerCar = drivenDistance;
MaxDistancePerCarCarId = session.CarId;
}
}
{
var drivenDistance = _associatedStorage.GetDouble(KeyDistancePerTrackPrefix + session.TrackId) + session.Distance;
_associatedStorage.Set(KeyDistancePerTrackPrefix + session.TrackId, drivenDistance);
if (session.TrackId == MaxDistancePerTrackTrackId) {
MaxDistancePerTrack += session.Distance;
} else if (drivenDistance > MaxDistancePerTrack) {
MaxDistancePerTrack = drivenDistance;
MaxDistancePerTrackTrackId = session.TrackId;
}
}
if (session.MaxSpeed > MaxSpeed) {
MaxSpeed = session.MaxSpeed;
MaxSpeedCarId = session.CarId;
}
if (session.LongestAirborne > LongestAirborne) {
LongestAirborne = session.LongestAirborne;
LongestAirborneCarId = session.CarId;
}
if (session.LongestWheelie > LongestWheelie) {
LongestWheelie = session.LongestWheelie;
LongestWheelieCarId = session.CarId;
}
if (session.LongestTwoWheels > LongestTwoWheels) {
LongestTwoWheels = session.LongestTwoWheels;
LongestTwoWheelsCarId = session.CarId;
}
/* summary */
Distance += session.Distance;
FuelBurnt += session.FuelBurnt;
Time += session.Time;
GoneOffroadTimes += session.GoneOffroad;
TotalAirborne += session.TotalAirborne;
TotalWheelie += session.TotalWheelie;
TotalTwoWheels += session.TotalTwoWheels;
TotalTyreWear += session.TotalTyreWear;
TotalCrashes += session.TotalCrashes;
SessionsCount++;
}