#include <limits.h>
#include <string.h>
#include <time.h>
+#include <gethrxtime.h>
#include "game.h"
#define B64(x) ((x) & 0xffffffffffffffff)
unsigned char tiles[25];
unsigned i;
- if (!rng_is_seeded())
- game_reseed(time(NULL));
+ if (!rng_is_seeded()) {
+ unsigned long long seed;
+
+ seed = time(NULL);
+ seed += gethrxtime();
+ seed += seed << 32;
+
+ game_reseed(seed);
+ }
for (i = 0; i < 24; i++) {
tiles[i] = (i%6) + 1;
return ret;
}
-void game_finish(struct board *board)
+void game_begin(struct board *board)
+{
+ board->time_start = gethrxtime();
+}
+
+static int_fast32_t elapsed(struct board *board)
{
+ return (gethrxtime() - board->time_start) / 1000000;
+}
+
+int_fast32_t game_finish(struct board *board)
+{
+ int_fast32_t t = elapsed(board);
int i;
for (i = 0; i < 4; i++) {
* disable the game since there will be no valid moves.
*/
board->x = board->y = -1;
+
+ return t;
}