yyl
2025-08-07 d767a5a0efbac267507be14b5b09bd64015fe560
Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -19,10 +19,16 @@
    public void Init(BattleField _battleField, TeamBase _redTeam, TeamBase _blueTeam)
    {
        battleField = _battleField;
        CreateTeam(battleField.battleRootNode.redTeamNodeList, redCampDict, _redTeam, BattleCamp.Red);
        CreateTeam(battleField.battleRootNode.blueTeamNodeList, blueCampDict, _blueTeam, BattleCamp.Blue);
        ReloadTeam(_redTeam, BattleCamp.Red);
        ReloadTeam(_blueTeam, BattleCamp.Blue);
    }
    public void ReloadTeam(TeamBase teamBase, BattleCamp _camp)
    {
        var posNodeList = _camp == BattleCamp.Red ? battleField.battleRootNode.redTeamNodeList : battleField.battleRootNode.blueTeamNodeList;
        var campDict = _camp == BattleCamp.Red ? redCampDict : blueCampDict;
        CreateTeam(posNodeList, campDict, teamBase, _camp);
    }
    protected void CreateTeam(List<GameObject> posNodeList, Dictionary<int, BattleObject> campDict, TeamBase teamBase, BattleCamp _Camp)
    {
@@ -32,14 +38,14 @@
            return;
        }
        for (int i = 0; i < teamBase.serverHeroes.Length; i++)
        {
            TeamHero teamHero = teamBase.serverHeroes[i];
            if (teamHero != null)
            {
                BattleObject battleObj = BattleObjectFactory.CreateBattleObject(battleField, posNodeList, teamHero, _Camp);
                if (battleObj.ObjID == 0)
                    continue;
                allBattleObjDict.Add(battleObj.ObjID, battleObj);
                campDict.Add(teamHero.positionNum, battleObj);
            }
@@ -82,6 +88,36 @@
        return retList;
    }
    public void DestroyTeam(BattleCamp battleCamp)
    {
        Dictionary<int, BattleObject> campDict = battleCamp == BattleCamp.Red ? redCampDict : blueCampDict;
        if (campDict == null)
        {
            return;
        }
        DestroyTeam(campDict);
    }
    public void DestroyObjIds(uint[] objIDs)
    {
        if (objIDs == null || objIDs.Length == 0)
        {
            return;
        }
        foreach (var objID in objIDs)
        {
            if (allBattleObjDict.TryGetValue((int)objID, out BattleObject battleObj))
            {
                allBattleObjDict.Remove((int)objID);
                redCampDict.Remove((int)objID);
                blueCampDict.Remove((int)objID);
                BattleObjectFactory.DestroyBattleObject((int)objID, battleObj);
            }
        }
    }
    protected void DestroyTeam(Dictionary<int, BattleObject> campDict)
    {
        foreach (var item in campDict)
@@ -94,11 +130,10 @@
            }
        }
        campDict.Clear();
    }
    //  空闲状态
    public void HaveRest(BattleCamp _Camp)
    public virtual void HaveRest(BattleCamp _Camp)
    {
        //  休息状态
        if (_Camp == BattleCamp.Red)
@@ -117,7 +152,7 @@
        }
    }
    public void Release()
    public virtual void Release()
    {
        DestroyTeam(redCampDict);
        DestroyTeam(blueCampDict);