package main;
import java.util.List;
public class Frame {
int mFrame;
int mFirstScore;
int mSecondScore;
int mAdditionalPoint;
int mAddPointCount = 0;
final int ADD_POINT_STRIKE = 2;
final int ADD_POINT_SPARE = 1;
boolean mIsStrike = false;
boolean mIsSpare = false;
final int STRIKE_SCORE = 10;
public Frame(int currentFrame) {
mFrame = currentFrame;
}
public void setFirstScore(int firstScore) {
mFirstScore = firstScore;
if (mFirstScore == STRIKE_SCORE) {
mIsStrike = true;
mAddPointCount = ADD_POINT_STRIKE;
}
}
public void setSecondScore(int secondScore) {
mSecondScore = secondScore;
if (mIsStrike == false && mFirstScore + mSecondScore == STRIKE_SCORE) {
mIsSpare = true;
mAddPointCount = ADD_POINT_SPARE;
}
}
public int getFirstScore() {
return mFirstScore;
}
public void setFirstScore(int firstScore, List mListFrmae) {
// TODO Auto-generated method stub
setFirstScore(firstScore);
Frame beforeFrame = getBeforeFrame(mListFrmae, 1);
if (beforeFrame == null) return;
if (beforeFrame.mIsSpare) {
beforeFrame.addAdditionalPoint(firstScore);
}
else if (beforeFrame.mIsStrike){
beforeFrame.addAdditionalPoint(firstScore);
Frame b2Frame = getBeforeFrame(mListFrmae, 2);
if (b2Frame == null) return;
if (b2Frame.mIsStrike) {
b2Frame.addAdditionalPoint(firstScore);
}
}
}
private Frame getBeforeFrame(List mListFrmae, int diff) {
if (mListFrmae.size() >= diff + 1) {
return mListFrmae.get(mListFrmae.size() - (diff+1));
}
return null;
}
private void addAdditionalPoint(int addScore) {
mAdditionalPoint += addScore;
mAddPointCount += -1;
}
public void setSecondScore(int secondScore, List mListFrmae) {
// TODO Auto-generated method stub
setSecondScore(secondScore);
Frame beforeFrame = getBeforeFrame(mListFrmae, 1);
if (beforeFrame == null) return;
if (beforeFrame.mIsStrike) {
beforeFrame.addAdditionalPoint(secondScore);
}
}
}