yyl
2025-07-21 5bc2cc9a3e007b96a0de96e70e87f25bc5a254a2
Main/System/Team/TeamHero.cs
@@ -3,57 +3,100 @@
public partial class TeamHero
{
    public HeroInfo heroInfo;
    public TeamBase teamBase;
    public int heroIndex;
    public int heroId;
    public HeroConfig heroConfig;
    public int SkinID;
    public HeroSkinConfig skinConfig;
    public string guid;
    public TeamBase teamBase
    {
        get; private set;
    }
    public int positionNum;
//  战场数据
    public uint ObjID = 0;// 战斗单位唯一ID
    public int ObjID = 0;// 战斗单位唯一ID
    public uint NPCID = 0;// 战斗NPCID,不同的实例ID对应的NPCID可能一样
    public int NPCID = 0;// 战斗NPCID,不同的实例ID对应的NPCID可能一样
    public TeamHero()
    {
    }
    //  服务器来的构造
    public TeamHero(HB424_tagSCTurnFightInit.tagSCTurnFightObj fightObj, TeamBase _teamBase)
    {
        heroInfo = new HeroInfo(fightObj);
        teamBase = _teamBase;
        if (fightObj.PosNum < 0 || fightObj.PosNum >= TeamConst.MaxTeamSlotCount)
        {
            Debug.LogError("Invalid PosNum: " + fightObj.PosNum);
        }
        else
        {
            teamBase.teamHeros[fightObj.PosNum] = this; // 将当前对象添加到对应位置
        }
        heroId = (int)fightObj.HeroID;
        heroConfig = HeroConfig.Get(heroId);
        SkinID = (int)fightObj.SkinID;
        skinConfig = HeroSkinConfig.Get(SkinID);
        ObjID = fightObj.ObjID;
        NPCID = fightObj.NPCID;
        teamBase = _teamBase;
        ObjID = (int)fightObj.ObjID;
        NPCID = (int)fightObj.NPCID;
        // HPEx * 1亿 + HP
        curHp = (long)fightObj.HPEx * GeneralDefine.HundredMillion +(long)fightObj.HP;
        maxHp = (long)fightObj.MaxHPEx * GeneralDefine.HundredMillion +(long)fightObj.MaxHP;
        curHp = (long)fightObj.HPEx * GeneralDefine.HundredMillion + (long)fightObj.HP;
        maxHp = (long)fightObj.MaxHPEx * GeneralDefine.HundredMillion + (long)fightObj.MaxHP;
        rage = (int)fightObj.AngreXP;
        heroIndex = fightObj.PosNum;
        positionNum = fightObj.PosNum;
        //  【重要】战斗构成里没有卡牌的guid
        guid = string.Empty;
        Update();
    }
    //  布阵时的构造
    public TeamHero(HeroInfo heroInfo, int posNum, TeamBase _teamBase)
    {
        heroId = heroInfo.itemHero.config.ID;
        heroConfig = HeroConfig.Get(heroId);
        SkinID = heroInfo.SkinID;
        skinConfig = heroInfo.skinConfig;
        teamBase = _teamBase;
        ObjID = 0;
        NPCID = 0;
        curHp = heroInfo.hp;
        maxHp = heroInfo.hp;
        rage = 0;
        positionNum = posNum;
        //  【重要】布阵里的要guid
        guid = heroInfo.itemHero.guid;
        Update();
    }
    public void OnSwapPosition(TeamHero teamHero)
    {
        int tempPosNum = positionNum;
        positionNum = teamHero.positionNum;
        teamHero.positionNum = tempPosNum;
        teamBase.teamHeros[positionNum] = this;
        teamBase.teamHeros[teamHero.positionNum] = teamHero;
        Update();
    }
    public void Update()
    {
    }
    //  最终属性 当前属性应该是要在这一层的
    public int GetPower()
    {
        return heroInfo.CalculatePower();
        // 计算战斗力YYL TODO
        return 0;
    }    
}