diff --git a/Assets/Engine/Assets/Prefabs/UI/Gamemaster Canvas.prefab b/Assets/Engine/Assets/Prefabs/UI/Gamemaster Canvas.prefab index ea4d9e7..1120d93 100644 --- a/Assets/Engine/Assets/Prefabs/UI/Gamemaster Canvas.prefab +++ b/Assets/Engine/Assets/Prefabs/UI/Gamemaster Canvas.prefab @@ -261,7 +261,7 @@ RectTransform: - {fileID: 7578302057580157030} - {fileID: 9062548758054197003} m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -342,7 +342,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 676ef7e7d34646dbb24b1978563ab63b, type: 3} m_Name: m_EditorClassIdentifier: - uiUpdateInterval: 1 + uiUpdateInterval: 0.1 planUpdateInterval: 1 startButton: {fileID: 4759128159024176925} stopButton: {fileID: 1891571209360683320} diff --git a/Assets/Engine/Runtime/Engine.cs b/Assets/Engine/Runtime/Engine.cs index 08aae7b..b7a91f2 100644 --- a/Assets/Engine/Runtime/Engine.cs +++ b/Assets/Engine/Runtime/Engine.cs @@ -85,7 +85,7 @@ namespace EscapeRoomEngine.Engine.Runtime else { GenerateEndSpace(room, entrance); - GameControl.Instance.StopGame(); + GameControl.Instance.FinishGame(); } var roomId = _rooms.Count - 1; diff --git a/Assets/Engine/Runtime/Measurements/Measure.cs b/Assets/Engine/Runtime/Measurements/Measure.cs index a9af6ee..db7031b 100644 --- a/Assets/Engine/Runtime/Measurements/Measure.cs +++ b/Assets/Engine/Runtime/Measurements/Measure.cs @@ -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); diff --git a/Assets/Engine/Runtime/Measurements/PuzzleStorage.cs b/Assets/Engine/Runtime/Measurements/PuzzleStorage.cs index 2ee406c..2216aa1 100644 --- a/Assets/Engine/Runtime/Measurements/PuzzleStorage.cs +++ b/Assets/Engine/Runtime/Measurements/PuzzleStorage.cs @@ -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 diff --git a/Assets/Engine/Runtime/UI/GameControl.cs b/Assets/Engine/Runtime/UI/GameControl.cs index fca9e15..4e60444 100644 --- a/Assets/Engine/Runtime/UI/GameControl.cs +++ b/Assets/Engine/Runtime/UI/GameControl.cs @@ -11,7 +11,7 @@ namespace EscapeRoomEngine.Engine.Runtime.UI { public enum GameState { - Stopped, Paused, Running + Stopped, Paused, Running, Finished } /// @@ -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