Frame/Assets/Scripts/Procedure/Logic/GameSceneKillPlayerProcedur...

104 lines
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using Game.Player;
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);
EventManager.Instance.FireNow(this, new BossStartMoveEventArgs(true));
UniTask.Create(this.OpenWarningTips);
}
async UniTask OpenWarningTips()
{
sceneMainUI = Game.uiManager.GetUI<GameSceneMainUI>(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 roomData = Game.roomManager.GetAllRandomRoom();
await Game.bossManager.MoveToKillPlayerAsync(roomData.killRoom, default);
Game.bossManager.DeleteBoss();
isFinish = true;
float jinBei = 0;
foreach (var room in roomData.killRoom)
{
jinBei += room.roomData.jinBeiCount;
}
Debug.Log($"杀掉了随机房间玩家,金贝数量总和为:{jinBei}");
List<IPlayer> players = new List<IPlayer>();
foreach (var room in roomData.survivorRoom)
{
foreach (var roomPlayer in room.players)
{
Debug.Log($"幸存者:{roomPlayer.playerName}");
players.Add(roomPlayer);
}
}
if (players.Count > 0)
jinBei /= players.Count;
Debug.Log($"胜利总金贝: is {jinBei}");
EventManager.Instance.FireNow(this, new JinBeiSettlementEventArgs(players, jinBei));
var resultUI = Game.uiManager.GetUI<GameSceneResultUI>(UIType.GameSceneResultUI);
if (players.Contains(Game.playerManager.currentPlayer))
resultUI.SetResult($"恭喜你躲避成功,胜利总金贝:{jinBei},你得到的金贝:{jinBei}", true);
else
resultUI.SetResult($"躲避失败,胜利总金贝:{jinBei}你得到的金贝0", false);
//TODO:
UniTask.Create(async () => { await Game.roomManager.QuitAllRoomAsync(default); });
// await this.sceneMainUI.WaitTimeCloseTips();
Game.procedureManager.ChangeProcedure(ProcedureType.GameSceneSettlementProcedure);
}
private bool isFinish;
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);
}
}
}