using System; using Cysharp.Threading.Tasks; using GadGame.Manager; using GadGame.Network; using UnityEngine; namespace GadGame.State.MainFlowState { public class CTAState : State { private bool _scanSuccess; private float _leaveTimer; public override async void Enter() { await LoadSceneManager.Instance.LoadSceneAsync(Runner.SceneFlowConfig.CTASceneMale.ScenePath); Runner.ScanSuccess.Register(OnScanSuccess); _leaveTimer = 0; } public override void Update(float time) { Runner.EncodeImage.Raise(UdpSocket.Instance.DataReceived.StreamingData); if(_scanSuccess) return; if (!UdpSocket.Instance.DataReceived.Engage) { _leaveTimer += Time.deltaTime; if ( _leaveTimer >= 10) { Runner.SetState(); } } else { _leaveTimer = 0; } if (time >= 60) { Runner.SetState(); 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)); Runner.SetState(); } private void LeaveComplete() { Runner.SetState(); } } }