using System;
|
using System.Collections.Generic;
|
|
// 阵型基础
|
|
public partial class TeamBase
|
{
|
|
// 区分一下阵营跟阵容 阵营为一个TeamBase列表 可能是多个玩家组合而成
|
// 阵容为一个TeamBase 是玩家的一个队伍
|
private int teamIndex = 0;//该阵营的第几个队伍
|
|
private uint playerId = 0; //该阵容的玩家id
|
|
private int ShapeType; //本阵容阵型,0为默认阵型,可扩展不同的阵型,如boss特殊战斗阵型,或者其他不同站位的阵型
|
|
public bool IsPlayer
|
{
|
get
|
{
|
return playerId == 0;
|
}
|
}
|
|
public TeamHero[] teamHeros = new TeamHero[TeamConst.MaxTeamSlotCount];
|
|
public TeamBase()
|
{
|
|
}
|
|
public TeamBase(HB424_tagSCTurnFightInit.tagSCTurnFightLineup lineUp)
|
{
|
teamIndex = lineUp.Num;
|
playerId = lineUp.OwnerID;
|
ShapeType = lineUp.ShapeType;
|
|
for (int i = 0; i < lineUp.ObjCnt; i++)
|
{
|
if (i < teamHeros.Length)
|
{
|
TeamHero hero = new TeamHero(lineUp.ObjList[i], this);
|
AddTeamHero(hero);
|
}
|
}
|
|
Update();
|
|
|
}
|
|
protected void Update()
|
{
|
// 检查国籍
|
|
// 检查羁绊
|
|
// 检查阵型
|
|
// 更新队伍英雄属性
|
foreach (var teamHero in teamHeros)
|
{
|
teamHero.Update();
|
}
|
|
// 更新队伍属性
|
// UpdateProperties();
|
|
// CalculatePower();
|
}
|
|
public void SetShapeType(int shapeType)
|
{
|
ShapeType = shapeType;
|
}
|
|
public int GetTeamHeroCount()
|
{
|
int count = 0;
|
for (int i = 0; i < teamHeros.Length; i++)
|
{
|
if (teamHeros[i] != null)
|
{
|
count++;
|
}
|
}
|
|
return count;
|
}
|
|
public bool SwapTeamHero(int index1, int index2)
|
{
|
if (index1 < 0 || index1 >= teamHeros.Length || index2 < 0 || index2 >= teamHeros.Length)
|
{
|
return false;
|
}
|
|
TeamHero temp = teamHeros[index1];
|
teamHeros[index1] = teamHeros[index2];
|
teamHeros[index2] = temp;
|
temp.heroIndex = index2;
|
teamHeros[index1].heroIndex = index1;
|
|
return true;
|
}
|
|
public void AddHeroInfos(List<HeroInfo> heroInfos)
|
{
|
for (int i = 0; i < heroInfos.Count; i++)
|
{
|
AddHeroInfo(heroInfos[i]);
|
}
|
|
UpdateProperties();
|
}
|
|
|
public bool AddHeroInfo(HeroInfo heroInfo)
|
{
|
if (heroInfo == null)
|
{
|
return false;
|
}
|
|
for (int i = 0; i < teamHeros.Length; i++)
|
{
|
if (teamHeros[i] == null)
|
{
|
teamHeros[i] = new TeamHero();
|
teamHeros[i].heroInfo = heroInfo;
|
teamHeros[i].heroIndex = i;
|
UpdateProperties();
|
return true;
|
}
|
}
|
return false;
|
}
|
|
|
public void AddTeamHero(TeamHero teamHero)
|
{
|
if (null == teamHero)
|
{
|
return;
|
}
|
|
teamHeros[teamHero.heroIndex] = teamHero;
|
}
|
|
|
public bool RemoveTeamHero(int index)
|
{
|
if (index < 0 || index >= teamHeros.Length)
|
{
|
return false;
|
}
|
|
teamHeros[index] = null;
|
return true;
|
}
|
|
public bool IsFull()
|
{
|
return GetTeamHeroCount() >= teamHeros.Length;
|
}
|
|
public bool IsEmpty()
|
{
|
return GetTeamHeroCount() == 0;
|
}
|
|
|
#if UNITY_EDITOR
|
public void FillWithFakeData()
|
{
|
for (int i = 0; i < TeamConst.MaxTeamHeroCount; i++)
|
{
|
TeamHero hero = new TeamHero();
|
hero.curHp = 100;
|
hero.heroInfo = new HeroInfo();
|
hero.teamBase = this;
|
hero.heroIndex = i;
|
teamHeros[i] = hero;
|
}
|
}
|
#endif
|
}
|