package timer; import utility.RunnableOfT; class FischerTimer extends ChessTimer { public FischerTimer(RunnableOfT<Boolean> timeElapsedCallback, long incrementAmount, long startTime, boolean isFischerAfterTimer, boolean isBlack) { mIncrementAmount = incrementAmount; mCurrentTime = startTime; mIsFisherAfterTimer = isFischerAfterTimer; mIsFirstTime = true; mIsBlackTeamTimer = isBlack; mInitialStartTime = startTime; init(timeElapsedCallback); } @Override public void reset() { mClockLastUpdatedTime = System.currentTimeMillis(); mCurrentTime = mInitialStartTime; updateDisplay(); mIsFirstTime = true; } @Override public void startTimer() { if (!mIsFisherAfterTimer && !mIsFirstTime && !mTimeWasRecentlyReset) mCurrentTime += mIncrementAmount; mTimeWasRecentlyReset = false; mIsFirstTime = false; mClockLastUpdatedTime = System.currentTimeMillis(); if (mListener != null) mListener.onTimerStart(); } @Override public void stopTimer() { if (mIsFisherAfterTimer && !mTimeWasRecentlyReset) mCurrentTime += mIncrementAmount; mTimeWasRecentlyReset = false; mClockLastUpdatedTime = System.currentTimeMillis(); updateDisplay(); if (mListener != null) mListener.onTimerStop(); } private static final long serialVersionUID = 6129683219865263879L; private long mIncrementAmount; private boolean mIsFisherAfterTimer; private boolean mIsFirstTime; }