1 #include "Timer.h"
2
3 Timer *Timer::_redTimer = NULL;
4 Timer *Timer::_blueTimer = NULL;
5
Timer(int moves,int seconds,int increment)6 Timer::Timer(int moves, int seconds, int increment)
7 {
8 _moves = moves;
9 _seconds = seconds;
10 _increment = increment;
11
12 resetTimer();
13 }
14
setTimers(int moves,int seconds,int inceremnt)15 void Timer::setTimers(int moves, int seconds, int inceremnt)
16 {
17 if (_redTimer) delete _redTimer;
18 if (_blueTimer) delete _blueTimer;
19
20 _redTimer = new Timer(moves, seconds, inceremnt);
21 _blueTimer = new Timer(moves, seconds, inceremnt);
22 }
23
haveTimeLeftForMove()24 bool Timer::haveTimeLeftForMove()
25 {
26 if (_seconds == 0 && _increment == 0) return true; // Timer is shut off.
27
28
29 int timePerMove = (_secondsLeft - 1) / _movesLeft + _increment;
30
31 //cerr << "Time per move is: " << timePerMove << endl;
32
33 time_t now = time(NULL);
34 int used = (int)difftime(now,_startTime);
35 //cerr << "Time used is: " << used << endl;
36 if (used < timePerMove)
37 return true;
38 else
39 return false;
40 }
41
moveMade()42 void Timer::moveMade()
43 {
44 int timeThisMove = (int)difftime(_endTime, _startTime);
45 _secondsLeft -= timeThisMove;
46 _secondsLeft += _increment;
47
48 //cerr << "Time left was: " << _secondsLeft << endl;
49
50 if (_movesLeft == 1 && _secondsLeft >= 0) resetTimer();
51 else _movesLeft--;
52 }
53
surpasedTime()54 bool Timer::surpasedTime()
55 {
56 if (_secondsLeft < 0) return true;
57 else return false;
58 }
59
startTimer()60 void Timer::startTimer()
61 {
62 _startTime = time(NULL);
63 }
64
stopTimer()65 void Timer::stopTimer()
66 {
67 _endTime = time(NULL);
68 }
69
resetTimer()70 void Timer::resetTimer()
71 {
72 _secondsLeft = _seconds;
73 _movesLeft = _moves;
74 }
75
timerForColor(color c)76 Timer *Timer::timerForColor(color c)
77 {
78 if (c == RED) return _redTimer;
79 else if (c == BLUE) return _blueTimer;
80 else return NULL;
81 }
82
timeLeft()83 int Timer::timeLeft()
84 {
85 int used = (int)difftime(time(NULL), _startTime);
86 return _seconds - used;
87 }
88