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

67 lines
1.9 KiB
C#
Raw Normal View History

2024-05-24 01:16:15 -07:00
using System;
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;
2024-06-18 23:34:19 -07:00
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 CTAState : State<MainFlow>
{
2024-05-24 01:16:15 -07:00
private bool _scanSuccess;
2024-06-18 23:34:19 -07:00
private float _leaveTimer;
2024-05-24 01:16:15 -07:00
public override async void Enter()
2024-04-11 01:55:35 -07:00
{
2024-06-18 23:34:19 -07:00
_leaveTimer = 0;
2024-06-27 01:08:10 -07:00
_scanSuccess = false;
Runner.ScanSuccess.Register(OnScanSuccess);
await LoadSceneManager.Instance.LoadSceneAsync(Runner.SceneFlowConfig.CTASceneMale.ScenePath);
2024-04-11 01:55:35 -07:00
}
2024-06-18 23:34:19 -07:00
public override void Update(float time)
2024-04-11 01:55:35 -07:00
{
2024-06-23 19:17:43 -07:00
Runner.EncodeImage.Raise(UdpSocket.Instance.DataReceived.StreamingData);
2024-06-28 01:19:00 -07:00
if(_scanSuccess || time >= 30)
2024-06-25 01:40:52 -07:00
{
Runner.SetState<IdleState>();
2024-06-27 01:08:10 -07:00
UdpSocket.Instance.SendDataToPython("End");
2024-06-25 01:40:52 -07:00
return;
}
2024-06-18 23:34:19 -07:00
if (!UdpSocket.Instance.DataReceived.Engage)
{
_leaveTimer += Time.deltaTime;
if ( _leaveTimer >= 10)
{
Runner.SetState<IdleState>();
2024-06-27 01:08:10 -07:00
UdpSocket.Instance.SendDataToPython("End");
2024-06-18 23:34:19 -07:00
}
} else {
_leaveTimer = 0;
}
2024-06-27 01:08:10 -07:00
// if (time >= 30)
// {
// Runner.SetState<IdleState>();
// UdpSocket.Instance.SendDataToPython("End");
// }
2024-04-11 01:55:35 -07:00
}
public override void Exit()
{
2024-06-19 02:32:17 -07:00
Runner.ScanSuccess.Unregister(OnScanSuccess);
2024-06-18 23:34:19 -07:00
LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.PassByScene.ScenePath);
2024-05-24 01:16:15 -07:00
}
2024-05-24 01:16:15 -07:00
private async void OnScanSuccess() {
_scanSuccess = true;
await UniTask.Delay(TimeSpan.FromSeconds(10));
2024-06-18 23:34:19 -07:00
}
private void LeaveComplete()
{
2024-05-24 01:16:15 -07:00
Runner.SetState<IdleState>();
2024-04-11 01:55:35 -07:00
}
}
}