forked from zxl/Frame
1
0
Fork 0
Frame/Assets/Scripts/Boss/IBossManager.cs

57 lines
1.4 KiB
C#

using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using Game.Room;
using UnityEngine;
namespace Game.Boss;
public interface IBossManager
{
IReadOnlyList<IBoss> bosses { get; }
UniTask MoveToKillPlayerAsync(List<IRoom> rooms, CancellationToken token);
void DeleteBoss();
}
public class BossManager : ManagerBase, IBossManager
{
private List<IBoss> _bosses;
public IReadOnlyList<IBoss> bosses => this._bosses;
public async UniTask MoveToKillPlayerAsync(List<IRoom> rooms, CancellationToken token)
{
this._bosses = new List<IBoss>();
foreach (var room in rooms)
{
IBoss boss = new Boss();
var gameObject = Game.resourceManager.LoadGameObjectSync("boss1");
boss.SetGameObject(gameObject, room);
_bosses.Add(boss);
}
float jinBei = 0;
List<UniTask> uniTasks = new List<UniTask>();
foreach (var boss in this._bosses)
{
jinBei += boss.room.roomData.jinbei;
var uniTask = boss.WaitMoveRoomAndKillAsync(token);
uniTasks.Add(uniTask);
}
await UniTask.WhenAll(uniTasks);
Debug.Log($"杀掉了随机房间玩家,金贝数量总和为:{jinBei}");
}
public void DeleteBoss()
{
foreach (var boss in this._bosses)
{
boss.Dispose();
}
this._bosses.Clear();
}
}