//============================================================================
        //! リーフラベルが右クリックされた時に呼ばれる処理
        private void _MouseRightClickLeafLabel(object iSender, MouseEventArgs iArgs)
        {
            //チェック
            var control = iSender as TournamentLabelControl;

            if (control == null)
            {
                return;
            }

            //チーム詳細表示
            var manager    = BattleOperatorManager.GetInstance();
            var team_Index = mLeafInfoList[control.TabIndex].mLabelControl.GetSetInfo();
            var team_Info  = manager.GetTeamInfo(team_Index);
            var list       = new List <BattleManager.SBattleJoinInfo>();

            foreach (var iJoinMemberID in team_Info.mJoinIDList)
            {
                var info = new BattleManager.SBattleJoinInfo();
                manager.GetJoinInfo(ref info, iJoinMemberID);
                list.Add(info);
            }
            mTeamDisplayControl.TeamNameTextBlock.Text = team_Info.mTeamName;
            mTeamDisplayControl.SetJoinMemberList(list);
            mTeamDisplayControl.Margin     = new Thickness();
            mTeamDisplayControl.Visibility = Visibility.Visible;
        }
Beispiel #2
0
        /************************************************************************/
        /* アクセサ                                                             */
        /************************************************************************/

        /// <summary>
        /// 参加メンバー情報の設定
        /// </summary>
        /// <param name="iJoinMemberInfo">参加メンバー情報</param>
        public void SetJoinMemberInfo(BattleManager.SBattleJoinInfo iJoinMemberInfo)
        {
            //テキスト系設定
            MemberNoTextBlock.Text   = string.Format("参加No.{0:D2}", iJoinMemberInfo.mJoinID + 1);
            MemberNameTextBlock.Text = MemberManager.GetInstance().GetMemberInfo(iJoinMemberInfo.mMemberID).mName;

            //アイコン設定
            bool set_Valid_Use_Character_ID_Flg = (iJoinMemberInfo.mUserCharacterID != -1);

            if (set_Valid_Use_Character_ID_Flg)
            {
                try
                {
                    UseCharacterImage.Source = PresetManager.GetInstance().GetCharacterInfo(iJoinMemberInfo.mUserCharacterID).mIconImage;
                }
                catch (System.Exception)
                {
                    set_Valid_Use_Character_ID_Flg = false;
                }
            }
            if (!set_Valid_Use_Character_ID_Flg)
            {
                UseCharacterImage.Source = PresetManager.GetInstance().GetUnknownCharacterIcon();
            }
        }
        /// <summary>
        /// 参加者IDから参加情報を取得
        /// </summary>
        /// <param name="oJoinInfo">参加情報出力先</param>
        /// <param name="iJoinID">参加者ID</param>
        /// <returns>取得フラグ</returns>
        public bool GetJoinInfo(ref BattleManager.SBattleJoinInfo oJoinInfo, int iJoinID)
        {
            if (!_CheckError())
            {
                return(false);
            }

            oJoinInfo = mCurrentBattleInfo.mJoinList[iJoinID];
            return(true);
        }
        /************************************************************************/
        /* アクセサ                                                             */
        /************************************************************************/

        /// <summary>
        /// 表示情報設定
        /// </summary>
        /// <param name="iInfoIndex">表示情報番号</param>
        public void SetInfo(int iInfoIndex)
        {
            string top_Name        = "";
            int    character_Index = -1;

            //チーム戦の場合
            if (BattleOperatorManager.GetInstance().IsTeamBattleFlg())
            {
                var team_Info = BattleOperatorManager.GetInstance().GetTeamInfo(iInfoIndex);
                top_Name = team_Info.mTeamName;

                var join_Info = new BattleManager.SBattleJoinInfo();
                BattleOperatorManager.GetInstance().GetJoinInfo(ref join_Info, team_Info.mJoinIDList[0]);
                character_Index = join_Info.mUserCharacterID;
            }
            //シングル戦の場合
            else
            {
                var join_Info = new BattleManager.SBattleJoinInfo();
                BattleOperatorManager.GetInstance().GetJoinInfo(ref join_Info, iInfoIndex);
                top_Name        = MemberManager.GetInstance().GetMemberInfo(join_Info.mMemberID).mName;
                character_Index = join_Info.mUserCharacterID;
            }

            //設定
            TopTextBlock.Text = top_Name;
            bool set_Valid_Use_Character_ID_Flg = (character_Index != -1);

            if (set_Valid_Use_Character_ID_Flg)
            {
                try
                {
                    TopCharacterImage.Source = PresetManager.GetInstance().GetCharacterInfo(character_Index).mIconImage;
                }
                catch (System.Exception)
                {
                    set_Valid_Use_Character_ID_Flg = false;
                }
            }
            if (!set_Valid_Use_Character_ID_Flg)
            {
                TopCharacterImage.Source = PresetManager.GetInstance().GetUnknownCharacterIcon();
            }
            TopCharacterImage.Visibility = Visibility.Visible;
            mInfoIndex = iInfoIndex;
        }
        /// <summary>
        /// メンバーIDから参加情報を取得
        /// </summary>
        /// <param name="oJoinInfo">参加情報出力先</param>
        /// <param name="iMemberID">メンバーID</param>
        /// <returns>取得フラグ</returns>
        public bool GetJoinInfoFromMemberID(BattleManager.SBattleJoinInfo oJoinInfo, int iMemberID)
        {
            if (!_CheckError())
            {
                return(false);
            }

            foreach (var iInfo in mCurrentBattleInfo.mJoinList)
            {
                if (iInfo.mMemberID == iMemberID)
                {
                    oJoinInfo = iInfo;
                    return(true);
                }
            }
            return(false);
        }
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);
        }
        /// <summary>
        /// 参加するメンバーを追加
        /// </summary>
        /// <param name="iMemberID">メンバーID</param>
        /// <param name="iCharacterID">使用キャラクター番号</param>
        public void AddMember(int iMemberID, int iCharacterID)
        {
            if (_CheckLockJoinMember())
            {
                return;
            }

            //既に追加済みの場合はエラーとする
            foreach (var iInfo in mCurrentBattleInfo.mJoinList)
            {
                if (iInfo.mMemberID == iMemberID)
                {
                    throw new System.Exception();
                }
            }

            //追加
            var member_Info = new BattleManager.SBattleJoinInfo();

            member_Info.mMemberID        = iMemberID;
            member_Info.mUserCharacterID = iCharacterID;
            member_Info.mJoinID          = mCurrentBattleInfo.mJoinList.Count;
            mCurrentBattleInfo.mJoinList.Add(member_Info);
        }
        /// <summary>
        /// スクリーンショットを撮る準備(チーム画像をスクリーンショットグリッドに入れておく)
        /// </summary>
        public void BeginScreenShot()
        {
            //必要なコントロールを作成
            var control_List = new List <TeamDisplay>();
            var manager      = BattleOperatorManager.GetInstance();
            var team_Val     = manager.GetTeamVal();

            foreach (var iTeamIndex in System.Linq.Enumerable.Range(0, team_Val))
            {
                var team_Info = manager.GetTeamInfo(iTeamIndex);
                var list      = new List <BattleManager.SBattleJoinInfo>();
                foreach (var iJoinMemberID in team_Info.mJoinIDList)
                {
                    var info = new BattleManager.SBattleJoinInfo();
                    manager.GetJoinInfo(ref info, iJoinMemberID);
                    list.Add(info);
                }

                var control = new TeamDisplay();
                control.TeamNameTextBlock.Text = team_Info.mTeamName;
                control.SetJoinMemberList(list);
                control_List.Add(control);
            }

            //正方形にできるだけなるように敷き詰める数を取得
            var val = 1;

            while (true)
            {
                var check = Math.Pow(2, (double)val);
                if (team_Val < check)
                {
                    break;
                }
                ++val;
            }

            //グリッドに挿入
            var margin     = new Thickness();
            var grid       = SystemManager.GetInstance().GetScreenShotGrid();
            var sum_Height = 0.0;

            while (control_List.Count > 0)
            {
                //横方向への挿入
                margin.Left = 0;
                var max_Height = 0.0;
                var sum_Width  = 0.0;
                foreach (var iIndex in System.Linq.Enumerable.Range(0, val))
                {
                    var control = control_List[0];
                    control.Margin = margin;
                    grid.Children.Add(control);

                    //横へずらす
                    margin.Left += control.Width;
                    sum_Width   += control.Width;

                    //縦の最大サイズ取得
                    if (max_Height < control.Height)
                    {
                        max_Height = control.Height;
                    }

                    //先頭を削除して無くなったら終わり
                    control_List.RemoveAt(0);
                    if (control_List.Count == 0)
                    {
                        break;
                    }
                }

                //横方向へサイズ変更チェック
                if (grid.Width < sum_Width)
                {
                    grid.Width = sum_Width;
                }

                //縦移動
                margin.Top += max_Height;
                sum_Height += max_Height;
            }

            //縦方向へサイズ変更チェック
            if (grid.Height < sum_Height)
            {
                grid.Height = sum_Height;
            }
        }