NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Team/FightTeamManager.cs

164 lines
3.5 KiB
C#

using System.Collections.Generic;
using Gameplay.Unit;
public class FightTeamManager
{
public static FightTeamManager Instance
{
get
{
if (_instance == null)
{
_instance = new FightTeamManager();
}
return _instance;
}
}
private static FightTeamManager _instance;
private FightTeamManager()
{
}
/// <summary>
/// 设置转换战斗阶段窗口
/// </summary>
public static UIWindow FightTeamWindow => _fightTeamWindow;
private static UIWindow _fightTeamWindow;
public static List<UIWindow> FightTeamWindows = new();
public static void SetFightTeamWindow(UIWindow window)
{
_fightTeamWindow = window;
_fightTeamWindow.IsUnEnabled = true;
}
public static void AddFightTeamWindow( params UIWindow[] windows)
{
FightTeamWindows.Clear();
foreach (var window in windows)
{
FightTeamWindows.Add(window);
window.IsUnEnabled = true;
}
}
public static void ActiveFightTeamWindow()
{
Instance.Init();
_fightTeamWindow.IsUnEnabled = false;
_fightTeamWindow?.ShowWindow();
foreach (var window in FightTeamWindows)
{
window.IsUnEnabled = false;
window.ShowWindow();
}
}
/// <summary>
/// 上阵ID列表
/// </summary>
private List<uint> _fightIDList;
/// <summary>
/// 上阵Unit的TeamUnit数据集合
/// </summary>
private Dictionary<uint, TeamUnitInfo> _onFightUnitInfos;
/// <summary>
/// 指挥官技能
/// </summary>
private CommandSkillManager _commonSkillMgr;
public CommandSkillManager CommandSkillMgr => _commonSkillMgr;
#region Init
private void _Init()
{
_fightIDList = new();
_onFightUnitInfos = new();
//_commonSkillMgr = TeamManager.Instance.CommonSkillMgr;
var fightIDList = TeamManager.Instance.GetFightList();
foreach (var uid in fightIDList)
{
var unit = TeamManager.Instance.GetTeamUnitInfoByUid(uid);
if (unit == null)
{
DebugUtil.LogError($"无法获取已上阵角色TeamUnitInfo, uid:{uid}");
}
_fightIDList.Add(uid);
_onFightUnitInfos.Add(uid, unit);
}
}
private void _Release()
{
_fightIDList.Clear();
_onFightUnitInfos.Clear();
}
#endregion
#region API
/// <summary>
/// 初始化
/// </summary>
public void Init()
{
_Init();
}
public void Release()
{
_Release();
}
public void StartBattle()
{
}
/// <summary>
/// 获取指挥官技能
/// </summary>
public void InitCommandSkillMgr()
{
_commonSkillMgr = TeamManager.Instance.CommonSkillMgr;
}
/// <summary>
/// 获取战斗上阵ID列表
/// </summary>
/// <returns></returns>
public List<uint> GetFightIDList()
{
return _fightIDList;
}
/// <summary>
/// 获取战斗上阵的TeamUnitInfo集合
/// </summary>
/// <returns></returns>
public Dictionary<uint, TeamUnitInfo> GetFightTeamUnitInfos()
{
return _onFightUnitInfos;
}
public TeamUnitInfo GetFightTeamUnitInfo(uint uid)
{
if (_onFightUnitInfos.TryGetValue(uid, out var unitInfo))
{
return unitInfo;
}
return null;
}
#endregion
}