using UnityEngine; public partial class TeamHero { public int heroId; public HeroCountry Country; public int SkinID; public HeroSkinConfig skinConfig; public string guid; public float modelScale = 1f; public int level = 0; public string name; public TeamBase teamBase { get; private set; } public int positionNum; //注意服务端的1号位是1,客户端在使用时是0,通信和策划沟通用1 // 战场数据 public int ObjID = 0;// 战斗单位唯一ID public int NPCID = 0;// 战斗NPCID,不同的实例ID对应的NPCID可能一样 (目前只用来区别玩家跟NPC) // 服务器来的构造 public TeamHero(HB424_tagSCTurnFightInit.tagSCTurnFightObj fightObj, TeamBase _teamBase) { // 判断一下是npc还是玩家 heroId = (int)fightObj.HeroID; // B4 24 回合战斗初始化 #tagSCTurnFightInit // 封包中的 HeroID、SkinID 字段不再是玩家阵容独有,NPC阵容也可能有值,一般是关联武将的NPC有值 // 如果 HeroID、SkinID 不为空,则可认为是关联武将的NPC,外观相关默认通过HeroID读取武将相关,如名称 // 皮肤 SkinID 不为空时,则模型默认使用该皮肤 // 如果 HeroID、SkinID 为空, NPCID不为空,则走原NPC默认规则 // 补充 skinid跟heroid要么同时没有 要么同时有 如果这三个id都没有的话 那就是配置严重错误 无法弥补 if (fightObj.SkinID > 0 && fightObj.HeroID > 0) { // 走玩家逻辑 var heroConfig = HeroConfig.Get(heroId); if (null == heroConfig) { Debug.LogError("hero config is null, heroId : " + heroId); return; } Country = (HeroCountry)heroConfig.Country; SkinID = (int)fightObj.SkinID; modelScale = 1f; name = heroConfig.Name; } else { throw new System.Exception("hero id and skin id are both invalid, npc id is invalid too (all <= 0)"); } if (fightObj.NPCID > 0) { NPCConfig npcConfig = NPCConfig.Get((int)fightObj.NPCID); if (null != npcConfig) { modelScale = npcConfig.ModelScale; } } level = (int)fightObj.LV; skinConfig = HeroSkinConfig.Get(SkinID); teamBase = _teamBase; ObjID = (int)fightObj.ObjID; NPCID = (int)fightObj.NPCID; // HPEx * 1亿 + HP curHp = (long)fightObj.HPEx * (long)Constants.ExpPointValue + (long)fightObj.HP; maxHp = (long)fightObj.MaxHPEx * (long)Constants.ExpPointValue + (long)fightObj.MaxHP; rage = (int)fightObj.AngreXP; positionNum = fightObj.PosNum - 1; // 【重要】战斗构成里没有卡牌的guid guid = string.Empty; Update(); } private static int DecreasingObjID = 0; // 布阵时的构造 public TeamHero(HeroInfo heroInfo, int posNum, TeamBase _teamBase) { heroId = heroInfo.itemHero.config.ID; SkinID = heroInfo.SkinID; skinConfig = heroInfo.skinConfig; Country = heroInfo.heroCountry; teamBase = _teamBase; ObjID = --DecreasingObjID; NPCID = 0; curHp = heroInfo.hp; maxHp = heroInfo.hp; rage = 0; positionNum = posNum; // 【重要】布阵里的要guid guid = heroInfo.itemHero.guid; Update(); } public void OnSwapPosition(TeamHero teamHero) { teamBase.SwapPosition(positionNum, teamHero.positionNum); Update(); } public void Update() { } // 最终属性 当前属性应该是要在这一层的 public int GetPower() { // 计算战斗力YYL TODO return 0; } }