2024-04-25 23:57:30 -07:00
|
|
|
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;
|
|
|
|
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 PlayGameState : State<MainFlow>
|
|
|
|
{
|
|
|
|
private GameManager _gameManager;
|
2024-04-15 04:10:00 -07:00
|
|
|
private float _leaveTimer;
|
|
|
|
private bool _warned;
|
2024-04-11 01:55:35 -07:00
|
|
|
|
|
|
|
public override async void Enter()
|
|
|
|
{
|
2024-06-18 23:34:19 -07:00
|
|
|
if(UdpSocket.Instance.DataReceived.Gender < 0.5f)
|
|
|
|
{
|
|
|
|
await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.GameMaleScene.ScenePath);
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.GameFemaleScene.ScenePath);
|
|
|
|
}
|
2024-04-11 01:55:35 -07:00
|
|
|
_gameManager = GameManager.Instance;
|
|
|
|
_gameManager.OnEnd += OnEndGame;
|
2024-04-22 02:10:49 -07:00
|
|
|
_leaveTimer = 0;
|
2024-04-11 01:55:35 -07:00
|
|
|
}
|
|
|
|
|
2024-04-15 04:10:00 -07:00
|
|
|
public override void Update(float time)
|
2024-04-11 01:55:35 -07:00
|
|
|
{
|
2024-04-16 02:27:28 -07:00
|
|
|
UdpSocket.Instance.SendDataToPython("1");
|
2024-04-25 23:57:30 -07:00
|
|
|
if(!GameManager.Instance.Playing) return;
|
|
|
|
|
|
|
|
if(!_warned && !UdpSocket.Instance.DataReceived.Engage) {
|
|
|
|
_leaveTimer += Time.deltaTime;
|
|
|
|
if ( _leaveTimer >= 5)
|
2024-04-15 04:10:00 -07:00
|
|
|
{
|
2024-04-25 23:57:30 -07:00
|
|
|
_warned = true;
|
|
|
|
_leaveTimer = 0;
|
|
|
|
_gameManager.Pause();
|
|
|
|
PopupManager.Instance.Show("Where Are You?", 10).OnComplete(OnWaringComplete);
|
|
|
|
CheckPlayBack();
|
2024-04-15 04:10:00 -07:00
|
|
|
}
|
2024-04-25 23:57:30 -07:00
|
|
|
}
|
2024-06-18 23:34:19 -07:00
|
|
|
}
|
2024-04-25 23:57:30 -07:00
|
|
|
|
|
|
|
public async void CheckPlayBack () {
|
|
|
|
while(_warned) {
|
|
|
|
if(UdpSocket.Instance.DataReceived.Engage) {
|
2024-04-15 04:10:00 -07:00
|
|
|
_warned = false;
|
|
|
|
_gameManager.Resume();
|
|
|
|
PopupManager.Instance.Hide();
|
2024-04-25 23:57:30 -07:00
|
|
|
}
|
|
|
|
await UniTask.Yield();
|
2024-04-15 04:10:00 -07:00
|
|
|
}
|
2024-04-11 01:55:35 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
public override void Exit()
|
|
|
|
{
|
2024-04-17 20:53:46 -07:00
|
|
|
_warned = false;
|
2024-04-19 03:46:17 -07:00
|
|
|
_gameManager.OnEnd -= OnEndGame;
|
2024-04-11 01:55:35 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnEndGame()
|
|
|
|
{
|
2024-04-19 03:46:17 -07:00
|
|
|
Runner.SetState<CTAState>();
|
2024-04-11 01:55:35 -07:00
|
|
|
}
|
2024-04-17 20:53:46 -07:00
|
|
|
|
2024-04-25 23:57:30 -07:00
|
|
|
private async void OnWaringComplete()
|
2024-04-17 20:53:46 -07:00
|
|
|
{
|
|
|
|
_gameManager.Resume();
|
2024-04-25 23:57:30 -07:00
|
|
|
await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.PassByScene.ScenePath);
|
|
|
|
Runner.SetState<IdleState>();
|
|
|
|
// if(!UdpSocket.Instance.DataReceived.PassBy)
|
|
|
|
// {
|
|
|
|
// Runner.SetState<PassByState>();
|
|
|
|
// return;
|
|
|
|
// }
|
2024-04-25 04:54:33 -07:00
|
|
|
|
2024-04-25 23:57:30 -07:00
|
|
|
// if(!UdpSocket.Instance.DataReceived.Engage)
|
|
|
|
// {
|
|
|
|
// Runner.SetState<ViewedState>();
|
|
|
|
// return;
|
|
|
|
// }
|
2024-04-22 02:10:49 -07:00
|
|
|
// Runner.SetState<EngageState>();
|
2024-04-17 20:53:46 -07:00
|
|
|
}
|
2024-04-11 01:55:35 -07:00
|
|
|
}
|
|
|
|
}
|