chiark
/
gitweb
/
~ian
/
sgt-puzzles.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
The Windows RNG turns out to only give about 16 bits at a time. This
[sgt-puzzles.git]
/
midend.c
diff --git
a/midend.c
b/midend.c
index 818b2785884663d3a5ada7bb08126b31117c97b4..cacd66e4a752a2af83c192b1dd352d4ba7a82851 100644
(file)
--- a/
midend.c
+++ b/
midend.c
@@
-13,6
+13,8
@@
struct midend_data {
frontend *frontend;
struct midend_data {
frontend *frontend;
+ random_state *random;
+
char *seed;
int fresh_seed;
int nstates, statesize, statepos;
char *seed;
int fresh_seed;
int nstates, statesize, statepos;
@@
-36,11
+38,12
@@
struct midend_data {
} \
} while (0)
} \
} while (0)
-midend_data *midend_new(frontend *f
rontend
)
+midend_data *midend_new(frontend *f
e, void *randseed, int randseedsize
)
{
midend_data *me = snew(midend_data);
{
midend_data *me = snew(midend_data);
- me->frontend = frontend;
+ me->frontend = fe;
+ me->random = random_init(randseed, randseedsize);
me->nstates = me->statesize = me->statepos = 0;
me->states = NULL;
me->params = default_params();
me->nstates = me->statesize = me->statepos = 0;
me->states = NULL;
me->params = default_params();
@@
-88,7
+91,7
@@
void midend_new_game(midend_data *me)
if (!me->fresh_seed) {
sfree(me->seed);
if (!me->fresh_seed) {
sfree(me->seed);
- me->seed = new_game_seed(me->params);
+ me->seed = new_game_seed(me->params
, me->random
);
} else
me->fresh_seed = FALSE;
} else
me->fresh_seed = FALSE;
@@
-252,7
+255,7
@@
float *midend_colours(midend_data *me, int *ncolours)
float *ret;
if (me->nstates == 0) {
float *ret;
if (me->nstates == 0) {
- char *seed = new_game_seed(me->params);
+ char *seed = new_game_seed(me->params
, me->random
);
state = new_game(me->params, seed);
sfree(seed);
} else
state = new_game(me->params, seed);
sfree(seed);
} else