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() { if(UdpSocket.Instance.DataReceived.Gender < 0.5f) { await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.CTASceneMale.ScenePath); } else { await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.CTASceneFemale.ScenePath); } Runner.ScanSuccess.Register(OnScanSuccess); _leaveTimer = 0; } public override void Update(float time) { if(_scanSuccess) return; if (!UdpSocket.Instance.DataReceived.Engage) { _leaveTimer += Time.deltaTime; if ( _leaveTimer >= 10) { Runner.SetState(); } } else { _leaveTimer = 0; } if (time >= 60) { Runner.SetState(); } } 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(); } } }