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(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(); 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(); 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); } }