Пример #1
0
    /********** Default Method	**********/
    void Wild_AStar_Init()
    {
        m_AStar_a_data = new Wild_AStar_Data[50];
        for (int i = 0; i < (int)Wild_Map_SIZE.X * (int)Wild_Map_SIZE.Y; i++)
        {
            m_AStar_a_data[i] = new Wild_AStar_Data();
        }
        Wild_AStar_Reset();

        m_AStar_l_settingTemp = new List <int>();
    }
Пример #2
0
    // 칸마다 체크
    void Wild_AStar_Setting2(int _num, int _dis)
    {
        // 체크에 관련된 헥스의 정보 가져오기
        Wild_Tile hex = m_c_manager.Wild_GetTile(_num);

        // 헥스가 지나갈 수 없는 곳인가?
        if (hex.Wild_IsMove())
        {
            Wild_AStar_Data data = m_AStar_a_data[_num];
            if (data.m_distance > _dis)
            {
                data.m_distance = _dis;
            }

            bool isDoing = (data.m_condition == Wild_AStar_CONDITION.NOSEARCH);
            if (isDoing)
            {
                Wild_Object          obj = hex.Wild_GetObject();
                Wild_AStar_CONDITION con = Wild_AStar_CONDITION.MOVE;
                if (obj != null)
                {
                    switch (obj.Wild_GetType())
                    {
                    case Wild_Object_TYPE.OBJECT:   con = Wild_AStar_CONDITION.OBJECT;      break;
                    }
                }

                m_AStar_a_data[_num].m_condition = con;

                if (con == Wild_AStar_CONDITION.MOVE)
                {
                    m_AStar_l_settingTemp.Add(_num);
                }
            }
        }
        else
        {
            m_AStar_a_data[_num].m_condition = Wild_AStar_CONDITION.NOTMOVE;
        }
    }