/// <summary> /// チーム詳細表示用コントロールの設定 /// </summary> /// <param name="iControl">コントロール</param> public void SetTeamDisplay(TeamDisplay iControl) { mTeamDisplayControl = iControl; }
/// <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; } }