Example #1
0
    //- 战斗逻辑
    //
    // @return none
    public void frameLockLogic()
    {
        //UnityTools.Log("frameLockLogic " + GameData.g_uGameLogicFrame);
        //如果是回放模式
        if (GameData.g_bRplayMode)
        {
            //检测回放事件
            checkPlayBackEvent(GameData.g_uGameLogicFrame);
        }

        recordLastPos();

        //动作管理器update
        GameData.g_actionMainManager.updateLogic();

        // 英雄
        int selfLiveCnt  = 0;
        int otherLiveCnt = 0;
        int selfTotalCnt = 0;

        for (int i = 0; i < GameData.g_listHero.Count; i++)
        {
            BaseHero baseHero = GameData.g_listHero[i];
            //UnityTools.Log("baseHero.IsDied ====== " + baseHero.IsDied);
            if (!baseHero.IsDied)
            {
                baseHero.updateLogic();
            }

            if (baseHero.group == Fix64.One)
            {
                selfTotalCnt++;
                if (!baseHero.IsDied)
                {
                    selfLiveCnt++;
                }
            }
            else if (baseHero.group == Fix64.One * 2)
            {
                if (!baseHero.IsDied)
                {
                    otherLiveCnt++;
                }
            }
        }

        if (selfLiveCnt == 0 || otherLiveCnt == 0)
        {
            if (selfLiveCnt == 0)
            {
                GameData.g_battleResult = 0;
            }
            else if (selfTotalCnt - selfLiveCnt == 0)
            {
                GameData.g_battleResult = 3;
            }
            else if (selfTotalCnt - selfLiveCnt == 1)
            {
                GameData.g_battleResult = 2;
            }
            else if (selfTotalCnt - selfLiveCnt >= 2)
            {
                GameData.g_battleResult = 1;
            }
            stopBattle();
        }
    }