Esempio n. 1
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();
                }
            }
        }