void BuildData() { foreach (var playerReport in _homeReport.Players) { _curMoveResultsIndex = 0; _moveResults = playerReport.MoveResults; for (; _curMoveResultsIndex < _moveResults.Count; _curMoveResultsIndex++) { _curMoveResult = _moveResults[_curMoveResultsIndex]; var stateReport = _curMoveResult.StateData; if (stateReport.HasBall == 1) { ControlRound++; } if (stateReport.State == 10) { int a = 0; string s = a.ToString(); } switch (stateReport.ClassId) { case (int)ReportAsset.PlayerStateAsset.CLASSIdShoot: BuildShoot(stateReport); break; default: BuildDefault(stateReport); break; } BuildFoul(stateReport.FoulLevel); } } }
public PlayerMoveReport SaveRpt(IPlayer player) { var state = CreateStateRpt(player); FillStateRpt(player, state); var rpt = new PlayerMoveReport(); rpt.AsRound = player.Match.Status.Round; rpt.StateData = state; return(rpt); }
/// <summary> /// Play a <see cref="PlayerProcess"/>. /// 播放一个球员的回合 /// </summary> /// <param name="m">Manager loop index.</param> /// <param name="p">Player loop index.</param> /// <param name="process"><see cref="PlayerProcess"/>.</param> private void PlayPlayerProcess(int m, int p, PlayerMoveReport process) { if (null == process) { return; } ShowProcess(process.AsRound, Convert.ToInt32(2 * 60 / Defines.Match.ROUND_TIME)); Player player = _playerCache[String.Format("player_{0}_{1}", m, p)]; player.Skill = string.Empty; #region 显示球员状态 player.DisplayState(process.StateData.State); #endregion #region 模型效果 string skillStr = process.StateData.Disable ? "下场|" : string.Empty; if (process.StateData.ModelId != 0) { skillStr = string.Concat(skillStr, "模型[", process.StateData.ModelId, "]"); } player.Skill = skillStr; #endregion #region 球员名字显示效果 if (process.StateData.NameVisible == 1) { player.MarkName((m == 0), false); } else { player.MarkNormal(); } #endregion #region 球员技能 ManagerReport[] managers = new[] { _match.HomeManager, _match.AwayManager }; for (int i = 0; i < managers[m].Players[p].SkillResults.Count; i++) { if (managers[m].Players[p].SkillResults[i].Round == _round) { player.Skill += "技能" + managers[m].Players[p].SkillResults[i].SkillId; } } #endregion #region 红黄牌效果 // red card or injured if (process.StateData.FoulLevel == Defines.FoulLevel.RED_CARD || process.StateData.FoulLevel == Defines.FoulLevel.INJURED) { player.Dead(); } else { bool yellowFlag = process.StateData.FoulLevel == Defines.FoulLevel.YELLOW_CARD; bool homeFlag = m == 0; player.Active(homeFlag, yellowFlag); } #endregion #region 动画效果 var coordinate = process.StateData.Current; double x = GetPoint(coordinate.X); double y = GetPoint(coordinate.Y); player.ToolTip = String.Format("{0},{1}", coordinate.X, coordinate.Y); player.Angle = GetRotateAngle(process.StateData.Angle); // play the moving movie. var doubleAnimationX = new DoubleAnimation(); doubleAnimationX.From = Convert.ToDouble(player.GetValue(Canvas.LeftProperty)); doubleAnimationX.To = x; doubleAnimationX.Duration = new Duration(TimeSpan.FromMilliseconds(Defines.Match.ROUND_TIME * 1000)); Storyboard.SetTarget(doubleAnimationX, player); Storyboard.SetTargetProperty(doubleAnimationX, new PropertyPath("(Canvas.Left)")); var doubleAnimationY = new DoubleAnimation(); doubleAnimationY.From = Convert.ToDouble(player.GetValue(Canvas.TopProperty)); doubleAnimationY.To = y; doubleAnimationY.Duration = new Duration(TimeSpan.FromMilliseconds(Defines.Match.ROUND_TIME * 1000)); Storyboard.SetTarget(doubleAnimationY, player); Storyboard.SetTargetProperty(doubleAnimationY, new PropertyPath("(Canvas.Top)")); var storyboard = new Storyboard(); storyboard.Children.Add(doubleAnimationX); storyboard.Children.Add(doubleAnimationY); storyboard.Begin(); #endregion }