aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devel.but11
-rw-r--r--midend.c15
-rw-r--r--puzzles.h1
3 files changed, 27 insertions, 0 deletions
diff --git a/devel.but b/devel.but
index 9668651..02f9cfa 100644
--- a/devel.but
+++ b/devel.but
@@ -3091,6 +3091,17 @@ Returns a descriptive game ID (i.e. one in the form
\cq{params:description}) describing the game currently active in the
mid-end. The returned string is dynamically allocated.
+\H{midend-get-random-seed} \cw{midend_get_random_seed()}
+
+\c char *midend_get_random_seed(midend *me)
+
+Returns a random game ID (i.e. one in the form \cq{params#seedstring})
+describing the game currently active in the mid-end, if there is one.
+If the game was created by entering a description, no random seed will
+currently exist and this function will return \cw{NULL}.
+
+The returned string, if it is non-\cw{NULL}, is dynamically allocated.
+
\H{midend-can-format-as-text-now} \cw{midend_can_format_as_text_now()}
\c int midend_can_format_as_text_now(midend *me);
diff --git a/midend.c b/midend.c
index 53dca21..fddf01d 100644
--- a/midend.c
+++ b/midend.c
@@ -1304,6 +1304,21 @@ char *midend_get_game_id(midend *me)
return ret;
}
+char *midend_get_random_seed(midend *me)
+{
+ char *parstr, *ret;
+
+ if (!me->seedstr)
+ return NULL;
+
+ parstr = me->ourgame->encode_params(me->curparams, TRUE);
+ assert(parstr);
+ ret = snewn(strlen(parstr) + strlen(me->seedstr) + 2, char);
+ sprintf(ret, "%s#%s", parstr, me->seedstr);
+ sfree(parstr);
+ return ret;
+}
+
char *midend_set_config(midend *me, int which, config_item *cfg)
{
char *error;
diff --git a/puzzles.h b/puzzles.h
index e8a75c2..fbd1828 100644
--- a/puzzles.h
+++ b/puzzles.h
@@ -251,6 +251,7 @@ config_item *midend_get_config(midend *me, int which, char **wintitle);
char *midend_set_config(midend *me, int which, config_item *cfg);
char *midend_game_id(midend *me, char *id);
char *midend_get_game_id(midend *me);
+char *midend_get_random_seed(midend *me);
int midend_can_format_as_text_now(midend *me);
char *midend_text_format(midend *me);
char *midend_solve(midend *me);