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 ROTATE_TIME 0.1F
-#define FLASH_FRAME 0.05F
+#define ROTATE_TIME 0.13F
+#define FLASH_FRAME 0.07F
 
 enum {
     COL_BACKGROUND,
@@ -191,30 +191,30 @@ config_item *game_configure(game_params *params)
     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";
-    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";
-    ret[2].type = BOOLEAN;
+    ret[2].type = C_BOOLEAN;
     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;
-    ret[4].type = ENDCFG;
+    ret[4].type = C_END;
     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->barrier_probability = atof(cfg[3].sval);
+    ret->barrier_probability = (float)atof(cfg[3].sval);
 
     return ret;
 }
@@ -254,7 +254,7 @@ char *validate_params(game_params *params)
  * 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
@@ -268,10 +268,19 @@ char *new_game_seed(game_params *params)
      * understand it and do something completely different.)
      */
     char buf[40];
-    sprintf(buf, "%d", rand());
+    sprintf(buf, "%lu", random_bits(rs, 32));
     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.
  */
@@ -715,10 +724,19 @@ static unsigned char *compute_active(game_state *state)
     return active;
 }
 
+game_ui *new_ui(game_state *state)
+{
+    return NULL;
+}
+
+void free_ui(game_ui *ui)
+{
+}
+
 /* ----------------------------------------------------------------------
  * 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;
@@ -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;
-    if (tx % TILE_SIZE >= TILE_SIZE - TILE_BORDER ||
-       ty % TILE_SIZE >= TILE_SIZE - TILE_BORDER)
+    if (x % TILE_SIZE >= TILE_SIZE - TILE_BORDER ||
+       y % TILE_SIZE >= TILE_SIZE - TILE_BORDER)
        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,
-                 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;