Beispiel #1
0
        /************************************************************************/
        /* アクセサ                                                             */
        /************************************************************************/

        /// <summary>
        /// 参加メンバーを表としてコントロールを生成する
        /// </summary>
        /// <param name="iMemberList"></param>
        public void SetJoinMemberList(List <BattleManager.SBattleJoinInfo> iMemberList)
        {
            //まずはコントロールを作成
            var control_List = new List <TeamDisplayMember>();
            int color_Index  = 0;
            var color_List   = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };
            var margin = new Thickness();

            MemberGrid.Children.Clear();
            foreach (var iMember in iMemberList)
            {
                var control = new TeamDisplayMember();
                control.Margin     = margin;
                control.Background = color_List[color_Index % 2];
                control.SetJoinMemberInfo(control_List.Count, iMember);
                control_List.Add(control);
                MemberGrid.Children.Add(control);

                margin.Top += control.Height;
                ++color_Index;
            }

            //コントロール分だけ自分のコントロールのサイズを変更
            MemberGrid.Width  = control_List[0].Width;
            Width             = MemberGrid.Width + 44;
            MemberGrid.Height = (control_List[0].Height * control_List.Count);
            Height            = MemberGrid.Height + IndexGrid.Height + 44;
        }
        //============================================================================
        //! 選択していないメンバーリストの更新
        private void _RefreshJoinMemberList()
        {
            MemberStackPanel.Children.Clear();
            var set_Width   = MemberGrid.Width - 44;
            int color_Index = 0;
            var color_List  = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };

            //作成
            foreach (var iMember in BattleOperatorManager.GetInstance().GetJoinMemberList())
            {
                if (!_IsInTeamJoinMember(iMember.mJoinID))
                {
                    var control = new NoTeamMemberControl();
                    control.Width      = set_Width;
                    control.Background = color_List[color_Index % 2];
                    control.SetJoinMemberInfo(iMember);
                    control.OnSelectionFilter();
                    control.PreviewMouseLeftButtonDown += _ClickMember;
                    control.Tag = iMember;
                    MemberStackPanel.Children.Add(control);
                    ++color_Index;
                }
            }
        }
