Ejemplo n.º 1
0
        /// <summary>
        /// c側の駒台の領域を返す。
        ///
        /// reverse : 盤面を180度回転するのかのフラグ
        /// </summary>
        /// <param name="c"></param>
        /// <returns></returns>
        private Rectangle HandTableRectangle(ShogiCore.Color c, bool reverse)
        {
            if (reverse)
            {
                c = c.Not();
            }

            var v = PieceTableVersion;

            return(new Rectangle(hand_table_pos[v, (int)c], hand_table_size[v]));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// c側の駒台の領域を返す。
        /// </summary>
        /// <param name="c"></param>
        /// <returns></returns>
        private Rectangle HandTableRectangle(ShogiCore.Color c)
        {
            var reverse = gameServer.BoardReverse;

            if (reverse)
            {
                c = c.Not();
            }

            var v = PieceTableVersion;

            return(new Rectangle(hand_table_pos[v, (int)c], hand_table_size[v]));
        }
Ejemplo n.º 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にもたせておく。
            }
        }