yyl
2025-07-29 6577831ab2883bd05448ce0b1f9f913a9944fc78
Main/System/Battle/BattleField/BattleField.cs
@@ -18,7 +18,7 @@
    public int round = 0;
    public string guid = string.Empty;
    public string guid = string.Empty;//等于string.Empty的时候代表是StoryBattleField 是主线副本
    public int MapID = 0;
@@ -108,7 +108,16 @@
        battleRootNodeGO.name = this.GetType().Name;
        battleObjMgr = new BattleObjMgr();
        if (blueTeamList == null)
        {
            battleObjMgr.Init(this, redTeamList[redTeamIndex], null);
            battleObjMgr.HaveRest(BattleCamp.Red);
        }
        else
        {
        battleObjMgr.Init(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]);
        }
        battleEffectMgr = new BattleEffectMgr();
        battleEffectMgr.Init(this);
        battleTweenMgr = new BattleTweenMgr();
@@ -219,8 +228,37 @@
    public virtual void OnTurnFightState(int turnNum, int State, int FuncLineID, JsonData extendData)
    {
        //  切换回合
        //  是每个战斗开始/每个回合的第一个战斗包
        //  MapID = MapID
        
        //  MapID;    // 自定义地图ID,可用于绑定战斗地图场景功能(如主线关卡、主线boss、爬塔、竞技场等)
        //  FuncLineID;    // MapID对应的扩展值,如具体某个关卡等  章节*10000+关卡编号*100+第x波,如第一章,第10关卡的boss值 = 11001
        //  State;    // 0-起始状态标记;1-准备完毕;2-战斗中;3-战斗结束;4-结算奖励;5-结束状态标记
        //  TurnNum;    // 当前轮次
        //  Len;
        //  Msg;    //size = Len   +
        //  做表现
        if (turnNum == 1)
        {
            if (State == 2)
            {
                Debug.Log("战斗开始");
    }
        }
        else
        {
            Debug.Log("战斗回合 : " + turnNum + ",状态 " + State);
        }
        // 做一个Action 通知UI翻下牌子 然后结束Action
        // TurnFightStateAction turnFightStateAction = new TurnFightStateAction(this, turnNum, State, FuncLineID, extendData);
        // recordPlayer.PlayRecord(turnFightStateAction);
    }
    public void ObjInfoRefresh(H0418_tagObjInfoRefresh _refreshInfo)
    {
@@ -284,6 +322,17 @@
        }
    }
    public RectTransform GetTeamNode(BattleCamp battleCamp, int index)
    {
        if (battleCamp == BattleCamp.Red)
        {
            return battleRootNode.redTeamNodeList[index].transform as RectTransform;
        }
        else
        {
            return battleRootNode.blueTeamNodeList[index].transform as RectTransform;
        }
    }
    public bool IsRoundReachLimit()
    {
@@ -303,4 +352,31 @@
            }
        }
    }
    public void StartBattle(Action onMoveComplete)
    {
        List<BattleObject> redTeam = battleObjMgr.GetBattleObjList(BattleCamp.Red);
        Tween tween = null;
        foreach (var obj in redTeam)
        {
            obj.motionBase.PlayAnimation(MotionName.run, true);
            RectTransform trans = obj.heroGo.transform as RectTransform;
            tween = trans.DOMove(obj.GetAliasTeamNode().position, 0.5f).SetEase(Ease.Linear);
            battleTweenMgr.OnPlayTween(tween);
        }
        tween.onComplete = () =>
        {
            foreach (var obj in redTeam)
            {
                obj.motionBase.PlayAnimation(MotionName.idle, true);
            }
            // 播放战斗开始的特效
            var efplayer = battleEffectMgr.PlayEffect(0, BattleConst.BattleStartEffectID, battleRootNode.transform);
            efplayer.onDestroy += a => onMoveComplete();
        };
    }
}