/// <summary> /// /// </summary> private void Loop() { for (int i = 0; i < 80; ++i) { if (((i % 15) == 1) && (i != 1)) { scoreboard.MoveToNextQuarter(); } if (!gameOver) { //run Team tip = cc.TeamInPossession; Team tnip = cc.TeamNotInPossession; int roll = Dice.Roll("d2"); if (roll == 1)//run { Player ballcarrier = tip.TeamOffense.GetPlayerAtPosition("TB"); int playerIndex = tip.GetIndexOfPlayer(ballcarrier); CarryStatSheet runStats = (CarryStatSheet)gameStats[tip, playerIndex][StatTypes.Run]; RunPlay run = new RunPlay(cc, tip, tnip, ballcarrier, runStats); run.Execute(); } else { //pass Player thrower = tip.TeamOffense.GetPlayerAtPosition("QB"); PassPlay pass = new PassPlay(gameStats, cc); pass.Execute(); } Thread.Sleep(TIMER_SLEEP); } } finalScore = this.announcer.ReportFinalScore(); }
/// <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); }
/// <summary> /// /// </summary> /// <param name="cc"></param> /// <param name="offense"></param> /// <param name="defense"></param> /// <param name="gamePassStats"></param> /// <param name="gameRunStats"></param> /// <param name="gameReceiverStats"></param> public PassPlay(GameStats gameStats, ChainCrew cc) : base(cc, cc.TeamInPossession, cc.TeamNotInPossession) { Team tip = this.offense; Team tnip = this.defense; this.thrower = tip.TeamOffense.GetPlayerAtPosition("QB"); this.availableReceivers = tip.TeamOffense.AvailableReceivers; this.principalBallcarrier = SelectReceiver(tip.TeamOffense.AvailableReceivers[0], tip.TeamOffense.AvailableReceivers); int throwerIndex = tip.GetIndexOfPlayer(this.thrower); int receiverIndex = tip.TeamOffense.GetAvailableReceiverAtIndex(this.principalBallcarrier); this.gamePassStats = (PassPlayStatSheet)gameStats[tip, throwerIndex][StatTypes.Pass]; this.gameRunStats = (CarryStatSheet)gameStats[tip, throwerIndex][StatTypes.Run]; this.gameReceiverStats = (CarryStatSheet)gameStats[tip, receiverIndex][StatTypes.Receive]; }