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可能一样
|
|
|
// 服务器来的构造
|
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 if (fightObj.NPCID > 0)
|
{
|
//走NPC的逻辑
|
NPCConfig npcConfig = NPCConfig.Get((int)fightObj.NPCID);
|
Country = (HeroCountry)npcConfig.Country;
|
SkinID = npcConfig.SkinID;
|
modelScale = npcConfig.ModelScale;
|
name = npcConfig.NPCName;
|
|
}
|
else
|
{
|
throw new System.Exception("hero id and skin id are both invalid, npc id is invalid too (all <= 0)");
|
}
|
|
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;
|
}
|
}
|