This commit is contained in:
2022-12-08 10:24:00 +01:00
parent 99187bc752
commit b3c53031c1
8 changed files with 90 additions and 36 deletions

View File

@@ -1,4 +1,5 @@
using System;
using EscapeRoomEngine.Engine.Runtime.Measurements;
using UnityEngine;
using UnityEngine.UI;
@@ -11,20 +12,16 @@ namespace EscapeRoomEngine.Engine.Runtime
public class GameControl : MonoBehaviour
{
private const int InitialTime = 5 * 60;
[SerializeField] private Button startButton, stopButton, pauseButton, resumeButton, addMinuteButton, removeMinuteButton;
[SerializeField] private Text timeText;
[HideInInspector] public GameState gameState = GameState.Stopped;
public float TimeRemaining => _totalTime - _timeElapsed;
private float _timeElapsed, _totalTime;
private float _timeElapsed;
private void Start()
{
SetGamemasterTimeText(_totalTime);
SetGamemasterTimeText(_timeElapsed);
}
private void Update()
@@ -32,17 +29,9 @@ namespace EscapeRoomEngine.Engine.Runtime
// Update time
if (gameState == GameState.Running)
{
if (Time.deltaTime <= TimeRemaining)
{
_timeElapsed += Time.deltaTime;
}
else
{
_timeElapsed = _totalTime;
StopGame();
}
_timeElapsed += Time.deltaTime;
SetGamemasterTimeText(TimeRemaining);
SetGamemasterTimeText(_timeElapsed);
}
// Enable or disable buttons
@@ -51,7 +40,7 @@ namespace EscapeRoomEngine.Engine.Runtime
pauseButton.interactable = gameState == GameState.Running;
resumeButton.interactable = gameState == GameState.Paused;
addMinuteButton.interactable = gameState != GameState.Stopped;
removeMinuteButton.interactable = gameState != GameState.Stopped && TimeRemaining >= 60;
removeMinuteButton.interactable = gameState != GameState.Stopped && _timeElapsed >= 10;
}
#region Time Controls
@@ -60,12 +49,23 @@ namespace EscapeRoomEngine.Engine.Runtime
{
gameState = GameState.Running;
_totalTime = InitialTime;
_timeElapsed = 0;
// generate the first room if it hasn't been generated yet
Engine.DefaultEngine.CurrentRoom.Match(none: () => Engine.DefaultEngine.GenerateRoom());
// start a new session
Measure.StartSession();
}
public void StopGame()
{
if (gameState != GameState.Stopped)
{
// was running
Measure.EndSession(_timeElapsed);
}
gameState = GameState.Stopped;
}
@@ -85,9 +85,9 @@ namespace EscapeRoomEngine.Engine.Runtime
/// <param name="seconds">The amount of seconds that will be added to the time. Can be negative to remove time.</param>
public void ChangeTime(int seconds)
{
if (_totalTime + seconds >= 0)
if (_timeElapsed + seconds >= 0)
{
_totalTime += seconds;
_timeElapsed += seconds;
}
}