using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using UnityEngine; 
 | 
using System; 
 | 
  
 | 
  
 | 
public class TeamManager : GameSystemManager<TeamManager> 
 | 
{ 
 | 
    protected Dictionary<TeamType, TeamBase> teamDict = new Dictionary<TeamType, TeamBase>(); 
 | 
  
 | 
    public Action<TeamType> OnTeamChange = null; 
 | 
  
 | 
    public override void Init() 
 | 
    { 
 | 
        base.Init(); 
 | 
         
 | 
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; 
 | 
    } 
 | 
  
 | 
    public override void Release() 
 | 
    { 
 | 
        base.Release(); 
 | 
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; 
 | 
    } 
 | 
  
 | 
    protected void OnBeforePlayerDataInitialize() 
 | 
    { 
 | 
        teamDict.Clear(); 
 | 
    } 
 | 
  
 | 
    public void OnHeroChangeEvent(HB124_tagSCLineupInfo vNetData) 
 | 
    { 
 | 
        var heroPack = PackManager.Instance.GetSinglePack(PackType.Hero); 
 | 
        HashSet<TeamType> teamTypeSet = new HashSet<TeamType>(); 
 | 
        for (int i = 0; i < vNetData.LineupCnt; i++) 
 | 
        { 
 | 
            TeamType teamType = (TeamType)vNetData.LineupList[i].LineupID; 
 | 
            teamTypeSet.Add(teamType); 
 | 
            var team = GetTeam(teamType); 
 | 
            for (int j = 0; j < vNetData.LineupList[i].HeroCnt; j++) 
 | 
            { 
 | 
                int index = vNetData.LineupList[i].HeroItemIndexList[j]; 
 | 
                HeroInfo hero; 
 | 
                if (index == 0) 
 | 
                { 
 | 
                    hero = null; 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    var item = heroPack.GetItemByIndex(vNetData.LineupList[i].HeroItemIndexList[j] - 1); 
 | 
                    if (item == null) 
 | 
                    { 
 | 
                        hero = null; 
 | 
                        Debug.LogError("没有对应的武将数据!"); 
 | 
                    } 
 | 
                    hero = HeroManager.Instance.GetHero(item.guid); 
 | 
  
 | 
                } 
 | 
                team.RefreshServerData(vNetData.LineupList[i].ShapeType, j, hero); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        foreach (var tt in teamTypeSet) 
 | 
        { 
 | 
            OnTeamChange?.Invoke(tt); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    public bool HasTeam(TeamType teamType) 
 | 
    { 
 | 
        return teamDict.ContainsKey(teamType); 
 | 
    } 
 | 
  
 | 
    public TeamBase GetTeam(TeamType teamType) 
 | 
    { 
 | 
        TeamBase team = null; 
 | 
  
 | 
        if (!teamDict.TryGetValue(teamType, out team)) 
 | 
        { 
 | 
            team = new TeamBase(teamType); 
 | 
            // team.CreateDefault(HeroManager.Instance.GetPowerfulHeroList()); 
 | 
            teamDict.Add(teamType, team); 
 | 
        } 
 | 
  
 | 
        return team; 
 | 
    } 
 | 
} 
 |