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);
}
}
}