Exemplo n.º 1
0
    /// <summary>
    /// 刷数据
    /// </summary>
    void RefreshTargetGridData()
    {
        IEntitySystem entitySystem = ClientGlobal.Instance().GetEntitySystem();
        IPlayer       mainPlayer   = ClientGlobal.Instance().MainPlayer;

        if (entitySystem == null)
        {
            return;
        }

        if (mainPlayer == null)
        {
            return;
        }

        ISkillPart sp = mainPlayer.GetPart(EntityPart.Skill) as ISkillPart;

        if (sp == null)
        {
            return;
        }

        m_lstAllEnemy.Clear();
        m_lstTargetEnemyId.Clear();

        //加入已经锁的敌人
        for (int i = 0; i < m_lstLockEnemyId.Count; i++)
        {
            if (m_lstTargetEnemyId.Count < 5)
            {
                m_lstTargetEnemyId.Add(m_lstLockEnemyId[i]);
            }
        }

        //所有人
        entitySystem.FindNearstPlayer(ref m_lstAllPlayer);

        //所有敌人
        for (int i = 0; i < m_lstAllPlayer.Count; i++)
        {
            int nSkillError;

            //最多选取5个可攻击敌人(减少计算量)
            if (m_lstAllEnemy.Count >= 5)
            {
                break;
            }

            bool b = sp.CheckCanAttackTarget(m_lstAllPlayer[i], out nSkillError);
            if (b)
            {
                m_lstAllEnemy.Add(m_lstAllPlayer[i]);
            }
        }

        //加入选中的敌人
        if (m_lstTargetEnemyId.Count < 5 && false == m_lstTargetEnemyId.Contains(m_selectEnemyId))
        {
            bool b = false;
            for (int i = 0; i < m_lstAllEnemy.Count; i++)
            {
                if (m_lstAllEnemy[i].GetID() == m_selectEnemyId)
                {
                    b = true;
                    m_lstTargetEnemyId.Add(m_selectEnemyId);
                }
            }

            //无选中的
            if (false == b)
            {
                this.m_selectEnemyId = 0;
            }
        }

        //清除不在九宫格的
        //for (int i = m_lstTargetEnemyId.Count - 1; i >= 0; i--)
        //{
        //    if (m_lstLockEnemyId.Contains(m_lstTargetEnemyId[i]))
        //    {
        //        continue;
        //    }

        //    bool exist = false;
        //    for (int j = 0; j < m_lstAllEnemy.Count; j++)
        //    {
        //        if (m_lstAllEnemy[j].GetID() == m_lstTargetEnemyId[i])
        //        {
        //            exist = true;
        //        }
        //    }

        //    if (false == exist)
        //    {
        //        m_lstTargetEnemyId.Remove(m_lstTargetEnemyId[i]);
        //    }
        //}


        for (int i = 0; i < m_lstAllEnemy.Count; i++)
        {
            //排除玩家自己
            uint enemyId      = m_lstAllEnemy[i].GetID();
            uint mainPlayerId = mainPlayer.GetID();

            //玩家自己,排除
            if (enemyId == mainPlayerId)
            {
                continue;
            }

            //string name = string.Format("--->>> enemyName = {0}", m_lstAllEnemy[i].GetName());
            //Debug.LogError(name);

            //已经在列表中
            if (m_lstTargetEnemyId.Contains(enemyId))
            {
                continue;
            }

            //新加入进来的(最多5个)
            if (m_lstTargetEnemyId.Count < 5)
            {
                m_lstTargetEnemyId.Add(enemyId);
            }
        }
    }