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

104 lines
3.6 KiB
C#
Raw Normal View History

2024-04-09 13:22:52 +08:00
using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
2024-04-10 16:18:32 +08:00
using Game.Player;
2024-04-09 13:22:52 +08:00
using Game.RayCast;
using Game.Room;
using UnityEngine;
using Random = UnityEngine.Random;
namespace Game
2024-04-09 13:22:52 +08:00
{
[Procedure(ProcedureType.GameSceneKillPlayerProcedure)]
class GameSceneKillPlayerProcedure : ProcedureBase
2024-04-09 13:22:52 +08:00
{
private float maxTime = 10f;
GameSceneMainUI sceneMainUI;
2024-04-09 13:22:52 +08:00
public override void OnEnter()
{
base.OnEnter();
2024-04-09 13:22:52 +08:00
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();
2024-04-09 13:22:52 +08:00
UniTask.Create(this.WaitKillFinish);
2024-04-09 18:16:37 +08:00
// UniTask.Create(this.WaitTimeGoNext);
isFinish = false;
}
2024-04-09 13:22:52 +08:00
async UniTask WaitKillFinish()
{
string content = $"恐龙出没!";
sceneMainUI.UpdateMessage(content);
2024-04-09 13:22:52 +08:00
var roomData = Game.roomManager.GetAllRandomRoom();
await Game.bossManager.MoveToKillPlayerAsync(roomData.killRoom, default);
2024-04-09 18:16:37 +08:00
Game.bossManager.DeleteBoss();
isFinish = true;
2024-04-09 13:22:52 +08:00
float jinBei = 0;
foreach (var room in roomData.killRoom)
{
jinBei += room.roomData.jinBeiCount;
}
2024-04-09 13:22:52 +08:00
Debug.Log($"杀掉了随机房间玩家,金贝数量总和为:{jinBei}");
2024-04-09 18:16:37 +08:00
List<IPlayer> players = new List<IPlayer>();
foreach (var room in roomData.survivorRoom)
2024-04-10 16:18:32 +08:00
{
foreach (var roomPlayer in room.players)
{
Debug.Log($"幸存者:{roomPlayer.playerName}");
players.Add(roomPlayer);
}
2024-04-10 16:18:32 +08:00
}
if (players.Count > 0)
jinBei /= players.Count;
2024-04-10 16:18:32 +08:00
Debug.Log($"胜利总金贝: is {jinBei}");
EventManager.Instance.FireNow(this, new JinBeiSettlementEventArgs(players, jinBei));
2024-04-10 16:18:32 +08:00
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);
2024-04-10 16:18:32 +08:00
//TODO:
UniTask.Create(async () => { await Game.roomManager.QuitAllRoomAsync(default); });
2024-04-09 18:16:37 +08:00
// await this.sceneMainUI.WaitTimeCloseTips();
2024-04-09 13:22:52 +08:00
Game.procedureManager.ChangeProcedure(ProcedureType.GameSceneSettlementProcedure);
}
2024-04-09 13:22:52 +08:00
private bool isFinish;
2024-04-09 18:16:37 +08:00
private void InputObjectFinishEvent(object sender, GameEventArgs e)
{
var args = e as InputObjectFinishEventArgs;
2024-04-09 13:22:52 +08:00
// var inputData = args.data as MouseInputData;
// var roomInfo = inputData.go.GetComponent<RoomInfo>();
Debug.Log("未到选择房间时间!");
2024-04-09 13:22:52 +08:00
// UniTask.Create(async () => { await Game.roomManager.JoinRoomAsync(roomInfo.roomType, Game.playerManager.currentPlayer, new CancellationToken()); });
}
2024-04-09 13:22:52 +08:00
public override void OnLeave()
{
base.OnLeave();
EventManager.Instance.Unsubscribe(InputObjectFinishEventArgs.EventId, this.InputObjectFinishEvent);
}
2024-04-09 13:22:52 +08:00
}
}