sessions
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user