Beispiel #3
0
        /************************************************************************/
        /* 内部処理                                                             */
        /************************************************************************/

        //============================================================================
        //! メンバーリストの更新
        private void _RefreshMemberList()
        {
            //まだ無視
            if (NormalDisplayRadioButton == null)
            {
                return;
            }

            //メンバーリスト作成
            var member_List = MemberManager.GetInstance().GetMemberList((MemberManager.ESortKind)SortMemberComboBox.SelectedIndex);

            //現在のメンバー全てを設定
            MemberStackPanel.Children.Clear();
            var set_Width  = MemberScrollViewer.Width;
            int index      = 0;
            var color_List = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };

            //通常表示
            if (NormalDisplayRadioButton.IsChecked == true)
            {
                foreach (var iMember in member_List)
                {
                    var control = new MemberListControl();
                    control.Width               = set_Width;
                    control.Background          = color_List[index % 2];
                    control.EditButton.TabIndex = iMember.mID;
                    control.EditButton.Click   += _ClickEditMember;
                    control.SetMemberInfo(iMember);
                    MemberStackPanel.Children.Add(control);

                    ++index;
                }
            }
            else
            {
                foreach (var iMember in member_List)
                {
                    var control = new MemberMinListControl();
                    control.Width               = set_Width;
                    control.Background          = color_List[index % 2];
                    control.EditButton.TabIndex = iMember.mID;
                    control.EditButton.Click   += _ClickEditMember;
                    control.SetMemberInfo(iMember);
                    MemberStackPanel.Children.Add(control);

                    ++index;
                }
            }

            //追加コントロール
            var add_Contrl = new MemberAddControl();

            add_Contrl.AddButton.Click += _ClickAddMember;
            MemberStackPanel.Children.Add(add_Contrl);
        }
        //============================================================================
        //! チームリストの更新
        private void _RefreshTeamList()
        {
            TeamStackPanel.Children.Clear();
            var set_Width   = TeamGrid.Width - 44;
            var color_Index = 0;
            var color_List  = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };

            foreach (var iTeam in mTeamList)
            {
                var control = new TeamControl();
                control.Background = color_List[color_Index % 2];
                control.SetTeamInfo(iTeam.mTeamID, iTeam.mTeamName);
                control.RemoveButton.IsEnabled = mTeamOperateFlg;
                control.RemoveButton.Click    += _ClickRemoveTeam;
                control.RemoveButton.TabIndex  = iTeam.mTeamID;
                control.EditButton.IsEnabled   = mTeamOperateFlg;
                control.EditButton.Click      += _ClickEditTeam;
                control.EditButton.TabIndex    = iTeam.mTeamID;
                control.OpenCloseButton.Click += _ClickTeamInfoOpenClose;
                control.TabIndex = iTeam.mTeamID;
                control.SetOpenClose(iTeam.mCloseFlg);

                //チームに登録されているメンバーを設定
                int join_Index = 0;
                foreach (var iJoinMemberID in iTeam.mJoinIDList)
                {
                    //戻ってきたメンバーごとのコントロールの削除ボタンの設定
                    var in_Control = control.AddJoinMember(iJoinMemberID);
                    in_Control.RemoveButton.Tag      = iTeam.mTeamID;
                    in_Control.RemoveButton.TabIndex = join_Index;
                    in_Control.RemoveButton.Click   += _ClickRemoveMember;
                    ++join_Index;
                }
                control.RefreshControlSize();

                //チームスタックに挿入
                TeamStackPanel.Children.Add(control);
                ++color_Index;
            }

            //追加ボタンを追加
            if (mTeamOperateFlg)
            {
                var control = new TeamAddControl();
                control.AddButton.Click += _ClickAddTeam;
                control.Width            = set_Width;
                TeamStackPanel.Children.Add(control);
            }
        }
        //============================================================================
        //! 選択していないメンバーリストの更新
        private void _RefreshNonSelectMemberList()
        {
            NonSelectMemberStackPanel.Children.Clear();
            var set_Width   = NonSelectMemberScrollViewer.Width;
            int color_Index = 0;
            var color_List  = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };

            //メンバーリスト作成
            var member_List = MemberManager.GetInstance().GetMemberList((MemberManager.ESortKind)SortMemberComboBox.SelectedIndex);

            //検索情報
            string search_member_name  = "";
            int    search_character_id = -1;

            if (IsOpenSearchWindow())
            {
                search_member_name  = mSearchWindow.GetSearchMemberName();
                search_character_id = mSearchWindow.GetSearchCharacterID();
            }

            //作成
            foreach (var iMember in member_List)
            {
                if (!_IsJoinMember(iMember.mID))
                {
                    //サーチチェック
                    if (search_member_name.Length > 0 && iMember.mName.IndexOf(search_member_name) == -1)
                    {
                        continue;
                    }
                    if (search_character_id != -1 && search_character_id != iMember.mDefaultCharacterID)
                    {
                        continue;
                    }

                    var control = new NonSelectMemberControl();
                    control.Width              = set_Width;
                    control.EntryButton.Tag    = iMember;
                    control.EntryButton.Click += _ClickJoin;
                    control.Background         = color_List[color_Index % 2];
                    control.SetMemberInfo(iMember);
                    NonSelectMemberStackPanel.Children.Add(control);
                    ++color_Index;
                }
            }
        }
