~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introduce the concept of a `game_aux_info' structure. This is
[sgt/puzzles]
/
net.c
diff --git
a/net.c
b/net.c
index
6849dbc
..
3d4daa7
100644
(file)
--- a/
net.c
+++ b/
net.c
@@
-12,10
+12,6
@@
#include "puzzles.h"
#include "tree234.h"
#include "puzzles.h"
#include "tree234.h"
-const char *const game_name = "Net";
-const char *const game_winhelp_topic = "games.net";
-const int game_can_configure = TRUE;
-
#define PI 3.141592653589793238462643383279502884197169399
#define MATMUL(xr,yr,m,x,y) do { \
#define PI 3.141592653589793238462643383279502884197169399
#define MATMUL(xr,yr,m,x,y) do { \
@@
-127,7
+123,7
@@
static struct xyd *new_xyd(int x, int y, int direction)
/* ----------------------------------------------------------------------
* Manage game parameters.
*/
/* ----------------------------------------------------------------------
* Manage game parameters.
*/
-game_params *default_params(void)
+
static
game_params *default_params(void)
{
game_params *ret = snew(game_params);
{
game_params *ret = snew(game_params);
@@
-139,7
+135,7
@@
game_params *default_params(void)
return ret;
}
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];
{
game_params *ret;
char str[80];
@@
-173,19
+169,19
@@
int game_fetch_preset(int i, char **name, game_params **params)
return TRUE;
}
return TRUE;
}
-void free_params(game_params *params)
+
static
void free_params(game_params *params)
{
sfree(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 *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;
{
game_params *ret = default_params();
char const *p = string;
@@
-207,7
+203,7
@@
game_params *decode_params(char const *string)
return ret;
}
return ret;
}
-char *encode_params(game_params *params)
+
static
char *encode_params(game_params *params)
{
char ret[400];
int len;
{
char ret[400];
int len;
@@
-223,7
+219,7
@@
char *encode_params(game_params *params)
return dupstr(ret);
}
return dupstr(ret);
}
-config_item *game_configure(game_params *params)
+
static
config_item *game_configure(game_params *params)
{
config_item *ret;
char buf[80];
{
config_item *ret;
char buf[80];
@@
-261,7
+257,7
@@
config_item *game_configure(game_params *params)
return ret;
}
return ret;
}
-game_params *custom_params(config_item *cfg)
+
static
game_params *custom_params(config_item *cfg)
{
game_params *ret = snew(game_params);
{
game_params *ret = snew(game_params);
@@
-273,7
+269,7
@@
game_params *custom_params(config_item *cfg)
return ret;
}
return ret;
}
-char *validate_params(game_params *params)
+
static
char *validate_params(game_params *params)
{
if (params->width <= 0 && params->height <= 0)
return "Width and height must both be greater than zero";
{
if (params->width <= 0 && params->height <= 0)
return "Width and height must both be greater than zero";
@@
-294,7
+290,8
@@
char *validate_params(game_params *params)
* Randomly select a new game seed.
*/
* 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,
+ game_aux_info **aux)
{
/*
* The full description of a Net game is far too large to
{
/*
* The full description of a Net game is far too large to
@@
-312,7
+309,12
@@
char *new_game_seed(game_params *params, random_state *rs)
return dupstr(buf);
}
return dupstr(buf);
}
-char *validate_seed(game_params *params, char *seed)
+void game_free_aux_info(game_aux_info *aux)
+{
+ assert(!"Shouldn't happen");
+}
+
+static char *validate_seed(game_params *params, char *seed)
{
/*
* Since any string at all will suffice to seed the RNG, there
{
/*
* Since any string at all will suffice to seed the RNG, there
@@
-325,7
+327,7
@@
char *validate_seed(game_params *params, char *seed)
* Construct an initial game state, given a seed and parameters.
*/
* 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;
{
random_state *rs;
game_state *state;
@@
-676,7
+678,7
@@
game_state *new_game(game_params *params, char *seed)
return state;
}
return state;
}
-game_state *dup_game(game_state *state)
+
static
game_state *dup_game(game_state *state)
{
game_state *ret;
{
game_state *ret;
@@
-696,13
+698,18
@@
game_state *dup_game(game_state *state)
return ret;
}
return ret;
}
-void free_game(game_state *state)
+
static
void free_game(game_state *state)
{
sfree(state->tiles);
sfree(state->barriers);
sfree(state);
}
{
sfree(state->tiles);
sfree(state->barriers);
sfree(state);
}
+static char *game_text_format(game_state *state)
+{
+ return NULL;
+}
+
/* ----------------------------------------------------------------------
* Utility routine.
*/
/* ----------------------------------------------------------------------
* Utility routine.
*/
@@
-770,7
+777,7
@@
struct game_ui {
random_state *rs; /* used for jumbling */
};
random_state *rs; /* used for jumbling */
};
-game_ui *new_ui(game_state *state)
+
static
game_ui *new_ui(game_state *state)
{
void *seed;
int seedsize;
{
void *seed;
int seedsize;
@@
-785,7
+792,7
@@
game_ui *new_ui(game_state *state)
return ui;
}
return ui;
}
-void free_ui(game_ui *ui)
+
static
void free_ui(game_ui *ui)
{
random_free(ui->rs);
sfree(ui);
{
random_free(ui->rs);
sfree(ui);
@@
-794,7
+801,8
@@
void free_ui(game_ui *ui)
/* ----------------------------------------------------------------------
* Process a move.
*/
/* ----------------------------------------------------------------------
* Process a move.
*/
-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)
{
game_state *ret, *nullret;
int tx, ty, orig;
{
game_state *ret, *nullret;
int tx, ty, orig;
@@
-951,7
+959,7
@@
struct game_drawstate {
unsigned char *visible;
};
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);
{
game_drawstate *ds = snew(game_drawstate);
@@
-964,19
+972,19
@@
game_drawstate *game_new_drawstate(game_state *state)
return ds;
}
return ds;
}
-void game_free_drawstate(game_drawstate *ds)
+
static
void game_free_drawstate(game_drawstate *ds)
{
sfree(ds->visible);
sfree(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 = WINDOW_OFFSET * 2 + TILE_SIZE * params->width + TILE_BORDER;
*y = WINDOW_OFFSET * 2 + TILE_SIZE * params->height + TILE_BORDER;
}
{
*x = WINDOW_OFFSET * 2 + TILE_SIZE * params->width + TILE_BORDER;
*y = 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;
{
float *ret;
@@
-1284,7
+1292,7
@@
static void draw_tile(frontend *fe, game_state *state, int x, int y, int tile,
draw_update(fe, bx, by, TILE_SIZE+TILE_BORDER, TILE_SIZE+TILE_BORDER);
}
draw_update(fe, bx, by, TILE_SIZE+TILE_BORDER, TILE_SIZE+TILE_BORDER);
}
-void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate,
+
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, last_rotate_dir;
game_state *state, int dir, game_ui *ui, float t, float ft)
{
int x, y, tx, ty, frame, last_rotate_dir;
@@
-1436,7
+1444,8
@@
void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate,
sfree(active);
}
sfree(active);
}
-float game_anim_length(game_state *oldstate, game_state *newstate, int dir)
+static float game_anim_length(game_state *oldstate,
+ game_state *newstate, int dir)
{
int x, y, last_rotate_dir;
{
int x, y, last_rotate_dir;
@@
-1462,7
+1471,8
@@
float game_anim_length(game_state *oldstate, game_state *newstate, int dir)
return 0.0F;
}
return 0.0F;
}
-float game_flash_length(game_state *oldstate, game_state *newstate, int dir)
+static float game_flash_length(game_state *oldstate,
+ game_state *newstate, int dir)
{
/*
* If the game has just been completed, we display a completion
{
/*
* If the game has just been completed, we display a completion
@@
-1485,7
+1495,41
@@
float game_flash_length(game_state *oldstate, game_state *newstate, int dir)
return 0.0F;
}
return 0.0F;
}
-int game_wants_statusbar(void)
+
static
int game_wants_statusbar(void)
{
return TRUE;
}
{
return TRUE;
}
+
+#ifdef COMBINED
+#define thegame net
+#endif
+
+const struct game thegame = {
+ "Net", "games.net",
+ default_params,
+ game_fetch_preset,
+ decode_params,
+ encode_params,
+ free_params,
+ dup_params,
+ TRUE, game_configure, custom_params,
+ validate_params,
+ new_game_seed,
+ game_free_aux_info,
+ 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,
+};