private FrameState(IPinsDown pinsDown, int score, int pinsIndex, IScoreStrategy scoreStrategy) { _pinsDown = pinsDown; _score = score; _pinsIndex = pinsIndex; _scoreStrategy = scoreStrategy; }
public IFrameUpdate Select(IPinsDown pinsDown, int pinsIndex) { if (!_frameType.IsType(pinsDown, pinsIndex)) { return(_next.Select(pinsDown, pinsIndex)); } return(new FrameUpdate(new SpareScore(), new SpareIndexAdjustment())); }
public bool IsType(IPinsDown pinsDown, int pinsIndex) => pinsDown.PinsDownAt(pinsIndex) == 10;
public IFrameUpdate Select(IPinsDown pinsDown, int pinsIndex) => new FrameUpdate(new DefaultScore(), new DefaultIndexAdjustment());
public Game(IPinsDown pinsDown) => _pinsDown = pinsDown;
public FrameState(IPinsDown pinsDown, int score, int pinsIndex) : this(pinsDown, score, pinsIndex, new ScoreStrategy()) { }
public int Score(IPinsDown pinsDown, int pinsIndex) => _typeScore.Score(pinsDown, pinsIndex);
public int Score(IPinsDown pinsDown, int pinsIndex) => 10 + pinsDown.PinsDownAt(pinsIndex + 1) + pinsDown.PinsDownAt(pinsIndex + 2);