Exemplo n.º 1
0
    /// <summary>
    /// お前はどのタグだ
    /// </summary>
    /// <param name="line">行</param>
    /// <returns></returns>
    private MusicIndex CheckIndex(string line)
    {
        MusicIndex index = MusicIndex.none;
        string     str   = null;

        for (int i = 0; i < line.Length; i++)
        {
            if (line.Substring(i, 1) == ":")
            {
                //タグを抽出
                str = line.Substring(1, i - 1);
                break;
            }
        }

        if (str == null)
        {
            Debug.LogWarningFormat("タグを読み込めませんでした : " + line);
            return(index);
        }

        try
        {
            index = (MusicIndex)Enum.Parse(typeof(MusicIndex), str);
        }
        catch
        {
            Debug.LogWarningFormat("譜面情報のタグが正しくありません : " + str);
        }

        return(index);
    }
Exemplo n.º 2
0
    /// <summary>
    /// 譜面読み込み
    /// </summary>
    /// <param name="file">譜面ファイル</param>
    public void MusicLoad(TextAsset file, LoadMode mode = LoadMode.Normal)
    {
        Init();
        StringReader sr = new StringReader(file.text);

        string     lines = null;
        MusicIndex index = MusicIndex.none;

        //ノーツ情報が出てくるまで1行ずつ読み込みを行う
        while (sr.Peek() != -1)
        {
            //行読み込み
            string line = sr.ReadLine();

            //譜面情報かどうか確認
            if (lines != null || (line.Length != 0 && line.Substring(0, 1) == "#"))
            {
                if (index == MusicIndex.none)
                {
                    index = CheckIndex(line);
                }

                //ノーツ情報が来たらBreak
                if (lines == null && index == MusicIndex.NOTES)
                {
                    break;
                }

                //タグが無かったら次の行へ
                if (lines == null && index == MusicIndex.none)
                {
                    continue;
                }

                lines += line;

                if (line.Substring(line.Length - 1, 1) == ";")
                {
                    IndexLoad(index, lines, file, mode);
                    lines = null;
                    index = MusicIndex.none;
                }
            }
        }
        MakeMusic(sr, mode);
        notesData.TotalNotes = notesData.SimpleNote + notesData.LongNote * 2;
        if (mode != LoadMode.Normal)
        {
            return;
        }
        InputManager.instance.KeySetting();
        SpeedFit();
        BPMData_Add(originThs);
        STOPData_Add(originThs);
        GenerateScore();
        InitActiveNotes();
    }
Exemplo n.º 3
0
    /// <summary>
    /// タグから情報を読み込む
    /// </summary>
    /// <param name="index">タグ</param>
    private void IndexLoad(MusicIndex index, string line, TextAsset file, LoadMode mode)
    {
        int    tagLength = 1 + index.ToString().Length + 1;
        string contents  = line.Substring(tagLength, line.Length - tagLength - 1);

        switch (index)
        {
        case MusicIndex.TITLE:
            data_TITLE = contents;
            break;

        case MusicIndex.SUBTITLE:
            data_SUBTITLE = contents;
            break;

        case MusicIndex.AUDIO:
            if (mode == LoadMode.Normal)
            {
                break;
            }
                #if UNITY_EDITOR
            string fileDirectory   = AssetDatabase.GetAssetPath(file);
            string folderDirectory = Path.GetDirectoryName(fileDirectory);
            string tgtDirectory    = folderDirectory + "/" + contents;
            data_AUDIO = (AudioClip)AssetDatabase.LoadAssetAtPath(tgtDirectory, typeof(AudioClip));
                #endif
            break;

        case MusicIndex.ARTIST:
            data_ARTIST = contents;
            break;

        case MusicIndex.OFFSET:
            if (contents.Substring(contents.Length - 1, 1) == "f")
            {
                contents = contents.Substring(0, contents.Length - 1);
            }
            data_OFFSET = float.Parse(contents);
            break;

        case MusicIndex.BPM:
            data_BPM = BreakContents_BPM(contents);
            break;

        case MusicIndex.KEY:
            data_KEY = int.Parse(contents);
            break;

        case MusicIndex.DIFFICULT:
            data_DIFFICULT = contents;
            break;

        case MusicIndex.LEVEL:
            data_LEVEL = int.Parse(contents);
            break;

        case MusicIndex.STOP:
            data_STOP = BreakContents_STOP(contents);
            break;

        case MusicIndex.GIMMICK:
            //実装
            break;

        case MusicIndex.MOVETYPE:
            data_MOVETYPE = (MoveType)Enum.ToObject(typeof(MoveType), int.Parse(contents));
            break;
        }
    }
Exemplo n.º 4
0
 public override string ToString()
 {
     return($"{Type}: Music {(MusicIndex == 255 ? "<Map music>" : MusicIndex.ToString())}, Volume {(Volume / 255.0f).ToString("0.0", CultureInfo.InvariantCulture)}, Unknown1 {string.Join(" ", Unknown1.Select(u => u.ToString("x2")))}");
 }