Esempio n. 1
0
    //-----------------------------------------------------------------
    //! @summary   楽曲データの保存処理
    //!
    //! @parameter [filePath] 保存するファイルパス
    //!
    //! @return    なし
    //-----------------------------------------------------------------
    public void SaveMusicPiece(string filePath)
    {
        // 音楽ファイルのパスを取得する
        string audioFilePath = m_bgmSheetController.GetAudioFilePath();

        // BGMデータを取得する
        PiarhythmDatas.BGMData bgmData = m_bgmSheetController.GetBGMData();

        if ((audioFilePath == null) && (bgmData != null))
        {
            audioFilePath = bgmData.m_path;
        }

        // BGMをコピーする
        if ((audioFilePath != null) && (bgmData != null))
        {
            PiarhythmUtility.CopyFile(audioFilePath, bgmData.m_path);
        }

        // ノーツデータを取得する
        PiarhythmDatas.NoteData[] notesDatas = m_notesManager.GetNotesDatas();

        // 設定データを取得する
        PiarhythmDatas.OptionData optionData = m_optionSheetController.GetOptionData();

        // 楽曲データを作成する
        PiarhythmDatas.MusicPieceData musicPieceData = ScriptableObject.CreateInstance <PiarhythmDatas.MusicPieceData>();
        musicPieceData.m_bgmData      = bgmData;
        musicPieceData.m_noteDataList = notesDatas;
        musicPieceData.m_optionData   = optionData;

        // json文字列に変換する
        string jsonString = JsonConvert.SerializeObject(musicPieceData, new JsonSerializerSettings {
            ReferenceLoopHandling = ReferenceLoopHandling.Serialize
        });

        // 拡張子があるか調べる
        if (Path.GetExtension(filePath) != ".json")
        {
            filePath += ".json";
        }

        // ファイルに書き込んで保存する
        PiarhythmUtility.WriteFileText(filePath, jsonString);
    }
Esempio n. 2
0
    //-----------------------------------------------------------------
    //! @summary   楽曲データの読み込み処理
    //!
    //! @parameter [filePath] 読み込むファイルパス
    //!
    //! @return    なし
    //-----------------------------------------------------------------
    public void LoadMusicPiece(string filePath)
    {
        // ファイルを読み込む
        string jsonString = null;

        PiarhythmUtility.ReadFileText(filePath, ref jsonString);

        // オブジェクトに変換する
        PiarhythmDatas.MusicPieceData musicPieceData = JsonConvert.DeserializeObject <PiarhythmDatas.MusicPieceData>(jsonString);

        // 設定データの設定と初期化
        m_optionSheetController.Start(musicPieceData.m_optionData);

        // BGMデータの設定
        if (musicPieceData.m_bgmData != null)
        {
            if (musicPieceData.m_bgmData.m_path == "")
            {
                m_bgmSheetController.SetBGMData(null);
            }
            else
            {
                m_bgmSheetController.SetBGMData(musicPieceData.m_bgmData);
            }
        }

        // 通常ノーツの生成
        foreach (PiarhythmDatas.NoteData noteData in musicPieceData.m_noteDataList)
        {
            // ノーツの生成
            if (noteData.m_nextNoteData == null)
            {
                m_notesManager.CreateNotes(noteData);
            }
            else
            {
                m_notesManager.CreateConnectNote(noteData);
            }
        }
    }
Esempio n. 3
0
    //-----------------------------------------------------------------
    //! @summary   初期化処理
    //!
    //! @parameter [void] なし
    //!
    //! @return    なし
    //-----------------------------------------------------------------
    void Start()
    {
        // 設定データを読み込む
        string jsonString = null;

        PiarhythmUtility.ReadFileText(PiarhythmDatas.SETTING_DATA_FILE_PATH, ref jsonString);

        // インスタンスを作成する
        m_settingData = JsonConvert.DeserializeObject <PiarhythmDatas.SettingData>(jsonString);

        // 設定データを設定する
        m_musicController.SetSettingData(m_settingData);

        // プレイする楽曲データのファイルパスを取得する
        string filePath = PlayerPrefs.GetString(PiarhythmDatas.PLAY_MUSIC_PIECE_FILE_PATH, null);

        if (filePath == "")
        {
            filePath = PiarhythmDatas.MUSIC_PIECE_DIRECTORY_PATH + "YUBIKIRI-GENMAN -special edit-.json";
        }

        // 楽曲データを読み込む
        PiarhythmUtility.ReadFileText(filePath, ref jsonString);

        // インスタンスを作成する
        m_musicPieceData = JsonConvert.DeserializeObject <PiarhythmDatas.MusicPieceData>(jsonString);

        // 背景を作成する
        if (m_musicPieceData.m_optionData.m_tempDatas.Length != 0)
        {
            for (int i = 1; i < m_musicPieceData.m_optionData.m_tempDatas.Length; ++i)
            {
                m_musicPieceData.m_optionData.m_tempDatas[i].m_startMeasure += 2;
            }
        }
        m_musicPieceData.m_optionData.m_wholeMeasure += 5;
        m_musicController.CreateMusicScoreBackGround(m_musicPieceData.m_optionData);

        // 楽曲全体の時間を取得する
        m_wholeTime = m_musicController.GetWholeTime();

        // ノーツを生成する
        for (int i = 0; i < m_musicPieceData.m_noteDataList.Length; ++i)
        {
            m_musicPieceData.m_noteDataList[i].m_startBeat += 8;
        }
        m_musicController.CreateNoteList(m_musicPieceData.m_noteDataList);

        // BGMを読み込む
        if (m_musicPieceData.m_bgmData != null)
        {
            if (m_musicPieceData.m_bgmData.m_path != null)
            {
                // 読み込み開始フラグをたてる
                m_loadFlag = true;

                // コルーチンを設定する
                m_coroutine = PiarhythmUtility.LoadAudioFile(m_musicPieceData.m_bgmData.m_path);
            }
            else
            {
                // アニメーションを開始する
                m_keyboardController.PlayAnimation();
            }
        }
        else
        {
            // アニメーションを開始する
            m_keyboardController.PlayAnimation();
        }


        // BGMの開始時間を計算する
        // 一拍当たりの時間を求める
        float beatPerTempo = 60.0f / m_musicPieceData.m_optionData.m_tempDatas[0].m_tempo;

        m_bgmStartTime = beatPerTempo * 8.0f;
    }