Frame/Assets/Scripts/Procedure/Logic/GameSceneLogicProcedure.cs

64 lines
1.9 KiB
C#
Raw Normal View History

2024-04-04 23:51:14 +08:00
using System.Collections.Generic;
using Game.Pathfinding;
using JetBrains.Annotations;
using UnityEngine;
using System.Linq;
2024-04-08 18:20:55 +08:00
using System.Threading;
using Cysharp.Threading.Tasks;
using Game.RayCast;
using Game.Room;
2024-04-04 23:51:14 +08:00
namespace Game
2024-04-03 18:07:05 +08:00
{
2024-04-04 23:51:14 +08:00
[Procedure(ProcedureType.GameSceneLogicProcedure)]
2024-04-03 18:07:05 +08:00
class GameSceneLogicProcedure : ProcedureBase
{
2024-04-09 13:22:52 +08:00
private float maxTime = 10f;
GameSceneMainUI sceneMainUI;
2024-04-03 18:07:05 +08:00
public override void OnEnter()
{
base.OnEnter();
2024-04-08 18:20:55 +08:00
EventManager.Instance.Subscribe(InputObjectFinishEventArgs.EventId, InputObjectFinishEvent);
2024-04-09 13:22:52 +08:00
sceneMainUI = Game.uiManager.GetUI<GameSceneMainUI>(UIType.GameSceneMainUI);
UniTask.Create(WaitTimeGoNext);
}
2024-04-04 23:51:14 +08:00
2024-04-09 13:22:52 +08:00
async UniTask WaitTimeGoNext()
{
float time = 0;
while (true)
{
time += Time.deltaTime;
string content = $"({(int)(this.maxTime - time)}) 恐龙即将出现!";
sceneMainUI.UpdateMessage(content);
2024-04-09 13:22:52 +08:00
if (time >= this.maxTime)
{
break;
}
2024-04-04 23:51:14 +08:00
2024-04-09 13:22:52 +08:00
await UniTask.Yield();
}
Game.procedureManager.ChangeProcedure(ProcedureType.GameSceneKillPlayerProcedure);
}
2024-04-03 18:07:05 +08:00
2024-04-08 18:20:55 +08:00
private void InputObjectFinishEvent(object sender, GameEventArgs e)
{
var args = e as InputObjectFinishEventArgs;
var inputData = args.data as MouseInputData;
var roomInfo = inputData.go.GetComponent<RoomInfo>();
UniTask.Create(async () => { await Game.roomManager.JoinRoomAsync(roomInfo.roomType, Game.playerManager.currentPlayer, new CancellationToken()); });
}
2024-04-03 18:07:05 +08:00
public override void OnLeave()
{
base.OnLeave();
2024-04-09 13:22:52 +08:00
EventManager.Instance.Unsubscribe(InputObjectFinishEventArgs.EventId, InputObjectFinishEvent);
2024-04-03 18:07:05 +08:00
}
}
}