Exemplo n.º 1
0
        public override void getMessage(Message aMessage)
        {
            //logClickPosition(aMessage);
            if (aMessage.name == "editPlayButtonPushed")//編曲再生ボタン
            {
                parent.changeState(new EditPlayState(parent));
                return;
            }
            if (aMessage.name == "testPlayButtonPushed")//テスト再生ボタン
            {
                parent.changeState(new TestPlayState(parent));
                return;
            }
            if (aMessage.name == "measureBpmButtonPushed") //bpm測定ボタン
            {
                parent.changeState(new InitialState(parent));
                MySceneManager.openScene("measureBpm", new Arg(new Dictionary <string, object>()
                {
                    { "second", MusicScoreData.quarterBeatToMusicTime(parent.mScore.mCurrentQuarterBeat) },
                    { "staticBpm", MusicScoreData.getBpm(parent.mScore.mCurrentQuarterBeat) }
                }), null, (obj) => {
                    parent.changeState(new EditState(parent));
                });
                return;
            }
            if (aMessage.name == "editLyricsButtonPushed")//歌詞編集ボタン
            {
                parent.changeState(new InitialState(parent));
                MySceneManager.openScene("editLyrics", null, null, (aArg) => {
                    mCommandList.reset();
                    parent.mScore.resetBars();
                    parent.changeState(new EditState(parent));
                });
                return;
            }
            if (aMessage.name == "configButtonPushed")//File設定ボタン
            {
                parent.changeState(new InitialState(parent));
                MySceneManager.openScene("musicConfig", new Arg(new Dictionary <string, object>()
                {
                    { "new", false },
                    { "title", MusicScoreData.mTitle },
                    { "savePath", MusicScoreData.mSavePath },
                    { "music", MusicScoreData.mMusicFileName },
                    { "thumbnail", MusicScoreData.mThumbnail },
                    { "back", MusicScoreData.mBack },
                    { "movie", MusicScoreData.mMovie },
                    { "loadPath", MusicScoreData.mLoadPath }
                }), null, (aArg) => {
                    if (aArg.get <bool>("ok"))
                    {
                        MusicScoreFileData tData = aArg.get <MusicScoreFileData>("scoreData");
                        if (MusicScoreData.mMusicFileName != tData.music)//音声を変更
                        {
                            MusicPlayer tPlayer = MyBehaviour.create <MusicPlayer>();
                            tPlayer.setAudio(DataFolder.loadMusic(tData.music));
                            parent.mPlayer.changeMusic(tPlayer);
                        }
                        MusicScoreData.mTitle         = tData.title;
                        MusicScoreData.mSavePath      = tData.savePath;
                        MusicScoreData.mMusicFileName = tData.music;
                        MusicScoreData.mThumbnail     = tData.thumbnail;
                        MusicScoreData.mBack          = tData.back;
                        MusicScoreData.mMovie         = tData.movie;
                        //譜面の背景更新
                        parent.resetScoreBackground();
                    }
                    parent.changeState(new EditState(parent));
                });
                return;
            }
            if (aMessage.name == "selectRustFromScoreButtonPushed")//譜面からサビの開始位置を選択するボタン
            {
                parent.changeState(new SelectRustFromScoreState(parent));
                return;
            }
            if (aMessage.name == "applySettingButtonPushed") //設定適用ボタン
            {
                if (mSettingForm.isChanged())                //変更がある時だけ適用
                //marginが不正な値になっていないか
                {
                    if (mSettingForm.mMargin < 0)
                    {
                        AlartCreater.alart("Marginは0未満にできません");
                        return;
                    }
                    if (KeyTime.secondsToQuarterBeat(mSettingForm.mMargin, MusicScoreData.mInitialBpm) >= mSettingForm.mRhythm * 4)
                    {
                        AlartCreater.alart("Marginが第一小節の長さを超えています");
                        return;
                    }
                    //rustが不正な値になっていないか
                    if (mSettingForm.mRust < 0)
                    {
                        AlartCreater.alart("サビの位置は0以上で指定してください");
                        return;
                    }
                    if (parent.mPlayer.mMusicLength <= mSettingForm.mRust)
                    {
                        AlartCreater.alart("サビの位置が音声の長さを超えています");
                        return;
                    }
                    AlartCreater.alart("設定を適用しました");
                    mCommandList.run(new ApplySettingCommand(mSettingForm));
                    parent.mScore.resetBars();
                }
                else
                {
                    AlartCreater.alart("値が変更されていません");
                }
                return;
            }
            if (aMessage.name == "resetSettingButtonPushed")//設定リセットボタン
            {
                mSettingForm.reset();
                return;
            }
            if (aMessage.name == "saveButtonPushed")//保存ボタン
            {
                parent.changeState(new SaveState(parent));
                return;
            }
            //譜面クリック
            switch (mCreateObjectType)
            {
            case CreateObjectType.note:
                if (aMessage.name == "clickNote" || aMessage.name == "clickLyrics")
                {
                    tryCreateNote(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                if (aMessage.name == "RightClickNote" || aMessage.name == "RightClickLyrics")
                {
                    tryDeleteNote(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                break;

            case CreateObjectType.lyrics:
                if (aMessage.name == "clickNote" || aMessage.name == "clickLyrics")
                {
                    tryCreateLyrics(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                if (aMessage.name == "RightClickNote" || aMessage.name == "RightClickLyrics")
                {
                    tryDeleteLyrics(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                break;

            case CreateObjectType.changeBpm:
                if (aMessage.name == "clickNote" || aMessage.name == "clickLyrics")
                {
                    tryCreateChangeBpm(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                if (aMessage.name == "RightClickNote" || aMessage.name == "RightClickLyrics")
                {
                    tryDeleteChangeBpm(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                break;

            case CreateObjectType.triplet:
                if (aMessage.name == "clickNote" || aMessage.name == "clickLyrics")
                {
                    tryCreateTriplet(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                if (aMessage.name == "RightClickNote" || aMessage.name == "RightClickLyrics")
                {
                    tryDeleteTriplet(new KeyTime(aMessage.getParameter <float>("time")));
                    return;
                }
                break;
            }
        }