hch
7 天以前 cb653cf75b17b9bdca0b5b9e6b88edf1ca72e90c
Main/System/Team/TeamManager.cs
@@ -1,21 +1,76 @@
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 override void Init()
    {
        base.Init();
   public Action<TeamType> OnTeamChange = null;
   public override void Init()
   {
      base.Init();
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
    }
    public override void Release()
    {
        base.Release();
   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)
   {
@@ -23,22 +78,9 @@
      if (!teamDict.TryGetValue(teamType, out team))
      {
         team = GetStoryTeam();
         team = new TeamBase(teamType);
         // team.CreateDefault(HeroManager.Instance.GetPowerfulHeroList());
         teamDict.Add(teamType, team);
      }
      return team;
   }
   public TeamBase GetStoryTeam()
   {
      TeamBase team = null;
      if (!teamDict.TryGetValue(TeamType.Story, out team))
      {
         team = new TeamBase();
         team.AddTeamHeros(HeroManager.Instance.GetPowerfulHeroList());
         teamDict.Add(TeamType.Story, team);
      }
      return team;