chiark / gitweb /
The Windows RNG turns out to only give about 16 bits at a time. This
[sgt-puzzles.git] / puzzles.h
index 35dc1600a2585efc6211c65edd4113abb91360c6..035ff24a1770cf8679bcb4fb96162a38cb5d06af 100644 (file)
--- a/puzzles.h
+++ b/puzzles.h
@@ -103,11 +103,11 @@ void status_bar(frontend *fe, char *text);
 /*
  * midend.c
  */
-midend_data *midend_new(frontend *fe);
+midend_data *midend_new(frontend *fe, void *randseed, int randseedsize);
 void midend_free(midend_data *me);
 void midend_set_params(midend_data *me, game_params *params);
 void midend_size(midend_data *me, int *x, int *y);
-void midend_new_game(midend_data *me, char *seed);
+void midend_new_game(midend_data *me);
 void midend_restart_game(midend_data *me);
 int midend_process_key(midend_data *me, int x, int y, int button);
 void midend_redraw(midend_data *me);
@@ -117,8 +117,9 @@ int midend_num_presets(midend_data *me);
 void midend_fetch_preset(midend_data *me, int n,
                          char **name, game_params **params);
 int midend_wants_statusbar(midend_data *me);
-config_item *midend_get_config(midend_data *me);
-char *midend_set_config(midend_data *me, config_item *cfg);
+enum { CFG_SETTINGS, CFG_SEED };
+config_item *midend_get_config(midend_data *me, int which, char **wintitle);
+char *midend_set_config(midend_data *me, int which, config_item *cfg);
 
 /*
  * malloc.c
@@ -137,12 +138,13 @@ char *dupstr(char *s);
 /*
  * misc.c
  */
-int rand_upto(int limit);
+void free_cfg(config_item *cfg);
 
 /*
  * random.c
  */
 random_state *random_init(char *seed, int len);
+unsigned long random_bits(random_state *state, int bits);
 unsigned long random_upto(random_state *state, unsigned long limit);
 void random_free(random_state *state);
 
@@ -158,7 +160,8 @@ game_params *dup_params(game_params *params);
 config_item *game_configure(game_params *params);
 game_params *custom_params(config_item *cfg);
 char *validate_params(game_params *params);
-char *new_game_seed(game_params *params);
+char *new_game_seed(game_params *params, random_state *rs);
+char *validate_seed(game_params *params, char *seed);
 game_state *new_game(game_params *params, char *seed);
 game_state *dup_game(game_state *state);
 void free_game(game_state *state);