/********** Default Method	**********/
    void Wild_Tile_Init()
    {
        // 베이직 설정
        m_map = Object.Instantiate(Resources.Load <GameObject>("Basic"));
        m_map.transform.parent = m_canvas.transform;
        float screenY = Wild_Singleton_Screen.Wild_GetInstance().Wild_GetScreenSize().y;

        m_map.transform.localPosition = new Vector3(0.0f, -screenY * 0.2f, 0.0f);
        float scale = screenY / 10.0f * 0.5f;

        m_map.transform.localScale = new Vector3(scale, scale, scale);

        //
        m_a_tile = new Wild_Tile[(int)Wild_Map_SIZE.X * (int)Wild_Map_SIZE.Y];
        for (int y = 0; y < (int)Wild_Map_SIZE.Y; y++)
        {
            for (int x = 0; x < (int)Wild_Map_SIZE.X; x++)
            {
                // 헥스의 속성을 셋팅
                m_a_tile[0] = new Wild_Tile();
                m_a_tile[0].Wild_Init(x + (y * (int)Wild_Map_SIZE.Y), x, y, (int)Wild_Tile_TYPE.Wild_Tile_TYPE_GRASS, m_map);

                // 맵이동 범위 지정
                //if(m_right < obj.transform.localPosition.x) m_right = hexPos.x;
            }
        }
        m_map.transform.Rotate(-45.0f, 0.0f, 0.0f);
    }
예제 #2
0
    //
    void Wild_AStar_Setting()
    {
        Wild_AStar_Reset();

        // 자기 위치 셋팅
        {
            int temp = m_c_manager.Wild_FindMyTileNumber(this);
            m_AStar_a_data[temp].m_condition = Wild_AStar_CONDITION.OWN;
            m_AStar_a_data[temp].m_distance  = 0;
            m_AStar_l_settingTemp.Add(temp);
        }

        // 산출
        while (m_AStar_l_settingTemp.Count > 0)
        {
            int       num      = m_AStar_l_settingTemp[0];
            Wild_Tile tile     = m_c_manager.Wild_GetTile(num);
            int       x        = tile.Wild_GetX();
            int       y        = tile.Wild_GetX();
            int       distance = m_AStar_a_data[num].m_distance;
            switch (y % 2)
            {
            case 0: Wild_AStar_Setting1(x, y, -1, distance);      break;

            case 1: Wild_AStar_Setting1(x, y, 0, distance);      break;
            }

            m_AStar_l_settingTemp.RemoveAt(0);
        }
    }
예제 #3
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;
        }
    }