~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Framework alteration: we now support a `game_ui' structure in
[sgt/puzzles]
/
net.c
diff --git
a/net.c
b/net.c
index
8170bda
..
616609f
100644
(file)
--- a/
net.c
+++ b/
net.c
@@
-56,8
+56,8
@@
const int game_can_configure = TRUE;
#define TILE_BORDER 1
#define WINDOW_OFFSET 16
#define TILE_BORDER 1
#define WINDOW_OFFSET 16
-#define ROTATE_TIME 0.1F
-#define FLASH_FRAME 0.0
5
F
+#define ROTATE_TIME 0.1
3
F
+#define FLASH_FRAME 0.0
7
F
enum {
COL_BACKGROUND,
enum {
COL_BACKGROUND,
@@
-191,30
+191,30
@@
config_item *game_configure(game_params *params)
ret = snewn(5, config_item);
ret[0].name = "Width";
ret = snewn(5, config_item);
ret[0].name = "Width";
- ret[0].type = STRING;
+ ret[0].type =
C_
STRING;
sprintf(buf, "%d", params->width);
ret[0].sval = dupstr(buf);
ret[0].ival = 0;
ret[1].name = "Height";
sprintf(buf, "%d", params->width);
ret[0].sval = dupstr(buf);
ret[0].ival = 0;
ret[1].name = "Height";
- ret[1].type = STRING;
+ ret[1].type =
C_
STRING;
sprintf(buf, "%d", params->height);
ret[1].sval = dupstr(buf);
ret[1].ival = 0;
ret[2].name = "Walls wrap around";
sprintf(buf, "%d", params->height);
ret[1].sval = dupstr(buf);
ret[1].ival = 0;
ret[2].name = "Walls wrap around";
- ret[2].type = BOOLEAN;
+ ret[2].type =
C_
BOOLEAN;
ret[2].sval = NULL;
ret[2].ival = params->wrapping;
ret[3].name = "Barrier probability";
ret[2].sval = NULL;
ret[2].ival = params->wrapping;
ret[3].name = "Barrier probability";
- ret[3].type = STRING;
+ ret[3].type =
C_
STRING;
sprintf(buf, "%g", params->barrier_probability);
ret[3].sval = dupstr(buf);
ret[3].ival = 0;
ret[4].name = NULL;
sprintf(buf, "%g", params->barrier_probability);
ret[3].sval = dupstr(buf);
ret[3].ival = 0;
ret[4].name = NULL;
- ret[4].type =
ENDCFG
;
+ ret[4].type =
C_END
;
ret[4].sval = NULL;
ret[4].ival = 0;
ret[4].sval = NULL;
ret[4].ival = 0;
@@
-228,7
+228,7
@@
game_params *custom_params(config_item *cfg)
ret->width = atoi(cfg[0].sval);
ret->height = atoi(cfg[1].sval);
ret->wrapping = cfg[2].ival;
ret->width = atoi(cfg[0].sval);
ret->height = atoi(cfg[1].sval);
ret->wrapping = cfg[2].ival;
- ret->barrier_probability = atof(cfg[3].sval);
+ ret->barrier_probability =
(float)
atof(cfg[3].sval);
return ret;
}
return ret;
}
@@
-254,7
+254,7
@@
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)
+char *new_game_seed(game_params *params
, random_state *rs
)
{
/*
* The full description of a Net game is far too large to
{
/*
* The full description of a Net game is far too large to
@@
-268,10
+268,19
@@
char *new_game_seed(game_params *params)
* understand it and do something completely different.)
*/
char buf[40];
* understand it and do something completely different.)
*/
char buf[40];
- sprintf(buf, "%
d", rand(
));
+ sprintf(buf, "%
lu", random_bits(rs, 32
));
return dupstr(buf);
}
return dupstr(buf);
}
+char *validate_seed(game_params *params, char *seed)
+{
+ /*
+ * Since any string at all will suffice to seed the RNG, there
+ * is no validation required.
+ */
+ return NULL;
+}
+
/* ----------------------------------------------------------------------
* Construct an initial game state, given a seed and parameters.
*/
/* ----------------------------------------------------------------------
* Construct an initial game state, given a seed and parameters.
*/
@@
-715,10
+724,19
@@
static unsigned char *compute_active(game_state *state)
return active;
}
return active;
}
+game_ui *new_ui(game_state *state)
+{
+ return NULL;
+}
+
+void free_ui(game_ui *ui)
+{
+}
+
/* ----------------------------------------------------------------------
* Process a move.
*/
/* ----------------------------------------------------------------------
* Process a move.
*/
-game_state *make_move(game_state *state, int x, int y, int button)
+game_state *make_move(game_state *state,
game_ui *ui,
int x, int y, int button)
{
game_state *ret;
int tx, ty, orig;
{
game_state *ret;
int tx, ty, orig;
@@
-742,8
+760,8
@@
game_state *make_move(game_state *state, int x, int y, int button)
ty = y / TILE_SIZE;
if (tx >= state->width || ty >= state->height)
return NULL;
ty = y / TILE_SIZE;
if (tx >= state->width || ty >= state->height)
return NULL;
- if (
t
x % TILE_SIZE >= TILE_SIZE - TILE_BORDER ||
-
t
y % TILE_SIZE >= TILE_SIZE - TILE_BORDER)
+ if (x % TILE_SIZE >= TILE_SIZE - TILE_BORDER ||
+ y % TILE_SIZE >= TILE_SIZE - TILE_BORDER)
return NULL;
/*
return NULL;
/*
@@
-1132,7
+1150,7
@@
static void draw_tile(frontend *fe, game_state *state, int x, int y, int tile,
}
void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate,
}
void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate,
- game_state *state, float t, float ft)
+ game_state *state,
game_ui *ui,
float t, float ft)
{
int x, y, tx, ty, frame;
unsigned char *active;
{
int x, y, tx, ty, frame;
unsigned char *active;