chiark / gitweb /
Introduce the concept of a `game_aux_info' structure. This is
[sgt-puzzles.git] / puzzles.h
index e873351c014d9413d2b11e96600951acaf57573b..1a4f10f37095c69a41cc6e58049cac29c40d763b 100644 (file)
--- a/puzzles.h
+++ b/puzzles.h
@@ -52,6 +52,7 @@ typedef struct midend_data midend_data;
 typedef struct random_state random_state;
 typedef struct game_params game_params;
 typedef struct game_state game_state;
+typedef struct game_aux_info game_aux_info;
 typedef struct game_ui game_ui;
 typedef struct game_drawstate game_drawstate;
 typedef struct game game;
@@ -140,6 +141,7 @@ 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);
 char *midend_game_id(midend_data *me, char *id, int def_seed);
+char *midend_text_format(midend_data *me);
 
 /*
  * malloc.c
@@ -178,21 +180,25 @@ void random_free(random_state *state);
 struct game {
     const char *name;
     const char *winhelp_topic;
-    int can_configure;
     game_params *(*default_params)(void);
     int (*fetch_preset)(int i, char **name, game_params **params);
     game_params *(*decode_params)(char const *string);
     char *(*encode_params)(game_params *);
     void (*free_params)(game_params *params);
     game_params *(*dup_params)(game_params *params);
+    int can_configure;
     config_item *(*configure)(game_params *params);
     game_params *(*custom_params)(config_item *cfg);
     char *(*validate_params)(game_params *params);
-    char *(*new_seed)(game_params *params, random_state *rs);
+    char *(*new_seed)(game_params *params, random_state *rs,
+                     game_aux_info **aux);
+    void (*free_aux_info)(game_aux_info *aux);
     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);
+    int can_format_as_text;
+    char *(*text_format)(game_state *state);
     game_ui *(*new_ui)(game_state *state);
     void (*free_ui)(game_ui *ui);
     game_state *(*make_move)(game_state *from, game_ui *ui, int x, int y,