increase room diversity, improve ui
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c13c76161df849bfb0bd769d1756a66f
|
||||
timeCreated: 1683591920
|
||||
@@ -19,7 +19,7 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
/// </summary>
|
||||
public class GameControl : MonoBehaviour
|
||||
{
|
||||
public static readonly Vector2Int DefaultRoomSize = new Vector2Int(2, 4);
|
||||
private const string TargetTimeKey = "target_time";
|
||||
|
||||
/// <summary>
|
||||
/// The active instance of the game control.
|
||||
@@ -35,13 +35,15 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private Button startButton, stopButton, pauseButton, addTimeButton, removeTimeButton;
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private Text timeText, roomTimeText, estimateTimeText, targetTimeText, percentileText, widthText, lengthText;
|
||||
private Text timeText, roomTimeText, estimateTimeText, targetTimeText, percentileText;
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private Slider roomWidth, roomLength;
|
||||
private PersistedSlider roomWidth, roomLength;
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private Transform roomSizeElement;
|
||||
[BoxGroup("Internal")] [SerializeField]
|
||||
private PuzzlePlan puzzlePlan;
|
||||
|
||||
[BoxGroup("Internal")] public PersistedToggle preferLessPlayed;
|
||||
|
||||
[HideInInspector] public GameState gameState = GameState.Stopped;
|
||||
public PuzzleModuleDescription CurrentPuzzle
|
||||
@@ -73,21 +75,20 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
/// The estimated total time the player will spend in the experience.
|
||||
/// </summary>
|
||||
public float EstimatedTime { get; private set; }
|
||||
public Vector2Int RoomSize { get; private set; }
|
||||
public Vector2Int RoomSize => new(roomWidth.Value, roomLength.Value);
|
||||
|
||||
private float _previousUIUpdate, _previousPlanUpdate;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
|
||||
RoomSize = DefaultRoomSize;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
TargetTime = Engine.Instance.initialTargetTime;
|
||||
|
||||
// read preferences
|
||||
TargetTime = PlayerPrefs.GetFloat(TargetTimeKey, Engine.Instance.initialTargetTime);
|
||||
|
||||
SetTimeText();
|
||||
}
|
||||
|
||||
@@ -121,10 +122,7 @@ 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 is GameState.Running or GameState.Paused;
|
||||
removeTimeButton.interactable = gameState is GameState.Running or GameState.Paused && TargetTime >= TimeElapsed + 60;
|
||||
roomWidth.interactable = gameState == GameState.Stopped;
|
||||
roomLength.interactable = gameState == GameState.Stopped;
|
||||
removeTimeButton.interactable = TargetTime >= TimeElapsed + 60;
|
||||
}
|
||||
|
||||
#region Time Controls
|
||||
@@ -191,6 +189,8 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
if (TargetTime + seconds >= TimeElapsed)
|
||||
{
|
||||
TargetTime += seconds;
|
||||
PlayerPrefs.SetFloat(TargetTimeKey, TargetTime);
|
||||
PlayerPrefs.Save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,13 +230,6 @@ namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
|
||||
#endregion
|
||||
|
||||
public void SetRoomSize()
|
||||
{
|
||||
RoomSize = new Vector2Int((int)roomWidth.value, (int)roomLength.value);
|
||||
widthText.text = RoomSize.x.ToString();
|
||||
lengthText.text = RoomSize.y.ToString();
|
||||
}
|
||||
|
||||
public void ExitGame()
|
||||
{
|
||||
StopGame();
|
||||
|
||||
35
Assets/Engine/Runtime/UI/PersistedSlider.cs
Normal file
35
Assets/Engine/Runtime/UI/PersistedSlider.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
{
|
||||
public class PersistedSlider : PersistedUI<int>
|
||||
{
|
||||
[SerializeField] private Slider slider;
|
||||
[SerializeField] private Text label;
|
||||
|
||||
protected override void Start()
|
||||
{
|
||||
base.Start();
|
||||
|
||||
slider.wholeNumbers = true;
|
||||
|
||||
slider.onValueChanged.AddListener(value =>
|
||||
{
|
||||
Value = (int) value;
|
||||
DisplayValue();
|
||||
PlayerPrefs.SetInt(key, Value);
|
||||
PlayerPrefs.Save();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
protected override int RetrieveValue() => PlayerPrefs.GetInt(key, defaultValue);
|
||||
|
||||
protected override void DisplayValue()
|
||||
{
|
||||
slider.value = Value;
|
||||
label.text = Value.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/UI/PersistedSlider.cs.meta
Normal file
3
Assets/Engine/Runtime/UI/PersistedSlider.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2efb00aece2e423ba5e141ebf2f7111a
|
||||
timeCreated: 1683968307
|
||||
31
Assets/Engine/Runtime/UI/PersistedToggle.cs
Normal file
31
Assets/Engine/Runtime/UI/PersistedToggle.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
{
|
||||
public class PersistedToggle : PersistedUI<bool>
|
||||
{
|
||||
[SerializeField] private Toggle toggle;
|
||||
|
||||
protected override void Start()
|
||||
{
|
||||
base.Start();
|
||||
|
||||
toggle.onValueChanged.AddListener(value =>
|
||||
{
|
||||
Value = value;
|
||||
PlayerPrefs.SetInt(key, Convert.ToInt32(Value));
|
||||
PlayerPrefs.Save();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
protected override bool RetrieveValue() => PlayerPrefs.GetInt(key, Convert.ToInt32(defaultValue)) != 0;
|
||||
|
||||
protected override void DisplayValue()
|
||||
{
|
||||
toggle.isOn = Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/UI/PersistedToggle.cs.meta
Normal file
3
Assets/Engine/Runtime/UI/PersistedToggle.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a4faeb3634c42e38fb0c2b5f26bdd5d
|
||||
timeCreated: 1683969579
|
||||
21
Assets/Engine/Runtime/UI/PersistedUI.cs
Normal file
21
Assets/Engine/Runtime/UI/PersistedUI.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Engine.Runtime.UI
|
||||
{
|
||||
public abstract class PersistedUI<T> : MonoBehaviour
|
||||
{
|
||||
public string key;
|
||||
public T defaultValue;
|
||||
|
||||
public T Value { get; protected set; }
|
||||
|
||||
protected virtual void Start()
|
||||
{
|
||||
Value = RetrieveValue();
|
||||
DisplayValue();
|
||||
}
|
||||
|
||||
protected abstract T RetrieveValue();
|
||||
protected abstract void DisplayValue();
|
||||
}
|
||||
}
|
||||
3
Assets/Engine/Runtime/UI/PersistedUI.cs.meta
Normal file
3
Assets/Engine/Runtime/UI/PersistedUI.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b629c5229b954b5d847e58f9b439607a
|
||||
timeCreated: 1683965075
|
||||
@@ -27,7 +27,7 @@ namespace EscapeRoomEngine.Engine.Runtime.UI.Elements
|
||||
set
|
||||
{
|
||||
puzzleName.text = value.puzzleName;
|
||||
estimatedTime.text = $"Time Estimate: {Measure.EstimateTime(value).ToTimeSpan():mm':'ss}";
|
||||
estimatedTime.text = $"Est. {Measure.EstimateTime(value).ToTimeSpan():mm':'ss}";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user