示例#1
0
    /// <summary>
    /// 가장 어그로가 높은 플레이어 확인
    /// 1. 어그로 초기화
    /// 2. 어그로가 가장 높은 플레이어의 정보 받기
    /// 3. 두번째 어그로 높은 플레이어 지정
    /// 4. 타겟플레이어 지정
    /// 5. 타겟이 바뀐경우에만
    /// 5-1. 교전중인 적 증감 (처음만 감소 안함. 기존타겟이 없으니까)
    /// </summary>
    void SetMaxAggroPlayer()
    {
        // 1.
        m_maxAggroPlayerNum = -2;
        m_maxAggroPoint     = 0;

        // 2.
        for (int i = 0; i < AggroManager.Instance.playerAggroList.Count; i++)
        {
            if (m_aggroPoint[i] > m_maxAggroPoint)
            {
                // 3.
                if (m_maxAggroPlayerNum == -2)
                {
                    m_secondTargetTr = AggroManager.Instance.playerAggroList[i].playerObject.transform;
                }
                else
                {
                    m_secondTargetTr = AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum].playerObject.transform;
                }

                m_maxAggroPlayerNum = i;
                m_maxAggroPoint     = m_aggroPoint[i];
            }
        }

        if (m_maxAggroPlayerNum != -2)
        {
            // 4.
            m_targetTr = AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum].playerObject.transform;
            // Debug.Log(m_targetTr.gameObject.name);

            // 5.
            if (m_maxAggroPlayerNum != m_beforeAggroPlayerNum)
            {
                // 5-1.
                if (m_beforeAggroPlayerNum != -1)
                {
                    tmpPlayerAggroInfo = AggroManager.Instance.playerAggroList[m_beforeAggroPlayerNum];
                    tmpPlayerAggroInfo.battleAINum--;
                    AggroManager.Instance.playerAggroList[m_beforeAggroPlayerNum] = tmpPlayerAggroInfo;
                    // AggroManager.Instance.playerAggroList[beforeAggroPlayerNum].battleAINum--;
                }

                tmpPlayerAggroInfo = AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum];
                tmpPlayerAggroInfo.battleAINum++;
                AggroManager.Instance.playerAggroList[m_maxAggroPlayerNum] = tmpPlayerAggroInfo;
                // AggroManager.Instance.playerAggroList[_maxAggroPlayerNum].battleAINum++;

                m_beforeAggroPlayerNum = m_maxAggroPlayerNum;
            }
        }
    }
示例#2
0
    /// <summary>
    /// 어그로 추가하기 (처음, 되살아 났을때)
    /// 1. 중복체크
    /// 2. 데이터 넣고 리스트 추가
    /// </summary>
    /// <param name="player"></param>
    /// <param name="netCode"></param>
    public void AddPlayerInfo(GameObject player, short netCode)
    {
        // 1.
        for (int i = 0; i < playerAggroList.Count; i++)
        {
            if (playerAggroList[i].netCode == netCode)
            {
                return;
            }
        }

        // 2.
        PlayerAggroInfo _newPlayerInfo = new PlayerAggroInfo();

        _newPlayerInfo.playerObject = player;
        _newPlayerInfo.battleAINum  = 0;
        _newPlayerInfo.netCode      = netCode;

        playerAggroList.Add(_newPlayerInfo);

        // Debug.Log("접속인원 : " + playerAggroList.Count);
    }
示例#3
0
    float m_maxAggroPoint;                      // 가장 높은 어그로 점수

    private void Start()
    {
        tmpPlayerAggroInfo = new PlayerAggroInfo();
        m_aggroPoint       = new float[4];
    }