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