private void ScoreRegularFrames(ScoreCardFrame prevScoreCardFrame, ScoreCardFrame currScoreCardFrame, DeliveryInputViewModel deliveryInputViewModel) { if (currScoreCardFrame.FrameId == 0 & !currScoreCardFrame.FirstDeliveryMark.Equals(UserDeliveryMessages.STRIKE_DELIVERY_CODE) && !currScoreCardFrame.SecondDeliveryMark.Equals(UserDeliveryMessages.SPARE_DELIVERY_CODE)) { currScoreCardFrame.FrameCumulativeScore = currScoreCardFrame.FirstDeliveryScore + currScoreCardFrame.SecondDeliveryScore; //return; } else if (!currScoreCardFrame.FirstDeliveryMark.Equals(UserDeliveryMessages.STRIKE_DELIVERY_CODE) && !currScoreCardFrame.SecondDeliveryMark.Equals(UserDeliveryMessages.SPARE_DELIVERY_CODE)) { currScoreCardFrame.FrameCumulativeScore = prevScoreCardFrame.FrameCumulativeScore + currScoreCardFrame.FirstDeliveryScore + currScoreCardFrame.SecondDeliveryScore; } //if (prevScoreCardFrame.FirstDeliveryMark.Equals(UserDeliveryMessages.STRIKE_DELIVERY_CODE)) //{ // prevScoreCardFrame.FrameCumulativeScore = prevScoreCardFrame.FirstDeliveryScore + // currScoreCardFrame.FirstDeliveryScore + // currScoreCardFrame.SecondDeliveryScore; //} //else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.Spare) //{ // prevScoreCardFrame.FrameCumulativeScore = prevScoreCardFrame.FirstDeliveryScore + // currScoreCardFrame.FirstDeliveryScore; //} }
private void ScoreTenthFrame(ScoreCardFrame prevFrame, ScoreCardFrame tenthFrame, DeliveryInputViewModel deliveryInputViewModel) { tenthFrame.FrameCumulativeScore = prevFrame.FrameCumulativeScore + tenthFrame.FirstDeliveryScore + tenthFrame.SecondDeliveryScore + tenthFrame.BonusDeliveryScore; }
private void MarkSecondDelivery(ScoreCardFrame scoreCardFrame, DeliveryInputViewModel deliveryInputViewModel) { if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.OpenFrame) { scoreCardFrame.SecondDeliveryMark = UserDeliveryMessages.OPEN_FRAME_DELIVERY_CODE; scoreCardFrame.SecondDeliveryScore = 0; } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.Foul) { scoreCardFrame.SecondDeliveryScore = 0; scoreCardFrame.SecondDeliveryMark = UserDeliveryMessages.FOUL_DELIVERY_CODE; } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.Spare) { //score the next time mark as / scoreCardFrame.SecondDeliveryMark = UserDeliveryMessages.SPARE_DELIVERY_CODE; int firstScore = scoreCardFrame.FirstDeliveryScore; scoreCardFrame.SecondDeliveryScore = 10 - firstScore; } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.Split) { //simply save the score and prepend pins down with S scoreCardFrame.SecondDeliveryMark = UserDeliveryMessages.SPLIT_DELIVERY_CODE + deliveryInputViewModel.SelectedPinsDownCount; scoreCardFrame.SecondDeliveryScore = deliveryInputViewModel.SelectedPinsDownCount; } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.StandardRoll) { scoreCardFrame.SecondDeliveryScore = deliveryInputViewModel.SelectedPinsDownCount; scoreCardFrame.SecondDeliveryMark = deliveryInputViewModel.SelectedPinsDownCount.ToString(); } }
public void SaveDelivery(ScoreCardViewModel scoreCardViewModel, DeliveryInputViewModel deliveryInputViewModel) { ScoreCardFrame currentFrame = scoreCardViewModel.ScoreCardRows[scoreCardViewModel.CurrentScoreCardRowIndex] .ScoreCardFrames[scoreCardViewModel.CurrentFrameId]; ScoreCardFrame previousFrame = new ScoreCardFrame(); if (scoreCardViewModel.CurrentFrameId > 0) { previousFrame = scoreCardViewModel.ScoreCardRows[scoreCardViewModel.CurrentScoreCardRowIndex] .ScoreCardFrames[scoreCardViewModel.CurrentFrameId - 1]; } ScoreCardFrame twoFramesBackFrame = new ScoreCardFrame(); if (scoreCardViewModel.CurrentFrameId > 1) { twoFramesBackFrame = scoreCardViewModel.ScoreCardRows[scoreCardViewModel.CurrentScoreCardRowIndex] .ScoreCardFrames[scoreCardViewModel.CurrentFrameId - 2]; } if (deliveryInputViewModel.CurrDeliveryInFrameIndex == 0 && deliveryInputViewModel.FrameIndex < 9) { MarkFirstDelivery(currentFrame, deliveryInputViewModel); } else if (deliveryInputViewModel.CurrDeliveryInFrameIndex == 1 && deliveryInputViewModel.FrameIndex < 9) { MarkSecondDelivery(currentFrame, deliveryInputViewModel); ScorePrevFrameForStrikesAndSpares(twoFramesBackFrame, previousFrame, currentFrame, deliveryInputViewModel); ScoreRegularFrames(previousFrame, currentFrame, deliveryInputViewModel); } if (deliveryInputViewModel.FrameIndex == 9 && deliveryInputViewModel.CurrDeliveryInFrameIndex == 0) { MarkFirstDelivery(currentFrame, deliveryInputViewModel); } else if (deliveryInputViewModel.FrameIndex == 9 && deliveryInputViewModel.CurrDeliveryInFrameIndex == 1) { MarkSecondDelivery(currentFrame, deliveryInputViewModel); if (deliveryInputViewModel.FrameIndex == 9 && deliveryInputViewModel.SelectedDeliveryCode != (int)FrameStatusEnum.Strike && deliveryInputViewModel.SelectedDeliveryCode != (int)FrameStatusEnum.Spare) { ScoreTenthFrame(previousFrame, currentFrame, deliveryInputViewModel); scoreCardViewModel.IsUserGameComplete = true; } } else if (deliveryInputViewModel.FrameIndex == 9 && deliveryInputViewModel.CurrDeliveryInFrameIndex == 2) { MarkTenthFrameBonusDeliveries(currentFrame, deliveryInputViewModel); ScoreTenthFrame(previousFrame, currentFrame, deliveryInputViewModel); scoreCardViewModel.IsUserGameComplete = true; } }
private void ScorePrevFrameForStrikesAndSpares(ScoreCardFrame twoFramesBackFrame, ScoreCardFrame prevScoreCardFrame, ScoreCardFrame currScoreCardFrame, DeliveryInputViewModel deliveryInputViewModel) { if (prevScoreCardFrame.SecondDeliveryMark.Equals(UserDeliveryMessages.STRIKE_DELIVERY_CODE)) { prevScoreCardFrame.FrameCumulativeScore = twoFramesBackFrame.FrameCumulativeScore + 10 + currScoreCardFrame.FirstDeliveryScore + currScoreCardFrame.SecondDeliveryScore; } else if (prevScoreCardFrame.SecondDeliveryMark.Equals(UserDeliveryMessages.SPARE_DELIVERY_CODE)) { prevScoreCardFrame.FrameCumulativeScore = twoFramesBackFrame.FrameCumulativeScore + 10 + currScoreCardFrame.FirstDeliveryScore; } }
private void MarkFirstDelivery(ScoreCardFrame cardFrame, DeliveryInputViewModel deliveryInputViewModel) { if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.OpenFrame) { cardFrame.FirstDeliveryMark = UserDeliveryMessages.OPEN_FRAME_DELIVERY_CODE; cardFrame.FirstDeliveryScore = 0; } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.Foul) { cardFrame.FirstDeliveryScore = 0; cardFrame.FirstDeliveryMark = UserDeliveryMessages.FOUL_DELIVERY_CODE; } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.Split) { cardFrame.FirstDeliveryMark = UserDeliveryMessages.SPLIT_DELIVERY_CODE + deliveryInputViewModel.SelectedPinsDownCount; cardFrame.FirstDeliveryScore = deliveryInputViewModel.SelectedPinsDownCount; } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.Strike) { if (deliveryInputViewModel.FrameIndex == 9) { cardFrame.FirstDeliveryScore = 10; cardFrame.FirstDeliveryMark = UserDeliveryMessages.STRIKE_DELIVERY_CODE; } else { cardFrame.SecondDeliveryScore = 10; cardFrame.SecondDeliveryMark = UserDeliveryMessages.STRIKE_DELIVERY_CODE; } } else if (deliveryInputViewModel.SelectedDeliveryCode == (int)FrameStatusEnum.StandardRoll) { cardFrame.FirstDeliveryScore = deliveryInputViewModel.SelectedPinsDownCount; cardFrame.FirstDeliveryMark = deliveryInputViewModel.SelectedPinsDownCount.ToString(); } }