コード例 #1
0
ファイル: BmsParser.cs プロジェクト: PPorotos/BMSGame
    public void BmsLoad(string[] lineData)
    {
        BarData barData;

        foreach (string line in lineData)
        {
            if (line.StartsWith("#"))
            {
                string[] data = line.Split(' ');

                // 데이터 섹션이 아니면서 헤더 데이터가 없는 경우에는 건너 뜀.
                if (data[0].IndexOf(":") == -1 && data.Length == 1)
                {
                    continue;
                }

                // 헤더 섹션.
                if (data[0].Equals("#TITLE"))
                {
                    bms.setTitle(data[1]);
                    title.text = "Title : " + data[1];
                }
                else if (data[0].Equals("#ARTIST"))
                {
                    bms.setArtist(data[1]);
                    artist.text = "Artist : " + data[1];
                }
                else if (data[0].Equals("#BPM"))
                {
                    bms.setBpm(float.Parse(data[1]));
                    beatCreator.bpm = (float)float.Parse(data[1]);
                    bpm.text        = "BPM : " + data[1];
                }
                else if (data[0].Equals("#PLAYER"))
                {
                }
                else if (data[0].Equals("#GENRE"))
                {
                }
                else if (data[0].Equals("#PLAYLEVEL"))
                {
                }
                else if (data[0].Equals("#RANK"))
                {
                }
                else if (data[0].Equals("#TOTAL"))
                {
                }
                else if (data[0].Equals("#VOLWAV"))
                {
                }
                else if (data[0].Equals("#MIDIFILE"))
                {
                }
                else if (data[0].Substring(0, 4).Equals("#WAV"))
                {
                }
                else if (data[0].Equals("#BMP"))
                {
                }
                else if (data[0].Equals("#STAGEFILE"))
                {
                }
                else if (data[0].Equals("#VIDEOFILE"))
                {
                }
                else if (data[0].Equals("#BGA"))
                {
                }
                else if (data[0].Equals("#STOP"))
                {
                }
                else if (data[0].Equals("#LNTYPE"))
                {
                    bms.setLnType(int.Parse(data[1]));
                }
                else if (data[0].Equals("#LNOBJ"))
                {
                }
                else if (data[0].IndexOf(":") != -1)
                {
                    // 위의 경우에 모두 해당하지 않을 경우, 데이터 섹션.
                    int bar = 0;
                    Int32.TryParse(data[0].Trim().Substring(1, 3), out bar);

                    int channel = 0;
                    Int32.TryParse(data[0].Trim().Substring(4, 2), out channel);

                    string noteStr = data[0].Trim().Substring(7);
                    List <Dictionary <int, float> > noteData = getNoteDataOfStr(noteStr, bar, bms.getBpm()); // 노트 데이터 생성

                    barData = gameObject.AddComponent <BarData>();
                    barData.setBar(bar);
                    barData.setChannel(channel);
                    barData.setNoteDataList(noteData);
                    //barData.debug();

                    bms.addBarData(barData);
                }
            }
        }

        if (bms.getBarDataList().Count != 0)
        {
            isFinishLoad = true;
        }

        //bms.debug();
    }
コード例 #2
0
    public void BmsLoad(string[] lineData)
    {
        Debug.Log("----BmsLoader:BmsLoad()----");
        bms = gameObject.AddComponent <Bms>();
        BarData barData;

        foreach (string line in lineData)
        {
            if (line.StartsWith("#"))
            {
                string[] data = line.Split(' ');
                if (data[0].IndexOf(":") == -1 && data.Length == 1)
                {
                    continue;
                }
                if (data[0].Equals("#TITLE"))
                {
                    bms.setTitle(data[1]);
                }
                else if (data[0].Equals("#ARTIST"))
                {
                    bms.setArtist(data[1]);
                }
                else if (data[0].Equals("#BPM"))
                {
                    bms.setBpm(double.Parse(data[1]));
                }
                else if (data[0].Equals("#PLAYER"))
                {
                }
                else if (data[0].Equals("#GENRE"))
                {
                }
                else if (data[0].Equals("#PLAYLEVEL"))
                {
                }
                else if (data[0].Equals("#RANK"))
                {
                }
                else if (data[0].Equals("#TOTAL"))
                {
                }
                else if (data[0].Equals("#VOLWAV"))
                {
                }
                else if (data[0].Equals("#MIDIFILE"))
                {
                }
                else if (data[0].Substring(0, 4).Equals("#WAV"))
                {
                }
                else if (data[0].Equals("#BMP"))
                {
                }
                else if (data[0].Equals("#STAGEFILE"))
                {
                }
                else if (data[0].Equals("#VIDEOFILE"))
                {
                }
                else if (data[0].Equals("#BGA"))
                {
                }
                else if (data[0].Equals("#STOP"))
                {
                }
                else if (data[0].Equals("#LNTYPE"))
                {
                    bms.setLnType(int.Parse(data[1]));
                }
                else if (data[0].Equals("#LNOBJ"))
                {
                }
                else if (data[0].IndexOf(":") != -1)
                {
                    int bar     = 0;
                    int channel = 0;
                    Int32.TryParse(data[0].Trim().Substring(1, 3), out bar);
                    Int32.TryParse(data[0].Trim().Substring(4, 2), out channel);
                    string noteStr = data[0].Trim().Substring(7);
                    List <Dictionary <int, float> > noteData = getNoteDataOfStr(noteStr, bar, bms.getBpm()); // create note data
                    barData = gameObject.AddComponent <BarData>();
                    barData.setBar(bar);
                    barData.setChannel(channel);
                    barData.setNoteDataList(noteData);
                    bms.addBarData(barData);
                }
            }
        }
        if (bms.getBarDataList().Count != 0)
        {
            isFinishLoad = true;
        }
    }