Esempio n. 1
0
    IEnumerator Summon_Object()
    {
        while (true)
        {
            if (!StageManager.GetInstance().Get_isPause())
            {
                if (m_Object_Type == OBJECT_TYPE.ENEMY && StageManager.GetInstance().Get_is_FeverTime_On())
                {
                    yield return(null);
                }

                else if (m_Waited_Summon_Time >= m_Summon_Time) // 소환 시간이 되면
                {
                    switch (m_Object_Type)                      // 무작위 패턴을 불러온다.
                    {
                    case OBJECT_TYPE.ENEMY:
                        m_Object_Pattern = StageManager.GetInstance().Random_Pick_One_Monster_Pattern();
                        break;

                    case OBJECT_TYPE.OBSTACLE:
                        m_Object_Pattern = StageManager.GetInstance().Random_Pick_One_Obstacle_Pattern();
                        break;

                    case OBJECT_TYPE.ITEM:
                        m_Object_Pattern = StageManager.GetInstance().Random_Pick_One_Item_Pattern();
                        break;
                    }

                    for (int i = 0; i < m_Object_Pattern.Count_of_Objects; ++i)
                    {
                        m_Temp_Object = Instantiate(m_Object_Prefabs[m_Object_Pattern.Object_Number[i] - 1]);             // 객체를 인스턴싱.
                        m_Temp_Object.transform.SetParent(m_Object_Lanes[m_Object_Pattern.Line_Number[i] - 1].transform); // 그 다음 해당 레인의 자식으로 설정.
                        Vector3 lpos = Vector3.zero;
                        lpos.x = m_Object_Pattern.X_Offset_Distance[i];
                        m_Temp_Object.transform.localPosition = lpos; // 포지션 설정.
                    }
                    m_Waited_Summon_Time = 0.0f;
                }

                else
                {
                    m_Waited_Summon_Time += Time.deltaTime;
                }
            }

            yield return(null);
        }
    }
Esempio n. 2
0
    // =================================================================


    // "각종 오브젝트 패턴 리스트"를 넘겨주는 메소드.
    public void Get_Object_Pattern_List(ref List <Object_Pattern_Structure> list, int Max_object_num_in_one_pattern, int object_type)
    {
        Object_Pattern_Structure pattern_Structure = new Object_Pattern_Structure(); // 구조체를 할당한다.
        int file_Line_Count = 0;

        switch (object_type)  // 여기서 csv 파일 내부의 행 수를 세어두고, 개행 단위로 잘라놓는다.
        {
        case OBJECT_TYPE.ENEMY:
            file_Line_Count = Counting_EOF(m_Enemy_Pattern_CSV);
            m_stringList    = m_Enemy_Pattern_CSV.text.Split('\n');
            break;

        case OBJECT_TYPE.OBSTACLE:
            file_Line_Count = Counting_EOF(m_Obstacle_Pattern_CSV);
            m_stringList    = m_Obstacle_Pattern_CSV.text.Split('\n');
            break;

        case OBJECT_TYPE.ITEM:
            file_Line_Count = Counting_EOF(m_Item_Pattern_CSV);
            m_stringList    = m_Item_Pattern_CSV.text.Split('\n');
            break;
        }

        list.Clear(); // 리스트를 비워준다.

        int pattern_num = 1;
        int list_Index  = 0;
        int x_multiple  = 0;

        m_data = m_stringList[2].Split(',');                                                                      // 한줄을 읽는다.

        for (int i = 2; i < file_Line_Count;)                                                                     // 2 부터 시작
        {
            pattern_Structure.Line_Number       = new int[Max_object_num_in_one_pattern];                         // 임시 구조체 내부 배열 할당_1
            pattern_Structure.Object_Number     = new int[Max_object_num_in_one_pattern];                         // 임시 구조체 내부 배열 할당_2
            pattern_Structure.X_Offset_Distance = new int[Max_object_num_in_one_pattern];                         // 임시 구조체 내부 배열 할당_3

            pattern_Structure.Pattern_Number = System.Convert.ToInt32(m_data[0]);                                 // (1) 임시 구조체에 "패턴 번호" 저장.
            x_multiple = System.Convert.ToInt32(m_data[4]);                                                       // x축 오프셋 배수 설정.

            while (pattern_Structure.Pattern_Number == System.Convert.ToInt32(m_data[0]))                         // 동일한 패턴 번호인지 확인한다.
            {
                pattern_Structure.Line_Number[list_Index]       = System.Convert.ToInt32(m_data[1]);              // (2) 임시 구조체에 "라인 번호" 저장
                pattern_Structure.Object_Number[list_Index]     = System.Convert.ToInt32(m_data[2]);              // (3) 임시 구조체에 "객체 번호" 저장
                pattern_Structure.X_Offset_Distance[list_Index] = System.Convert.ToInt32(m_data[3]) * x_multiple; // (4) 임시 구조체에 "x축 오프셋" 저장

                ++list_Index;                                                                                     // 인덱스를 1 증가시킨다.
                ++i;                                                                                              // 1줄 증가시킨다.

                if (i < file_Line_Count)                                                                          // 마지막 줄인지를 검사한다.
                {
                    m_data = m_stringList[i].Split(',');                                                          // 마지막줄이 아니라면 그 1줄을 읽어놓는다.
                }
                else
                {
                    break;  // 마지막 줄이라면 탈출.
                }
            }

            pattern_Structure.Count_of_Objects = list_Index; // 패턴 내의 객체 수를 기록.

            list_Index = 0;                                  // 인덱스 초기화

            ++pattern_num;                                   // 다음 패턴 번호로 넘어간다.

            list.Add(pattern_Structure);                     // 리스트에 기록한다.
        }
    }