smart-interactive-display/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs

81 lines
2.4 KiB
C#
Raw Permalink Normal View History

2024-04-25 23:57:30 -07:00
using Cysharp.Threading.Tasks;
2024-04-11 01:55:35 -07:00
using GadGame.Manager;
2024-04-15 04:10:00 -07:00
using GadGame.Network;
using UnityEngine;
2024-04-11 01:55:35 -07:00
2024-04-15 04:10:00 -07:00
namespace GadGame.State.MainFlowState
2024-04-11 01:55:35 -07:00
{
public class PlayGameState : State<MainFlow>
{
private GameManager _gameManager;
2024-04-15 04:10:00 -07:00
private float _leaveTimer;
private bool _warned;
2024-04-11 01:55:35 -07:00
public override async void Enter()
{
await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.GameScene.ScenePath);
_gameManager = GameManager.Instance;
_gameManager.OnEnd += OnEndGame;
2024-04-22 02:10:49 -07:00
_leaveTimer = 0;
2024-04-11 01:55:35 -07:00
}
2024-04-15 04:10:00 -07:00
public override void Update(float time)
2024-04-11 01:55:35 -07:00
{
2024-04-16 02:27:28 -07:00
UdpSocket.Instance.SendDataToPython("1");
2024-04-25 23:57:30 -07:00
if(!GameManager.Instance.Playing) return;
if(!_warned && !UdpSocket.Instance.DataReceived.Engage) {
_leaveTimer += Time.deltaTime;
if ( _leaveTimer >= 5)
2024-04-15 04:10:00 -07:00
{
2024-04-25 23:57:30 -07:00
_warned = true;
_leaveTimer = 0;
_gameManager.Pause();
PopupManager.Instance.Show("Where Are You?", 10).OnComplete(OnWaringComplete);
CheckPlayBack();
2024-04-15 04:10:00 -07:00
}
2024-04-25 23:57:30 -07:00
}
}
public async void CheckPlayBack () {
while(_warned) {
if(UdpSocket.Instance.DataReceived.Engage) {
2024-04-15 04:10:00 -07:00
_warned = false;
_gameManager.Resume();
PopupManager.Instance.Hide();
2024-04-25 23:57:30 -07:00
}
await UniTask.Yield();
2024-04-15 04:10:00 -07:00
}
2024-04-11 01:55:35 -07:00
}
public override void Exit()
{
_warned = false;
_gameManager.OnEnd -= OnEndGame;
2024-04-11 01:55:35 -07:00
}
private void OnEndGame()
{
Runner.SetState<CTAState>();
2024-04-11 01:55:35 -07:00
}
2024-04-25 23:57:30 -07:00
private async void OnWaringComplete()
{
_gameManager.Resume();
2024-04-25 23:57:30 -07:00
await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.PassByScene.ScenePath);
Runner.SetState<IdleState>();
// if(!UdpSocket.Instance.DataReceived.PassBy)
// {
// Runner.SetState<PassByState>();
// return;
// }
2024-04-25 04:54:33 -07:00
2024-04-25 23:57:30 -07:00
// if(!UdpSocket.Instance.DataReceived.Engage)
// {
// Runner.SetState<ViewedState>();
// return;
// }
2024-04-22 02:10:49 -07:00
// Runner.SetState<EngageState>();
}
2024-04-11 01:55:35 -07:00
}
}