/// <summary> /// /// </summary> /// <param name="play">KickoffReturnPlay</param> /// <param name="isFumble">bool</param> /// <returns>int</returns> public int MoveBallKickoffReturn(KickoffReturnPlay play, bool isFumble) { MoveChainsVariables var = MoveChains(play, isFumble); play.PlayLength = var.playLength; if (!var.isTd) { if (var.isSafety) { OnSafetyOccurred(play); if (isFumble) { OnFumbleOccurred(play.PrincipalBallcarrier, var.playLength); } } else { if (isFumble) { OnFumbleOccurred(play.PrincipalBallcarrier, var.playLength); } else { SetFirstDown(); this.game.GameAnnouncer.ReportGameEvent(play.PlayReport); } } } else { OnTouchdownScored(play); } return(var.playLength); }
/// <summary> /// /// </summary> /// <param name="kickingTeam">Team</param> /// <param name="receivingTeam">Team</param> /// <returns>int</returns> public int MoveBallKickoff(Team kickingTeam, Team receivingTeam, int kickDistance) { if (currentDirection == Direction.Left) { if ((currentIndex - kickDistance) <= 0)//touchback { kickDistance = currentIndex; currentIndex = 19; } else { currentIndex -= kickDistance; } } else if (currentDirection == Direction.Right) { if ((currentIndex + kickDistance) >= 99)//touchback { kickDistance = currentIndex; currentIndex = 79; } else { currentIndex += kickDistance; } } SetBall(currentIndex, currentDirection, receivingTeam, kickingTeam); ToggleDirection(); Player kicker = kickingTeam.TeamOffense.GetPlayerAtPosition("K"); Player returner = receivingTeam.TeamOffense.GetPlayerAtPosition("KR"); int playerIndex = receivingTeam.GetIndexOfPlayer(returner); string reportPlay = String.Format("And the kickoff by {0} is in the air! It is fielded by {1} at the {2} yardline", kicker.Name, returner.Name, CurrentYardLine); this.game.GameAnnouncer.ReportGameEvent(reportPlay); //Return the kickoff CarryStatSheet returnStats = (CarryStatSheet)game.GameStats[receivingTeam, playerIndex][StatTypes.Return]; KickoffReturnPlay kickoffReturn = new KickoffReturnPlay(this, receivingTeam, kickingTeam, returner, returnStats); int returnDistance = kickoffReturn.Execute(); MoveBallKickoffReturn(kickoffReturn, false); return(kickDistance); }