164 lines
3.5 KiB
C#
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
|
|
|
|
} |