Beispiel #6
0
        /// <summary>
        /// 参加メンバーIDの追加
        /// </summary>
        /// <param name="iJoinIndex">参加メンバーID</param>
        public InTeamMemberControl AddJoinMember(int iJoinIndex)
        {
            //コントロールの設定
            var color_List = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };
            var control = new InTeamMemberControl();

            control.Width      = Width;
            control.Background = color_List[mMemberList.Count % 2];
            control.TabIndex   = mMemberList.Count;
            var get_Info = new BattleManager.SBattleJoinInfo();

            BattleOperatorManager.GetInstance().GetJoinInfo(ref get_Info, iJoinIndex);
            control.SetJoinMemberInfo(mMemberList.Count, get_Info);
            MemberStackPanel.Children.Add(control);
            mMemberList.Add(iJoinIndex);
            MemberValTextBlock.Text = string.Format("このチームには{0}人所属しています", mMemberList.Count);
            return(control);
        }
        /************************************************************************/
        /* 内部処理                                                             */
        /************************************************************************/

        //============================================================================
        //! キャラクターリストの作成
        public void _CreateCharacterList()
        {
            var set_Width   = SelectCharacterScrollViewer.Width;
            int color_Index = 0;
            var color_List  = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };

            //作成
            foreach (var iCharacter in PresetManager.GetInstance().GetCharacterList())
            {
                var control = new CharacterSelectListControl();
                control.Width      = set_Width;
                control.Background = color_List[color_Index % 2];
                control.SetCharacterInfo(iCharacter);
                control.TabIndex = iCharacter.mIndex;
                control.PreviewMouseLeftButtonDown += _ClickCharacter;
                SelectCharacterStackPanel.Children.Add(control);
                ++color_Index;
            }
        }
