using System.Collections.Generic; using Core.Utility; using Fort23.UTool; namespace GameLogic.Hero { public class HeroController { /// /// 所有英雄 /// public Dictionary allHeroDic = new Dictionary(); /// /// 也可以叫主力(afk的共鸣英雄),替补英雄等级=主力英雄的最低等级(和afk一样的) /// 主力英雄不一定等于上阵英雄,主力英雄只是决定了共鸣等级 /// public Dictionary heroDicInLead = new Dictionary(4); /// /// 后备英雄(共享等级) /// public Dictionary heroDicInBack = new Dictionary(); public void InitHeroes() { for (int i = 0; i < AccountFileInfo.Instance.playerData.HeroListData.Count; i++) { AccountFileInfo.HeroData heroData = AccountFileInfo.Instance.playerData.HeroListData[i]; HeroInfo heroInfo = new HeroInfo(); heroInfo.InitHero(heroData); AddHero(heroInfo); } } /// /// 获取英雄 /// /// 英雄ID modelID /// public CombatHeroInfo GetHeroInfo(int modelID) { if (allHeroDic.ContainsKey(modelID)) { return allHeroDic[modelID]; } LogTool.Error("没有这个英雄" + modelID); return null; } /// /// 添加英雄 /// /// public void AddHero(HeroInfo heroInfo) { if (heroInfo.isLead) { DeployHeroToLead(heroInfo); } else { DeployHeroToBack(heroInfo); } } /// /// 进入主力队伍 /// /// public void DeployHeroToLead(HeroInfo heroInfo) { if (heroDicInLead.Count >= GlobalParam.Max_Deploy_HERO) { return; } if (heroDicInLead.ContainsKey(heroInfo.modelID)) { LogTool.Error("heroDicInLead不应该出现相同的英雄ID=" + heroInfo.modelID); return; } heroDicInLead.Add(heroInfo.modelID, heroInfo); heroInfo.isLead = true; allHeroDic.Add(heroInfo.modelID, heroInfo); } /// /// 更换主力 /// /// public void ChangeLeadHero(HeroInfo backHero, HeroInfo leadHero) { if (!heroDicInLead.ContainsKey(leadHero.modelID)) { LogTool.Error("不是主力" + leadHero.modelID); return; } if (!heroDicInBack.ContainsKey(backHero.modelID)) { LogTool.Error("不是替补" + backHero.modelID); return; } //从主力中移除,并加入后补 heroDicInLead.Remove(leadHero.modelID); DeployHeroToBack(leadHero); //从后补中移除,并加入主力 heroDicInBack.Remove(backHero.modelID); DeployHeroToLead(backHero); } /// /// 进入后备队伍(英雄背包) /// /// public void DeployHeroToBack(HeroInfo heroInfo) { if (heroDicInBack.ContainsKey(heroInfo.modelID)) { LogTool.Error("heroDicInBack不应该出现相同的英雄ID=" + heroInfo.modelID); return; } heroDicInBack.Add(heroInfo.modelID, heroInfo); heroInfo.isLead = false; allHeroDic.Add(heroInfo.modelID, heroInfo); } } }