using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using EscapeRoomEngine.Engine.Runtime.Modules; using EscapeRoomEngine.Engine.Runtime.Utilities; using JetBrains.Annotations; using Realms; namespace EscapeRoomEngine.Engine.Runtime.Measurements { [SuppressMessage("ReSharper", "UnassignedGetOnlyAutoProperty")] public class Puzzle : RealmObject { [PrimaryKey] public int ID { get; set; } public IList Measurements { get; } public float TotalTimeSpentOnPuzzle => Measurements.Sum(measurement => measurement.Time); public float AverageTimeToSolve => Measurements.Count > 0 ? TotalTimeSpentOnPuzzle / Measurements.Count : 0f; [UsedImplicitly] public Puzzle() {} public Puzzle(PuzzleModuleDescription puzzle) { ID = puzzle.Id; } public override string ToString() { return $"{Engine.DefaultEngine.theme.GetPuzzle(ID)}: avg. {AverageTimeToSolve.ToTimeSpan():m':'ss} ({string.Join(", ", Measurements)})"; } } }