X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/7bed19e1bd1194a249a808f0ea8f3a9c1453843c..8b738d6161f551dcb4778eecada784e9c1d2d3b1:/netslide.c diff --git a/netslide.c b/netslide.c index 6bbd813..11ca2ef 100644 --- a/netslide.c +++ b/netslide.c @@ -13,9 +13,6 @@ #include "puzzles.h" #include "tree234.h" -const char *const game_name = "Netslide"; -const int game_can_configure = TRUE; - #define PI 3.141592653589793238462643383279502884197169399 #define MATMUL(xr,yr,m,x,y) do { \ @@ -138,13 +135,13 @@ static struct xyd *new_xyd(int x, int y, int direction) return xyd; } -void slide_col(game_state *state, int dir, int col); -void slide_row(game_state *state, int dir, int row); +static void slide_col(game_state *state, int dir, int col); +static void slide_row(game_state *state, int dir, int row); /* ---------------------------------------------------------------------- * Manage game parameters. */ -game_params *default_params(void) +static game_params *default_params(void) { game_params *ret = snew(game_params); @@ -156,7 +153,7 @@ game_params *default_params(void) return ret; } -int game_fetch_preset(int i, char **name, game_params **params) +static int game_fetch_preset(int i, char **name, game_params **params) { game_params *ret; char str[80]; @@ -189,19 +186,19 @@ int game_fetch_preset(int i, char **name, game_params **params) return TRUE; } -void free_params(game_params *params) +static void free_params(game_params *params) { sfree(params); } -game_params *dup_params(game_params *params) +static game_params *dup_params(game_params *params) { game_params *ret = snew(game_params); *ret = *params; /* structure copy */ return ret; } -game_params *decode_params(char const *string) +static game_params *decode_params(char const *string) { game_params *ret = default_params(); char const *p = string; @@ -226,7 +223,7 @@ game_params *decode_params(char const *string) return ret; } -char *encode_params(game_params *params) +static char *encode_params(game_params *params) { char ret[400]; int len; @@ -242,7 +239,7 @@ char *encode_params(game_params *params) return dupstr(ret); } -config_item *game_configure(game_params *params) +static config_item *game_configure(game_params *params) { config_item *ret; char buf[80]; @@ -280,7 +277,7 @@ config_item *game_configure(game_params *params) return ret; } -game_params *custom_params(config_item *cfg) +static game_params *custom_params(config_item *cfg) { game_params *ret = snew(game_params); @@ -292,7 +289,7 @@ game_params *custom_params(config_item *cfg) return ret; } -char *validate_params(game_params *params) +static char *validate_params(game_params *params) { if (params->width <= 1 && params->height <= 1) return "Width and height must both be greater than one"; @@ -311,7 +308,7 @@ char *validate_params(game_params *params) * Randomly select a new game seed. */ -char *new_game_seed(game_params *params, random_state *rs) +static char *new_game_seed(game_params *params, random_state *rs) { /* * The full description of a Net game is far too large to @@ -329,7 +326,7 @@ char *new_game_seed(game_params *params, random_state *rs) return dupstr(buf); } -char *validate_seed(game_params *params, char *seed) +static char *validate_seed(game_params *params, char *seed) { /* * Since any string at all will suffice to seed the RNG, there @@ -342,7 +339,7 @@ char *validate_seed(game_params *params, char *seed) * Construct an initial game state, given a seed and parameters. */ -game_state *new_game(game_params *params, char *seed) +static game_state *new_game(game_params *params, char *seed) { random_state *rs; game_state *state; @@ -713,7 +710,7 @@ game_state *new_game(game_params *params, char *seed) return state; } -game_state *dup_game(game_state *state) +static game_state *dup_game(game_state *state) { game_state *ret; @@ -736,13 +733,18 @@ game_state *dup_game(game_state *state) return ret; } -void free_game(game_state *state) +static void free_game(game_state *state) { sfree(state->tiles); sfree(state->barriers); sfree(state); } +static char *game_text_format(game_state *state) +{ + return NULL; +} + /* ---------------------------------------------------------------------- * Utility routine. */ @@ -814,7 +816,7 @@ struct game_ui { int cur_visible; }; -game_ui *new_ui(game_state *state) +static game_ui *new_ui(game_state *state) { game_ui *ui = snew(game_ui); ui->cur_x = state->width / 2; @@ -824,7 +826,7 @@ game_ui *new_ui(game_state *state) return ui; } -void free_ui(game_ui *ui) +static void free_ui(game_ui *ui) { sfree(ui); } @@ -833,7 +835,7 @@ void free_ui(game_ui *ui) * Process a move. */ -void slide_row(game_state *state, int dir, int row) +static void slide_row(game_state *state, int dir, int row) { int x = dir > 0 ? -1 : state->width; int tx = x + dir; @@ -847,7 +849,7 @@ void slide_row(game_state *state, int dir, int row) state->tiles[T(state, tx, row)] = endtile; } -void slide_col(game_state *state, int dir, int col) +static void slide_col(game_state *state, int dir, int col) { int y = dir > 0 ? -1 : state->height; int ty = y + dir; @@ -861,7 +863,8 @@ void slide_col(game_state *state, int dir, int col) state->tiles[T(state, col, ty)] = endtile; } -game_state *make_move(game_state *state, game_ui *ui, int x, int y, int button) +static game_state *make_move(game_state *state, game_ui *ui, + int x, int y, int button) { int cx, cy; int n, dx, dy; @@ -944,7 +947,7 @@ struct game_drawstate { unsigned char *visible; }; -game_drawstate *game_new_drawstate(game_state *state) +static game_drawstate *game_new_drawstate(game_state *state) { game_drawstate *ds = snew(game_drawstate); @@ -957,19 +960,19 @@ game_drawstate *game_new_drawstate(game_state *state) return ds; } -void game_free_drawstate(game_drawstate *ds) +static void game_free_drawstate(game_drawstate *ds) { sfree(ds->visible); sfree(ds); } -void game_size(game_params *params, int *x, int *y) +static void game_size(game_params *params, int *x, int *y) { *x = BORDER * 2 + WINDOW_OFFSET * 2 + TILE_SIZE * params->width + TILE_BORDER; *y = BORDER * 2 + WINDOW_OFFSET * 2 + TILE_SIZE * params->height + TILE_BORDER; } -float *game_colours(frontend *fe, game_state *state, int *ncolours) +static float *game_colours(frontend *fe, game_state *state, int *ncolours) { float *ret; @@ -1285,8 +1288,8 @@ static void draw_arrow(frontend *fe, int x, int y, int xdx, int xdy) draw_polygon(fe, coords, 7, FALSE, COL_TEXT); } -void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate, - game_state *state, game_ui *ui, float t, float ft) +static void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate, + game_state *state, int dir, game_ui *ui, float t, float ft) { int x, y, tx, ty, frame; unsigned char *active; @@ -1480,12 +1483,14 @@ void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate, sfree(active); } -float game_anim_length(game_state *oldstate, game_state *newstate) +static float game_anim_length(game_state *oldstate, + game_state *newstate, int dir) { return ANIM_TIME; } -float game_flash_length(game_state *oldstate, game_state *newstate) +static float game_flash_length(game_state *oldstate, + game_state *newstate, int dir) { /* * If the game has just been completed, we display a completion @@ -1508,7 +1513,40 @@ float game_flash_length(game_state *oldstate, game_state *newstate) return 0.0F; } -int game_wants_statusbar(void) +static int game_wants_statusbar(void) { return TRUE; } + +#ifdef COMBINED +#define thegame netslide +#endif + +const struct game thegame = { + "Netslide", "games.netslide", + default_params, + game_fetch_preset, + decode_params, + encode_params, + free_params, + dup_params, + TRUE, game_configure, custom_params, + validate_params, + new_game_seed, + validate_seed, + new_game, + dup_game, + free_game, + FALSE, game_text_format, + new_ui, + free_ui, + make_move, + game_size, + game_colours, + game_new_drawstate, + game_free_drawstate, + game_redraw, + game_anim_length, + game_flash_length, + game_wants_statusbar, +};