forked from zxl/Frame
1
0
Fork 0
Frame/Assets/Scripts/Procedure/Logic/GameSceneKillPlayerProcedur...

83 lines
2.4 KiB
C#

using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using Game.RayCast;
using Game.Room;
using UnityEngine;
using Random = UnityEngine.Random;
namespace Game;
[Procedure(ProcedureType.GameSceneKillPlayerProcedure)]
class GameSceneKillPlayerProcedure : ProcedureBase
{
private float maxTime = 10f;
GameSceneMainUI sceneMainUI;
public override void OnEnter()
{
base.OnEnter();
EventManager.Instance.Subscribe(InputObjectFinishEventArgs.EventId, this.InputObjectFinishEvent);
sceneMainUI = Game.uiManager.GetUI<GameSceneMainUI>(UIType.GameSceneMainUI);
UniTask.Create(this.WaitKillFinish);
UniTask.Create(this.WaitTimeGoNext);
}
async UniTask WaitKillFinish()
{
// var allRoom = Game.roomManager.GetAllRoom();
// var range = Random.Range(1, allRoom.Count - 1);
// for (var i = 0; i < range; i++)
// {
// var range1 = Random.Range(0, allRoom.Count);
// allRoom.RemoveAt(range1);
// }
var allRoom = new List<IRoom>();
var room = Game.roomManager.GetRoom(RoomType.);
allRoom.Add(room);
await Game.bossManager.MoveToKillPlayerAsync(allRoom, default);
Game.bossManager.DeleteBoss();
}
async UniTask WaitTimeGoNext()
{
float time = 0f;
while (true)
{
time += Time.deltaTime;
string content = $"({(int)time}) 恐龙出没!";
sceneMainUI.UpdateMessage(content);
if (time >= this.maxTime)
{
break;
}
await UniTask.Yield();
}
Game.procedureManager.ChangeProcedure(ProcedureType.GameSceneLogicProcedure);
}
private void InputObjectFinishEvent(object sender, GameEventArgs e)
{
var args = e as InputObjectFinishEventArgs;
// var inputData = args.data as MouseInputData;
// var roomInfo = inputData.go.GetComponent<RoomInfo>();
Debug.Log("未到选择房间时间!");
// UniTask.Create(async () => { await Game.roomManager.JoinRoomAsync(roomInfo.roomType, Game.playerManager.currentPlayer, new CancellationToken()); });
}
public override void OnLeave()
{
base.OnLeave();
EventManager.Instance.Unsubscribe(InputObjectFinishEventArgs.EventId, this.InputObjectFinishEvent);
}
}