Exemple #1
0
 /// <summary>
 /// 対局結果の保存設定
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void button1_Click(object sender, System.EventArgs e)
 {
     using (var dialog = new GameResultWindowSettingDialog())
     {
         FormLocationUtility.CenteringToThisForm(dialog, this);
         dialog.ShowDialog(this);
     }
     SelectListView();
 }
Exemple #2
0
        /// <summary>
        /// 詰検討エンジンの設定ダイアログを表示する。
        /// (イベントハンドラを適切に設定した上で)
        /// </summary>
        private void ShowMateEngineSettingDialog()
        {
            using (var dialog = new ConsiderationEngineSettingDialog())
            {
                FormLocationUtility.CenteringToThisForm(dialog, this);
                var setting = TheApp.app.Config.MateEngineSetting;
                dialog.ViewModel.DialogType = ConsiderationEngineSettingDialogType.MateSetting;
                dialog.ViewModel.AddPropertyChangedHandler("StartButtonClicked", _ => ToggleMateConsideration());
                dialog.Bind(setting);

                dialog.ShowDialog(this);
            }
        }
Exemple #3
0
        /// <summary>
        /// 選択ダイアログの生成
        /// </summary>
        private void CreateEngineSelectionDialog(SCore.Color c)
        {
            // 詳細設定ボタンの無効化と、このエンジン選択ダイアログを閉じる時に詳細設定ボタンの再有効化。
            using (var dialog = new EngineSelectionDialog())
            {
                dialog.InitEngineDefines(true, false);

                var playerSettings = new[] { playerSettingControl1, playerSettingControl2 };

                // エンジンを選択し、「選択」ボタンが押された時のイベントハンドラ
                dialog.ViewModel.AddPropertyChangedHandler("ButtonClicked", (args) =>
                {
                    // これが選択された。
                    var engineDefine = (EngineDefineEx)args.value;

                    var vm = playerSettings[(int)c].ViewModel;

                    vm.EngineDefineFolderPath = engineDefine.FolderPath;
                    vm.RaisePropertyChanged("EngineSelected", null); // CPUのradio buttonを選択。先にEngineDefineを設定してからでないとエンジン選択ダイアログがまた出てしまう。

                    Debug.Assert(engineDefine.FolderPath != null);

                    var indivisualEngine = TheApp.app.EngineConfigs.NormalConfig.Find(engineDefine.FolderPath);
                    var preset           = indivisualEngine.SelectedPresetIndex;
                    if (preset < 0) // 前回未選択だと-1がありうるので0に補整してやる。
                    {
                        preset = 0;
                    }

                    var setting = TheApp.app.Config.GameSetting;
                    //setting.PlayerSetting(c).SelectedEnginePreset = preset;
                    // TwoWayでbindingしているのでこれで値変わるはずだが同じ番号が選ばれるとイベントが発生しなくて…。
                    setting.PlayerSetting(c).SetValueAndRaisePropertyChanged("SelectedEnginePreset", preset);

                    // プレイヤー表示名の変更。
                    setting.PlayerSetting(c).PlayerName = engineDefine.EngineDefine.DisplayName;

                    dialog.Close();
                });

                // modal dialogとして出すべき。
                FormLocationUtility.CenteringToThisForm(dialog, this);
                dialog.ShowDialog(Parent);
                engineSelectionDialog = dialog; // あとで何らかの操作をするときのためにMainWindowにもたせておく。
            }
        }
Exemple #4
0
        /// <summary>
        /// エンジンオプション設定ダイアログを出す。
        ///
        /// この構築のために思考エンジンに接続してoption文字列を取得しないといけなかったりしてわりと大変。
        /// </summary>
        private void ShowEngineOptionSettingDialog()
        {
            var dialog = EngineOptionSettingDialogBuilder.Build(
                EngineCommonOptionsSample.CreateEngineCommonOptions(), // 共通設定のベース
                TheApp.app.EngineConfigs.NormalConfig,                 // 共通設定の値はこの値で上書き
                ViewModel.EngineDefineFolderPath                       // 個別設定の情報はここにある。
                );

            // 構築に失敗。
            if (dialog == null)
            {
                return;
            }

            // 「詳細設定」ボタンをDisableにする。
            //ViewModel.SettingButton = false;
            // → この処理やめる。modal dialogとして出せばOk.

            FormLocationUtility.CenteringToThisForm(dialog, this.Parent as Form /* thisはControlなのでParentはFormのはず.. */);

            // modal dialogとして出す
            dialog.ShowDialog(this.Parent);
        }