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); UniTask.Create(this.OpenWarningTips); } async UniTask OpenWarningTips() { sceneMainUI = Game.uiManager.GetUI(UIType.GameSceneMainUI); await this.sceneMainUI.WaitTimeCloseTips(); UniTask.Create(this.WaitKillFinish); // UniTask.Create(this.WaitTimeGoNext); isFinish = false; } async UniTask WaitKillFinish() { string content = $"恐龙出没!"; sceneMainUI.UpdateMessage(content); var allRoom = Game.roomManager.GetAllRandomRoom(); await Game.bossManager.MoveToKillPlayerAsync(allRoom, default); Game.bossManager.DeleteBoss(); isFinish = true; float jinBei = 0; foreach (var room in allRoom) { jinBei += room.roomData.jinbei; } Debug.Log($"杀掉了随机房间玩家,金贝数量总和为:{jinBei}"); //TODO: UniTask.Create(async () => { await Game.roomManager.QuitAllRoomAsync(default); }); // await this.sceneMainUI.WaitTimeCloseTips(); Game.procedureManager.ChangeProcedure(ProcedureType.GameSceneSettlementProcedure); } private bool isFinish; // async UniTask WaitTimeGoNext() // { // float time = 0f; // while (true) // { // time += Time.deltaTime; // string content = $"({(int)time}) 恐龙出没!"; // sceneMainUI.UpdateMessage(content); // if (isFinish || time >= this.maxTime) // { // break; // } // // await UniTask.Yield(); // } // // await UniTask.Delay(1000); // Game.procedureManager.ChangeProcedure(ProcedureType.GameSceneSettlementProcedure); // } 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); } }