measurements take pausing the game into account

This commit is contained in:
2023-04-06 09:47:33 +02:00
parent 0dc7eef753
commit a71e5cac37
5 changed files with 21 additions and 10 deletions

View File

@@ -85,7 +85,7 @@ namespace EscapeRoomEngine.Engine.Runtime
else
{
GenerateEndSpace(room, entrance);
GameControl.Instance.StopGame();
GameControl.Instance.FinishGame();
}
var roomId = _rooms.Count - 1;

View File

@@ -66,8 +66,8 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
{
_runningMeasurements[puzzle.Id] = new PuzzleMeasurement
{
TimeStarted = Time.time,
TimeSolved = Time.time
TimeStarted = GameControl.Instance.TimeElapsed,
TimeSolved = GameControl.Instance.TimeElapsed
};
Logger.Log($"Started measuring {puzzle}", LogType.Measuring);

View File

@@ -129,7 +129,7 @@ namespace EscapeRoomEngine.Engine.Runtime.Measurements
_realm.Write(() =>
{
measurement.TimeSolved = Time.time;
measurement.TimeSolved = GameControl.Instance.TimeElapsed;
found.Measurements.Add(measurement);
// add solved puzzle to session

View File

@@ -11,7 +11,7 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
{
public enum GameState
{
Stopped, Paused, Running
Stopped, Paused, Running, Finished
}
/// <summary>
@@ -112,8 +112,8 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
startButton.interactable = gameState == GameState.Stopped;
stopButton.interactable = gameState != GameState.Stopped;
pauseButton.interactable = gameState is GameState.Running or GameState.Paused;
addTimeButton.interactable = gameState != GameState.Stopped;
removeTimeButton.interactable = gameState != GameState.Stopped && TargetTime >= TimeElapsed + 60;
addTimeButton.interactable = gameState is GameState.Running or GameState.Paused;
removeTimeButton.interactable = gameState is GameState.Running or GameState.Paused && TargetTime >= TimeElapsed + 60;
}
#region Time Controls
@@ -133,7 +133,7 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
public void StopGame()
{
if (gameState != GameState.Stopped)
if (gameState != GameState.Stopped && gameState != GameState.Finished)
{
// was running
Measure.EndSession(TimeElapsed);
@@ -142,6 +142,17 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
gameState = GameState.Stopped;
}
public void FinishGame()
{
if (gameState != GameState.Finished)
{
// was running
Measure.EndSession(TimeElapsed);
}
gameState = GameState.Finished;
}
public void PauseGame()
{
// ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault