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;
|
|
|
|
|
|
|
|
|
|
[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);
|
2024-04-09 18:16:37 +08:00
|
|
|
|
UniTask.Create(this.OpenWarningTips);
|
|
|
|
|
}
|
2024-04-09 13:22:52 +08:00
|
|
|
|
|
2024-04-09 18:16:37 +08:00
|
|
|
|
async UniTask OpenWarningTips()
|
|
|
|
|
{
|
2024-04-09 13:22:52 +08:00
|
|
|
|
sceneMainUI = Game.uiManager.GetUI<GameSceneMainUI>(UIType.GameSceneMainUI);
|
2024-04-09 18:16:37 +08:00
|
|
|
|
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()
|
|
|
|
|
{
|
2024-04-09 18:16:37 +08:00
|
|
|
|
string content = $"恐龙出没!";
|
|
|
|
|
sceneMainUI.UpdateMessage(content);
|
2024-04-09 13:22:52 +08:00
|
|
|
|
|
2024-04-10 16:18:32 +08:00
|
|
|
|
var roomData = Game.roomManager.GetAllRandomRoom();
|
|
|
|
|
await Game.bossManager.MoveToKillPlayerAsync(roomData.killRoom, default);
|
2024-04-09 18:16:37 +08:00
|
|
|
|
|
2024-04-09 13:22:52 +08:00
|
|
|
|
Game.bossManager.DeleteBoss();
|
2024-04-09 18:16:37 +08:00
|
|
|
|
isFinish = true;
|
2024-04-09 13:22:52 +08:00
|
|
|
|
|
2024-04-09 18:16:37 +08:00
|
|
|
|
float jinBei = 0;
|
2024-04-10 16:18:32 +08:00
|
|
|
|
foreach (var room in roomData.killRoom)
|
2024-04-09 13:22:52 +08:00
|
|
|
|
{
|
2024-04-10 16:18:32 +08:00
|
|
|
|
jinBei += room.roomData.jinBeiCount;
|
2024-04-09 13:22:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-04-09 18:16:37 +08:00
|
|
|
|
Debug.Log($"杀掉了随机房间玩家,金贝数量总和为:{jinBei}");
|
|
|
|
|
|
2024-04-10 16:18:32 +08:00
|
|
|
|
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);
|
|
|
|
|
|
2024-04-09 18:16:37 +08:00
|
|
|
|
//TODO:
|
|
|
|
|
UniTask.Create(async () => { await Game.roomManager.QuitAllRoomAsync(default); });
|
|
|
|
|
// await this.sceneMainUI.WaitTimeCloseTips();
|
2024-04-09 13:22:52 +08:00
|
|
|
|
|
2024-04-09 18:16:37 +08:00
|
|
|
|
Game.procedureManager.ChangeProcedure(ProcedureType.GameSceneSettlementProcedure);
|
2024-04-09 13:22:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-04-09 18:16:37 +08:00
|
|
|
|
private bool isFinish;
|
|
|
|
|
|
2024-04-09 13:22:52 +08:00
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|