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

66 lines
1.8 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-05-24 01:16:15 -07:00
if(UdpSocket.Instance.DataReceived.Gender < 0.5f)
{
await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.CTASceneMale.ScenePath);
} else
{
await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.CTASceneFemale.ScenePath);
2024-04-23 20:04:04 -07:00
}
2024-06-19 02:32:17 -07:00
Runner.ScanSuccess.Register(OnScanSuccess);
2024-06-18 23:34:19 -07:00
_leaveTimer = 0;
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-05-24 01:16:15 -07:00
if(_scanSuccess) return;
2024-06-18 23:34:19 -07:00
if (!UdpSocket.Instance.DataReceived.Engage)
{
_leaveTimer += Time.deltaTime;
if ( _leaveTimer >= 10)
{
Runner.SetState<IdleState>();
}
} else {
_leaveTimer = 0;
}
2024-05-24 01:16:15 -07:00
if (time >= 60)
2024-04-15 04:10:00 -07:00
{
2024-04-25 04:54:33 -07:00
Runner.SetState<IdleState>();
2024-04-15 04:10:00 -07:00
}
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
Runner.SetState<IdleState>();
}
private void LeaveComplete()
{
2024-05-24 01:16:15 -07:00
Runner.SetState<IdleState>();
2024-04-11 01:55:35 -07:00
}
}
}