83 lines
2.4 KiB
C#
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);
|
|||
|
}
|
|||
|
}
|