Beispiel #8
0
        /************************************************************************/
        /* 公開処理                                                             */
        /************************************************************************/

        /// <summary>
        /// 設定されているプリセット名からプリセットデータをロードする
        /// </summary>
        public void LoadPreset()
        {
            try
            {
                string preset_Name = (string)DataManager.GetInstance().GetData(SaveManager.GetInstance().PresetInfoKey);
                string preset_Path = SystemUtility.GetResourcePath() + @"Preset\" + preset_Name + @"\";
                var    analayzer   = new DL.CXmlAnalyzer();
                analayzer.AnalyzeXmlFile(preset_Path + "Preset.psx");

                //背景画像の取得
                var node = analayzer.GetRootNode().GetChildNodeFromPath("Preset/BackGroundImage")[0];
                mBackgroundImage = ResourceManager.GetInstance().CreateImage(preset_Path + node.GetNodeInfo().mValue + ".adg");

                //キャラクター情報の読み込み
                node = analayzer.GetRootNode().GetChildNodeFromPath("Preset/Characters")[0];
                foreach (var iNode in node.GetChildNode("Character"))
                {
                    var info = new SCharacterInfo();
                    info.mIndex         = int.Parse(iNode.GetChildNode("Index")[0].GetNodeInfo().mValue);
                    info.mName          = iNode.GetChildNode("Name")[0].GetNodeInfo().mValue;
                    info.mIconColorList = new Color[2] {
                        SystemUtility.StringToColor(iNode.GetChildNode("UpBGColor")[0].GetNodeInfo().mValue), SystemUtility.StringToColor(iNode.GetChildNode("DownBGColor")[0].GetNodeInfo().mValue)
                    };
                    info.mNameColorList = new Color[2] {
                        SystemUtility.StringToColor(iNode.GetChildNode("FontColor")[0].GetNodeInfo().mValue), SystemUtility.StringToColor(iNode.GetChildNode("ShadowFontColor")[0].GetNodeInfo().mValue)
                    };
                    info.mIconImage = ResourceManager.GetInstance().CreateImage(preset_Path + @"\" + string.Format("CIC{0}.adg", info.mIndex));

                    mCharacterMap.Add(info.mIndex, info);
                }

                mUnknownCharacterIcon = ResourceManager.GetInstance().CreateImage(SystemUtility.GetResourcePath() + @"System\CIC_UKN.adg");
            }
            catch (System.Exception iException)
            {
                SystemUtility.DisplayErrorDialog(string.Format("プリセットソースの読み込みに失敗しました\n[{0}]", iException.Message));
                System.Environment.Exit(1);
            }
        }
Beispiel #9
0
        /************************************************************************/
        /* 基本処理                                                             */
        /************************************************************************/

        /// <summary>
        /// コンストラクタ
        /// </summary>
        public SimpleTournamentResultControl(int iMemberID, BattleManager.SMemberBattleResult iResult, BattleManager.SBattleInfo iBattleInfo)
        {
            InitializeComponent();

            //情報登録
            bool team_flg = (iBattleInfo.mTeamList.Count != 0);

            MainGroupBox.Header          = "大会No." + iResult.mIndex.ToString() + " - " + iBattleInfo.mName + " -";
            TournamentKindTextBlock.Text = "種別:" + (team_flg ? "チーム戦" : "シングル戦");
            JoinNumTextBlock.Text        = "参加人数:" + iBattleInfo.mJoinList.Count.ToString() + "人";
            DateTextBlock.Text           = "開催日時 " + iBattleInfo.mDate;
            JoinTeamNumTextBlock.Text    = team_flg ? "参加チーム数:" + iBattleInfo.mTeamList.Count.ToString() + "チーム" : "";
            ResultTextBlock.Text         = "- ";
            var obj    = (SimpleTournamentObject)iBattleInfo.mBattleObject;
            var result = obj.GetSimpleTournamentResult(iBattleInfo, iMemberID);

            if (result.mRank == 1)
            {
                ResultTextBlock.Text += "優勝";
            }
            else if (result.mRank == 2)
            {
                ResultTextBlock.Text      += "準優勝";
                ResultTextBlock.Foreground = SystemUtility.CreateLinearGradientBrash(SystemUtility.StringToColor("#FFFFFF00"), SystemUtility.StringToColor("#FFFFFFF55"));
            }
            else
            {
                ResultTextBlock.Text      += ("第" + result.mRank + "位");
                ResultTextBlock.Foreground = new SolidColorBrush(SystemUtility.StringToColor("#FF5555FF"));
            }
            ResultTextBlock.Text        += " -";
            BeginVersusNumTextBlock.Text = result.mBeginVersus.ToString() + "回戦からの開始";
            var character_Info = PresetManager.GetInstance().GetCharacterInfo(iResult.mUseCharacterID);

            CharacterIcon.Source       = character_Info.mIconImage;
            UseCharacterTextBlock.Text = "使用キャラ:" + character_Info.mName;
        }
        //============================================================================
        //! 選択済みのメンバーリストの更新
        private void _RefreshSelectMemberList()
        {
            SelectMemberStackPanel.Children.Clear();
            var set_Width      = SelectMemberScrollViewer.Width;
            var member_Manager = MemberManager.GetInstance();
            var color_Index    = 0;
            var color_List     = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555"))
            };

            foreach (var iJoinMember in mJoinMemberList)
            {
                var control = new SelectMemberControl();
                control.Width = set_Width;
                control.RemoveEntryButton.Tag    = iJoinMember;
                control.RemoveEntryButton.Click += _ClickJoinRemove;
                control.CollideRectangle.PreviewMouseLeftButtonDown += _ClickJoinMember;
                control.Background = color_List[color_Index % 2];
                control.SetMemberInfo(iJoinMember.mJoinID, member_Manager.GetMemberInfo(iJoinMember.mMemberID).mName, iJoinMember.mUseCharacterID);
                control.TabIndex = SelectMemberStackPanel.Children.Count;
                SelectMemberStackPanel.Children.Add(control);
                ++color_Index;
            }
        }
        /************************************************************************/
        /* コールバック処理                                                     */
        /************************************************************************/

        //============================================================================
        //! テキストが変更された時に呼ばれる
        private void _ChangeText(object iSender, TextChangedEventArgs iArgs)
        {
            var str    = TweetTextBox.Text.Trim();
            int result = 130 - str.Length;

            //URL系統のチェック
            int pos = 0;

            while (true)
            {
                var begin_pos = str.IndexOf("http://", pos);
                if (begin_pos == -1)
                {
                    begin_pos = str.IndexOf("https://", pos);
                }

                //終了
                if (begin_pos == -1)
                {
                    break;
                }

                //URLの文字数取得
                var end_pos_list  = new int[] { str.IndexOf(" ", begin_pos), str.IndexOf(" ", begin_pos), str.IndexOf("\n", begin_pos), str.IndexOf("\t", begin_pos) };
                var end_pos_index = -1;
                foreach (var iIndex in System.Linq.Enumerable.Range(0, end_pos_list.Length))
                {
                    //入れ替え
                    if (end_pos_list[iIndex] != -1 && (end_pos_index == -1 || end_pos_index > end_pos_list[iIndex]))
                    {
                        end_pos_index = iIndex;
                    }
                }

                //文字数
                var not_found_end = (end_pos_index == -1);
                var url           = not_found_end ? str.Substring(pos) : str.Substring(pos, end_pos_list[end_pos_index] - begin_pos - 1);
                if (url.Length > 23)
                {
                    result += (url.Length - 23);
                }

                //終了
                if (not_found_end)
                {
                    break;
                }
                pos = end_pos_list[end_pos_index];
            }

            //予想ツイート文字数設定
            CharaLengthTextBlock.Text = string.Format("残入力可能文字数:{0}", result);
            var color = (result < 0) ? "#FFFF0000" : "#FF0000FF";

            CharaLengthTextBlock.Foreground = new System.Windows.Media.SolidColorBrush(SystemUtility.StringToColor(color));
            TweetButton.IsEnabled           = (result >= 0);
        }
        //============================================================================
        //! ツールウィンドウの更新
        private void _RefreshOptionWindow()
        {
            //まずは対戦可能な表示から追加
            var check_List = new List <int>();

            mOptionWindow.VersusDisplayStackPanel.Children.Clear();
            int color_Index = 0;
            var color_List  = new Brush[2] {
                new SolidColorBrush(SystemUtility.StringToColor("#AA000000")), new SolidColorBrush(SystemUtility.StringToColor("#AA555555"))
            };

            foreach (var iIndex in System.Linq.Enumerable.Range(0, mLeafInfoList.Count))
            {
                //既に追加済みの場合は無視
                if (check_List.IndexOf(iIndex) != -1)
                {
                    continue;
                }
                check_List.Add(iIndex);

                //チーム未設定の場合は無視
                var leaf = mLeafInfoList[iIndex];
                if (!leaf.mLabelControl.IsSettingInfo())
                {
                    continue;
                }

                //対戦相手の取得
                var target_Index = _GetBattleTargetIndex(iIndex);
                if (target_Index != -1)
                {
                    //追加
                    var control = new TournamentWaitControl();
                    control.WaitNoTextBlock.Text = string.Format("対戦待機No.{0}", mOptionWindow.VersusDisplayStackPanel.Children.Count);
                    control.SetUpWaitInfo(leaf.mLabelControl.GetTopName(), leaf.mLabelControl.GetDisplayImageSource());
                    var my_Round = leaf.mPointRoot.Count;
                    leaf = mLeafInfoList[target_Index];
                    control.SetDownWaitInfo(leaf.mLabelControl.GetTopName(), leaf.mLabelControl.GetDisplayImageSource());
                    var target_Round = leaf.mPointRoot.Count;

                    //次がルートの場合は終わり
                    var next = leaf.mPointRoot[leaf.mPointRoot.Count - 1].GetDestConnectPoint();
                    if (next != null && next.GetDepth() == 0)
                    {
                        control.SetRoundDepth(-1);
                    }
                    else
                    {
                        control.SetRoundDepth((my_Round > target_Round) ? my_Round : target_Round);
                    }
                    control.MainGrid.Background         = color_List[color_Index % 2];
                    control.TabIndex                    = iIndex;
                    control.MouseEnter                 += _MouseEnterWaitLeaf;
                    control.MouseLeave                 += _MouseLeaveWaitLeaf;
                    control.PreviewMouseLeftButtonDown += _MouseClickWaitLeaf;
                    mOptionWindow.VersusDisplayStackPanel.Children.Add(control);
                    check_List.Add(target_Index);

                    ++color_Index;
                }
            }

            //リザルト追加
            mOptionWindow.ResultDisplayStackPanel.Children.Clear();
            foreach (var iIndex in System.Linq.Enumerable.Range(0, mResultList.Count))
            {
                //追加
                var info    = mResultList[iIndex];
                var control = new TournamentResultControl();
                control.WaitNoTextBlock.Text = string.Format("対戦結果No.{0}", mOptionWindow.ResultDisplayStackPanel.Children.Count);
                var up_Leaf   = mLeafInfoList[info.mLeafIndexList[0]];
                var down_Leaf = mLeafInfoList[info.mLeafIndexList[1]];
                control.SetUpWaitInfo(up_Leaf.mLabelControl.GetTopName(), up_Leaf.mLabelControl.GetDisplayImageSource());
                control.SetDownWaitInfo(down_Leaf.mLabelControl.GetTopName(), down_Leaf.mLabelControl.GetDisplayImageSource());
                control.SetRoundDepth(info.mRoundIndex);
                control.SetWinIndex(info.mWinLeafIndex);
                control.Background = color_List[0];

                //結果解除が出来るかどうかで変更
                if (IsRemoveBattleResult(info.mLeafIndexList[0], info.mLeafIndexList[1]))
                {
                    control.RemoveResultButton.TabIndex = iIndex;
                    control.RemoveResultButton.Click   += _ClickRemoveResult;
                }
                else
                {
                    control.RemoveResultButton.IsEnabled = false;
                }

                mOptionWindow.ResultDisplayStackPanel.Children.Add(control);
                ++color_Index;
            }
        }
