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

67 lines
1.9 KiB
C#

using System;
using Cysharp.Threading.Tasks;
using GadGame.Manager;
using GadGame.Network;
using UnityEngine;
namespace GadGame.State.MainFlowState
{
public class CTAState : State<MainFlow>
{
private bool _scanSuccess;
private float _leaveTimer;
public override async void Enter()
{
_leaveTimer = 0;
_scanSuccess = false;
Runner.ScanSuccess.Register(OnScanSuccess);
await LoadSceneManager.Instance.LoadSceneAsync(Runner.SceneFlowConfig.CTASceneMale.ScenePath);
}
public override void Update(float time)
{
Runner.EncodeImage.Raise(UdpSocket.Instance.DataReceived.StreamingData);
if(_scanSuccess || time >= 30)
{
Runner.SetState<IdleState>();
UdpSocket.Instance.SendDataToPython("End");
return;
}
if (!UdpSocket.Instance.DataReceived.Engage)
{
_leaveTimer += Time.deltaTime;
if ( _leaveTimer >= 10)
{
Runner.SetState<IdleState>();
UdpSocket.Instance.SendDataToPython("End");
}
} else {
_leaveTimer = 0;
}
// if (time >= 30)
// {
// Runner.SetState<IdleState>();
// UdpSocket.Instance.SendDataToPython("End");
// }
}
public override void Exit()
{
Runner.ScanSuccess.Unregister(OnScanSuccess);
LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.PassByScene.ScenePath);
}
private async void OnScanSuccess() {
_scanSuccess = true;
await UniTask.Delay(TimeSpan.FromSeconds(10));
}
private void LeaveComplete()
{
Runner.SetState<IdleState>();
}
}
}