protected override void On活性化()
        {
            using (Log.Block(FDKUtilities.現在のメソッド名))
            {
                this.現在のフェーズ   = フェーズ.フェードイン;
                this._初めての進行描画 = true;

                // パネルフォルダツリーを構築する。

                var user = App.ユーザ管理.ログオン中のユーザ;
                this._ルートパネルフォルダ = new パネル_フォルダ("Root", null);


                // オプション(ユーザ別)

                #region "「自動演奏」フォルダ"
                //----------------
                {
                    var 自動演奏フォルダ = new パネル_フォルダ(

                        パネル名:
                        "自動演奏",

                        親パネル:
                        this._ルートパネルフォルダ,

                        値の変更処理:
                        (panel) => {
                        this._パネルリスト.子のパネルを選択する();
                        this._パネルリスト.フェードインを開始する();
                    });

                    this._ルートパネルフォルダ.子パネルリスト.Add(自動演奏フォルダ);

                    // 子フォルダツリーの構築

                    #region "「すべてON/OFF」パネル "
                    //----------------
                    自動演奏フォルダ.子パネルリスト.Add(

                        new パネル(

                            パネル名:
                            "すべてON/OFF",

                            値の変更処理:
                            (panel) => {
                        bool 設定値 = !(this._パネル_自動演奏_ONOFFトグルリスト[0].ONである);                  // 最初の項目値の反対にそろえる
                        foreach (var typePanel in this._パネル_自動演奏_ONOFFトグルリスト)
                        {
                            if (typePanel.ONである != 設定値)             // 設定値と異なるなら
                            {
                                typePanel.確定キーが入力された();             // ON/OFF反転
                            }
                        }
                    }
                            ));
                    //----------------
                    #endregion
                    #region " 各パッドのON/OFFパネル "
                    //----------------
                    this._パネル_自動演奏_ONOFFトグルリスト = new List <パネル_ONOFFトグル>();

                    foreach (AutoPlay種別 apType in Enum.GetValues(typeof(AutoPlay種別)))
                    {
                        if (apType == AutoPlay種別.Unknown)
                        {
                            continue;
                        }

                        var typePanel = new パネル_ONOFFトグル(

                            パネル名:
                            apType.ToString(),

                            初期状態はON:
                            (user.AutoPlay[apType]),

                            値の変更処理:
                            (panel) => {
                            user.AutoPlay[apType] = ((パネル_ONOFFトグル)panel).ONである;
                        }
                            );

                        自動演奏フォルダ.子パネルリスト.Add(typePanel);

                        this._パネル_自動演奏_ONOFFトグルリスト.Add(typePanel);
                    }
                    //----------------
                    #endregion
                    #region "「設定完了(戻る)」システムボタン
                    //----------------
                    自動演奏フォルダ.子パネルリスト.Add(

                        new パネル_システムボタン(

                            パネル名:
                            "設定完了(戻る)",

                            値の変更処理:
                            (panel) => {
                        this._パネルリスト.親のパネルを選択する();
                        this._パネルリスト.フェードインを開始する();
                    }
                            ));
                    //----------------
                    #endregion

                    自動演奏フォルダ.子パネルリスト.SelectFirst();
                }
                //----------------
                #endregion

                #region "「画面モード」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_文字列リスト(

                        パネル名:
                        "画面モード",

                        選択肢初期値リスト:
                        new[] { "ウィンドウ", "全画面" },

                        初期選択肢番号:
                        (user.全画面モードである) ? 1 : 0,

                        値の変更処理:
                        (panel) => {
                    user.全画面モードである = (1 == ((パネル_文字列リスト)panel).現在選択されている選択肢の番号);
                    App.全画面モード     = user.全画面モードである;
                }
                        ));
                //----------------
                #endregion
                #region "「演奏モード」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_文字列リスト(

                        パネル名:
                        "演奏モード",

                        選択肢初期値リスト:
                        new[] { "BASIC", "EXPERT" },

                        初期選択肢番号:
                        (int)user.演奏モード,

                        値の変更処理:
                        (panel) => {
                    user.演奏モード = (PlayMode)((パネル_文字列リスト)panel).現在選択されている選択肢の番号;
                    user.ドラムチッププロパティ管理.反映する(user.演奏モード);
                }
                        ));
                //----------------
                #endregion
                #region "「譜面スピード」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_倍率(

                        パネル名:
                        "譜面スピード",

                        初期値:
                        user.譜面スクロール速度,

                        最小倍率:
                        0.5,

                        最大倍率:
                        8.0,

                        増減量:
                        0.5,

                        値の変更処理:
                        (panel) => {
                    user.譜面スクロール速度 = ((パネル_倍率)panel).現在値;
                }
                        ));
                //----------------
                #endregion
                #region "「演奏中の動画表示」ON/OFFトグル "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_ONOFFトグル(

                        パネル名:
                        "演奏中の動画表示",

                        初期状態はON:
                        user.演奏中に動画を表示する,

                        値の変更処理:
                        (panel) => {
                    user.演奏中に動画を表示する = ((パネル_ONOFFトグル)panel).ONである;
                }
                        ));
                //----------------
                #endregion
                #region "「シンバルフリー」ON/OFFトグル "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_ONOFFトグル(

                        パネル名:
                        "シンバルフリー",

                        初期状態はON:
                        user.シンバルフリーモードである,

                        値の変更処理:
                        (panel) => {
                    user.シンバルフリーモードである = ((パネル_ONOFFトグル)panel).ONである;
                    user.ドラムチッププロパティ管理.反映する((user.シンバルフリーモードである) ? 入力グループプリセット種別.シンバルフリー : 入力グループプリセット種別.基本形);
                }
                        ));
                //----------------
                #endregion
                #region "「Rideの表示位置」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_文字列リスト(

                        パネル名:
                        "Rideの表示位置",

                        選択肢初期値リスト:
                        new[] { "左", "右" },

                        初期選択肢番号:
                        (user.表示レーンの左右.Rideは左) ? 0 : 1,

                        値の変更処理:
                        (panel) => {
                    user.表示レーンの左右 = new 表示レーンの左右()
                    {
                        Rideは左   = (((パネル_文字列リスト)panel).現在選択されている選択肢の番号 == 0),
                        Chinaは左  = user.表示レーンの左右.Chinaは左,
                        Splashは左 = user.表示レーンの左右.Splashは左,
                    };
                }
                        ));
                //----------------
                #endregion
                #region "「Chinaの表示位置」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_文字列リスト(

                        パネル名:
                        "Chinaの表示位置",

                        選択肢初期値リスト:
                        new[] { "左", "右" },

                        初期選択肢番号:
                        (user.表示レーンの左右.Chinaは左) ? 0 : 1,

                        値の変更処理:
                        (panel) => {
                    user.表示レーンの左右 = new 表示レーンの左右()
                    {
                        Rideは左   = user.表示レーンの左右.Rideは左,
                        Chinaは左  = (((パネル_文字列リスト)panel).現在選択されている選択肢の番号 == 0),
                        Splashは左 = user.表示レーンの左右.Splashは左,
                    };
                }
                        ));
                //----------------
                #endregion
                #region "「Splashの表示位置」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_文字列リスト(

                        パネル名:
                        "Splashの表示位置",

                        選択肢初期値リスト:
                        new[] { "左", "右" },

                        初期選択肢番号:
                        (user.表示レーンの左右.Splashは左) ? 0 : 1,

                        値の変更処理:
                        (panel) => {
                    user.表示レーンの左右 = new 表示レーンの左右()
                    {
                        Rideは左   = user.表示レーンの左右.Rideは左,
                        Chinaは左  = user.表示レーンの左右.Splashは左,
                        Splashは左 = (((パネル_文字列リスト)panel).現在選択されている選択肢の番号 == 0),
                    };
                }
                        ));
                //----------------
                #endregion
                #region "「ドラムサウンド」ON/OFFトグル "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_ONOFFトグル(

                        パネル名:
                        "ドラムサウンド",

                        初期状態はON:
                        user.ドラムの音を発声する,

                        値の変更処理:
                        (panel) => {
                    user.ドラムの音を発声する = ((パネル_ONOFFトグル)panel).ONである;
                }
                        ));
                //----------------
                #endregion
                #region "「レーン配置」リスト "
                //----------------
                {
                    var 選択肢リスト = 演奏.BASIC.レーンフレーム.レーン配置リスト.Keys.ToList();

                    this._ルートパネルフォルダ.子パネルリスト.Add(

                        new パネル_文字列リスト(

                            パネル名:
                            "レーン配置",

                            選択肢初期値リスト:
                            選択肢リスト,

                            初期選択肢番号:
                            (選択肢リスト.Contains(user.レーン配置)) ? 選択肢リスト.IndexOf(user.レーン配置) : 0,

                            値の変更処理:
                            (panel) => {
                        user.レーン配置 = 選択肢リスト[((パネル_文字列リスト)panel).現在選択されている選択肢の番号];
                    }
                            ));
                }
                //----------------
                #endregion
                #region "「レーンの透明度」数値ボックス "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_整数(

                        パネル名:
                        "レーンの透明度",

                        最小値:
                        0,

                        最大値:
                        100,

                        初期値:
                        user.レーンの透明度,

                        増加減単位値:
                        5,

                        単位:
                        "%",

                        値の変更処理:
                        (panel) => {
                    user.レーンの透明度 = ((パネル_整数)panel).現在の値;
                }
                        ));
                //----------------
                #endregion
                #region "「演奏スピード」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_倍率(

                        パネル名:
                        "演奏スピード",

                        初期値:
                        user.再生速度,

                        最小倍率:
                        0.1,

                        最大倍率:
                        2.0,

                        増減量:
                        0.1,

                        値の変更処理:
                        (panel) => {
                    user.再生速度 = ((パネル_倍率)panel).現在値;

                    // キャッシュをすべて削除するために、世代を2つ進める。
                    App.WAVキャッシュレンタル.世代を進める();
                    App.WAVキャッシュレンタル.世代を進める();
                }
                        ));
                //----------------
                #endregion
                #region "「小節線と拍線の表示」ON/OFFトグル "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_ONOFFトグル(

                        パネル名:
                        "小節線と拍線の表示",

                        初期状態はON:
                        user.演奏中に小節線と拍線を表示する,

                        値の変更処理:
                        (panel) => {
                    user.演奏中に小節線と拍線を表示する = ((パネル_ONOFFトグル)panel).ONである;
                }
                        ));
                //----------------
                #endregion
                #region "「小節番号の表示」ON/OFFトグル "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_ONOFFトグル(

                        パネル名:
                        "小節番号の表示",

                        初期状態はON:
                        user.演奏中に小節番号を表示する,

                        値の変更処理:
                        (panel) => {
                    user.演奏中に小節番号を表示する = ((パネル_ONOFFトグル)panel).ONである;
                }
                        ));
                //----------------
                #endregion


                // システム設定(全ユーザ共通)

                #region "「入力発声スレッドのスリープ量」リスト "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_文字列リスト(

                        パネル名:
                        "入力発声スレッドのスリープ量",

                        選択肢初期値リスト:
                        new[] { "1 ms", "2 ms", "3 ms", "4 ms", "5 ms", "6 ms", "7 ms", "8 ms", "9 ms", "10 ms" },

                        初期選択肢番号:
                        (App.システム設定.入力発声スレッドのスリープ量ms - 1),         // 1~10 → 0~9

                        値の変更処理:
                        (panel) => {
                    App.システム設定.入力発声スレッドのスリープ量ms = ((パネル_文字列リスト)panel).現在選択されている選択肢の番号 + 1;                 // 0~9 → 1~10
                }
                        ));
                //----------------
                #endregion
                #region "「判定位置調整」数値ボックス "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_整数(

                        パネル名:
                        "判定位置調整",

                        最小値:
                        -99,

                        最大値:
                        +99,

                        初期値:
                        App.システム設定.判定位置調整ms,

                        増加減単位値:
                        1,

                        単位:
                        "ms",

                        値の変更処理:
                        (panel) => {
                    App.システム設定.判定位置調整ms = ((パネル_整数)panel).現在の値;
                }
                        ));
                //----------------
                #endregion
                #region "「入力割り当て」パネル "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル(

                        パネル名:
                        "入力割り当て",

                        値の変更処理:
                        (panel) => {
                    this.現在のフェーズ = フェーズ.入力割り当て;
                },

                        ヘッダ色:
                        パネル.ヘッダ色種別.赤
                        ));
                //----------------
                #endregion
                #region "「曲読み込みフォルダ」パネル "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル(

                        パネル名:
                        "曲読み込みフォルダ",

                        値の変更処理:
                        (panel) => {
                    this.現在のフェーズ = フェーズ.曲読み込みフォルダ割り当て;
                },

                        ヘッダ色:
                        パネル.ヘッダ色種別.赤
                        ));
                //----------------
                #endregion

                #region "「初期化」フォルダ "
                //----------------
                {
                    var 初期化フォルダ = new パネル_フォルダ(

                        パネル名:
                        "初期化",

                        親パネル:
                        this._ルートパネルフォルダ,

                        値の変更処理:
                        (panel) => {
                        this._パネルリスト.子のパネルを選択する();
                        this._パネルリスト.フェードインを開始する();
                    });

                    this._ルートパネルフォルダ.子パネルリスト.Add(初期化フォルダ);

                    // 子フォルダツリーの構築

                    #region "「戻る」システムボタン "
                    //----------------
                    初期化フォルダ.子パネルリスト.Add(

                        new パネル_システムボタン(

                            パネル名:
                            "戻る",

                            値の変更処理:
                            (panel) => {
                        this._パネルリスト.親のパネルを選択する();
                        this._パネルリスト.フェードインを開始する();
                    }
                            ));
                    //----------------
                    #endregion

                    #region "「設定を初期化」パネル"
                    //----------------
                    初期化フォルダ.子パネルリスト.Add(

                        new パネル(

                            パネル名:
                            "設定を初期化",

                            値の変更処理:
                            new Action <パネル>((panel) => {
                        App.システム設定を初期化する();
                        this.現在のフェーズ = フェーズ.再起動;
                    })
                            ));
                    //----------------
                    #endregion
                    #region "「曲DBを初期化」パネル"
                    //----------------
                    初期化フォルダ.子パネルリスト.Add(

                        new パネル(

                            パネル名:
                            "曲DBを初期化",

                            値の変更処理:
                            new Action <パネル>((panel) => {
                        App.曲データベースを初期化する();
                        this.現在のフェーズ = フェーズ.再起動;
                    })
                            ));
                    //----------------
                    #endregion
                    #region "「ユーザDBを初期化」パネル"
                    //----------------
                    初期化フォルダ.子パネルリスト.Add(

                        new パネル(

                            パネル名:
                            "ユーザDBを初期化",

                            値の変更処理:
                            new Action <パネル>((panel) => {
                        App.ユーザデータベースを初期化する();
                        this.現在のフェーズ = フェーズ.再起動;
                    })
                            ));
                    //----------------
                    #endregion

                    初期化フォルダ.子パネルリスト.SelectFirst();
                }
                //----------------
                #endregion

                #region "「設定完了」システムボタン "
                //----------------
                this._ルートパネルフォルダ.子パネルリスト.Add(

                    new パネル_システムボタン(

                        パネル名:
                        "設定完了",

                        値の変更処理:
                        (panel) => {
                    this._パネルリスト.フェードアウトを開始する();
                    App.ステージ管理.アイキャッチを選択しクローズする(nameof(アイキャッチ.シャッター));
                    this.現在のフェーズ = フェーズ.フェードアウト;
                }
                        ));
                //----------------
                #endregion


                // 最後のパネルを選択。
                this._ルートパネルフォルダ.子パネルリスト.SelectLast();

                // ルートパネルフォルダを最初のツリーとして表示する。
                this._パネルリスト.パネルリストを登録する(this._ルートパネルフォルダ);

                // ルートパネルフォルダを活性化する。
                this._ルートパネルフォルダ.活性化する();


                App.システムサウンド.再生する(システムサウンド種別.オプション設定ステージ_開始音);
            }
        }
Esempio n. 2
0
 public void パネルリストを登録する(パネル_フォルダ root)
 {
     this._ルートパネルフォルダ = root;
     this._現在のパネルフォルダ = root;
 }