Beispiel #13
0
        //============================================================================
        //! 画面中でマウスの左ボタンが離された
        private void _ReleaseMouseLeftButton(object iSender, MouseButtonEventArgs iArgs)
        {
            if (mDragMember != null)
            {
                int member_Index       = mDragMember.TabIndex;
                int current_Team_Index = mOperator.GetMemberJoinTeamIndex(member_Index);

                try
                {
                    //パネルに所属させる
                    if (mCurrentCursorPosition != -1)
                    {
                        if (mCurrentCursorPosition == 0)
                        {
                            mOperator.RemoveTeamMember(member_Index);
                        }
                        else
                        {
                            mOperator.AddTeamMember(mCurrentCursorPosition - 1, member_Index);
                        }
                    }

                    //ドラッグ終了
                    _ClearDrag();
                    _RefreshDisplay();

                    //ここで全てのメンバーの所属が決まったら次に進むかを聞いてOKなら進む
                    foreach (var iInfo in mOperator.GetMemberList())
                    {
                        if (mOperator.GetMemberJoinTeamIndex(iInfo.mMemberID) == -1)
                        {
                            return;
                        }
                    }

                    //1チームしかない場合はエラー
                    if (TeamWrapPanel.Children.Count < 2)
                    {
                        SystemUtility.DisplayErrorDialog("チームが1つ以下です、チームを2チーム以上に分割して下さい");
                        throw new System.Exception();
                    }

                    //各チームにメンバーが一人は所属していること
                    foreach (TeamDetailsControl iControl in TeamWrapPanel.Children)
                    {
                        if (iControl.MemberWrapPanel.Children.Count == 0)
                        {
                            SystemUtility.DisplayErrorDialog("一人のメンバーも所属していないチームが存在しています");
                            throw new System.Exception();
                        }
                    }

                    //確認
                    System.Media.SystemSounds.Question.Play();
                    var result = MessageBox.Show("このチーム編成で先に進みますか?", "確認", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
                    if (result == MessageBoxResult.Yes)
                    {
                        //予約先へ進む
                        if (mOperator.SetCommitTeam(true))
                        {
                            SceneManager.GetInstance().AdvanceScene(mNextScene);

                            var stack = TeamWrapPanel.Background;
                            TeamWrapPanel.Background = new SolidColorBrush(SystemUtility.StringToColor("#C8000000"));
                            TeamWrapPanel.UpdateLayout();
                            mCurrentTeamBitmap       = SystemUtility.GetCaptureControlBitmap(TeamWrapPanel);
                            TeamWrapPanel.Background = stack;
                        }
                    }
                    else
                    {
                        throw new System.Exception();
                    }
                }
                catch (System.Exception)
                {
                    mOperator.RemoveTeamMember(member_Index);
                    _RefreshDisplay();
                }
            }
        }