sessions
This commit is contained in:
@@ -31,12 +31,22 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
Logger.Log($"Solved {puzzle} with measurement {measurement}", LogType.Measuring);
|
||||
}
|
||||
|
||||
public static void StartSession() => PuzzleStorage.Instance.StartSession();
|
||||
|
||||
public static void EndSession(float time)
|
||||
{
|
||||
PuzzleStorage.Instance.EndSession(time);
|
||||
|
||||
Logger.Log(PuzzleStorage.Instance.Session.ToString(), LogType.Measuring);
|
||||
}
|
||||
|
||||
public static void LogAllMeasurements()
|
||||
{
|
||||
Engine.DefaultEngine.theme.puzzleTypes.ForEach(puzzle =>
|
||||
{
|
||||
Logger.Log(PuzzleStorage.Instance.LoadOrNew(puzzle).ToString(), LogType.Measuring);
|
||||
});
|
||||
Logger.Log(PuzzleStorage.Instance.Session.ToString(), LogType.Measuring);
|
||||
}
|
||||
|
||||
public static void Clear() => _runningMeasurements = new Dictionary<int, PuzzleMeasurement>();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
@@ -7,6 +8,7 @@ using Realms;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
{
|
||||
[SuppressMessage("ReSharper", "UnassignedGetOnlyAutoProperty")]
|
||||
public class Puzzle : RealmObject
|
||||
{
|
||||
[PrimaryKey]
|
||||
|
||||
@@ -24,6 +24,8 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
[SerializeField]
|
||||
private string databasePath = "measurements.realm";
|
||||
|
||||
public Session Session { get; private set; }
|
||||
|
||||
private Realm _realm;
|
||||
|
||||
private void OnEnable()
|
||||
@@ -41,23 +43,28 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
_realm?.Dispose();
|
||||
}
|
||||
|
||||
#region Session
|
||||
|
||||
public void StartSession() => _realm.Write(() => Session = _realm.Add(new Session()));
|
||||
|
||||
public void EndSession(float time) =>_realm.Write(() => Session.Time = time);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Puzzles
|
||||
|
||||
public Puzzle New(PuzzleModuleDescription puzzle)
|
||||
{
|
||||
Puzzle created = null;
|
||||
|
||||
_realm.Write(() =>
|
||||
{
|
||||
created = _realm.Add(new Puzzle(puzzle));
|
||||
});
|
||||
_realm.Write(() => created = _realm.Add(new Puzzle(puzzle)));
|
||||
|
||||
return created;
|
||||
}
|
||||
|
||||
public Puzzle LoadOrNew(PuzzleModuleDescription puzzle) =>
|
||||
_realm.Find<Puzzle>(puzzle.Id) ?? New(puzzle);
|
||||
public Puzzle LoadOrNew(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id) ?? New(puzzle);
|
||||
|
||||
public Puzzle Load(PuzzleModuleDescription puzzle) =>
|
||||
_realm.Find<Puzzle>(puzzle.Id);
|
||||
public Puzzle Load(PuzzleModuleDescription puzzle) => _realm.Find<Puzzle>(puzzle.Id);
|
||||
|
||||
public void Delete(PuzzleModuleDescription puzzle)
|
||||
{
|
||||
@@ -76,7 +83,12 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
{
|
||||
measurement.TimeSolved = Time.time;
|
||||
found.Measurements.Add(measurement);
|
||||
|
||||
// add solved puzzle to session
|
||||
Session.PuzzlesSolved.Add(found);
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
29
Assets/Engine/Runtime/Measurements/Session.cs
Normal file
29
Assets/Engine/Runtime/Measurements/Session.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using JetBrains.Annotations;
|
||||
using MongoDB.Bson;
|
||||
using Realms;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.Measurements
|
||||
{
|
||||
[SuppressMessage("ReSharper", "UnassignedGetOnlyAutoProperty")]
|
||||
public class Session : RealmObject
|
||||
{
|
||||
[PrimaryKey]
|
||||
public ObjectId ID { get; set; }
|
||||
public float Time { get; set; }
|
||||
public IList<Puzzle> PuzzlesSolved { get; }
|
||||
|
||||
[UsedImplicitly]
|
||||
public Session()
|
||||
{
|
||||
ID = ObjectId.GenerateNewId();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Session {ID}: {PuzzlesSolved.Count} puzzles solved in {Time.ToTimeSpan():m':'ss}";
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/Measurements/Session.cs.meta
Normal file
3
Assets/Engine/Runtime/Measurements/Session.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94ad8a288d6b4794b6485f026e94267e
|
||||
timeCreated: 1670892444
|
||||
Reference in New Issue
Block a user