phase 2
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Measurements;
|
||||
using System.Collections.Generic;
|
||||
using EscapeRoomEngine.Engine.Runtime.Measurements;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
@@ -15,20 +17,31 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
{
|
||||
public static GameControl Instance { get; private set; }
|
||||
|
||||
[SerializeField]
|
||||
private float uiUpdateInterval = 1, planUpdateInterval = 1;
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private Button startButton, stopButton, pauseButton, addTimeButton, removeTimeButton;
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private Text timeText, roomTimeText, estimateTimeText, targetTimeText;
|
||||
private Text timeText, roomTimeText, estimateTimeText, targetTimeText, percentileText;
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private float uiUpdateInterval = 1;
|
||||
private PuzzlePlan puzzlePlan;
|
||||
|
||||
[HideInInspector] public GameState gameState = GameState.Stopped;
|
||||
public PuzzleModuleDescription CurrentPuzzle
|
||||
{
|
||||
set => puzzlePlan.CurrentPuzzle = value;
|
||||
}
|
||||
public List<PuzzleModuleDescription> PlannedPuzzles
|
||||
{
|
||||
set => puzzlePlan.Puzzles = value;
|
||||
}
|
||||
|
||||
public float TimeElapsed { get; private set; }
|
||||
public float TimeInRoom { get; set; }
|
||||
public float TargetTime { get; private set; }
|
||||
public float EstimatedTimeRoom { get; private set; }
|
||||
|
||||
private float _previousUIUpdate;
|
||||
private float _previousUIUpdate, _previousPlanUpdate;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
@@ -57,6 +70,15 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
_previousUIUpdate = Time.time;
|
||||
|
||||
SetTimeText();
|
||||
UpdateStats();
|
||||
}
|
||||
|
||||
// update plan
|
||||
if (Time.time > _previousPlanUpdate + planUpdateInterval)
|
||||
{
|
||||
_previousPlanUpdate = Time.time;
|
||||
|
||||
Engine.Instance.PlanPuzzles();
|
||||
}
|
||||
|
||||
// enable or disable buttons
|
||||
@@ -129,15 +151,21 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
|
||||
Engine.Instance.CurrentRoom.Match(some: room =>
|
||||
{
|
||||
estimateTimeText.text = TimeToText(
|
||||
TimeElapsed - TimeInRoom
|
||||
+ Mathf.Max(TimeInRoom, Measure.AverageTime(room))
|
||||
+ Engine.Instance.EstimatedTimeRemaining);
|
||||
EstimatedTimeRoom =
|
||||
TimeElapsed - TimeInRoom + Mathf.Max(TimeInRoom, Measure.EstimateTime(room));
|
||||
estimateTimeText.text = TimeToText(EstimatedTimeRoom + Engine.Instance.EstimatedTimeRemaining);
|
||||
});
|
||||
}
|
||||
|
||||
private void UpdateStats()
|
||||
{
|
||||
percentileText.text = PercentageToText(Measure.SessionPercentile());
|
||||
}
|
||||
|
||||
private static string TimeToText(float time) => $"{time.ToTimeSpan():mm':'ss}";
|
||||
|
||||
private static string PercentageToText(float percentage) => $"{percentage:P1}";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Measurements
|
||||
|
||||
Reference in New Issue
Block a user