added random generator functions (from glib)
[rocksndiamonds.git] / src / game_bd / bd_cave.h
index 35b2b80b9d58ad41a71888db18f894aa53a40a37..d267c36329d5c207e620b2731f9344720c980905 100644 (file)
@@ -167,6 +167,7 @@ enum _element_property
   E_P_BLOWS_UP_FLIES,   /* flies blow up, if they touch this */
   E_P_EXPLODES_BY_HIT,  /* explodes if hit by a stone */
 
+  E_P_EXPLOSION,                /* set for every stage of every explosion. */
   E_P_EXPLOSION_FIRST_STAGE,    /* set for first stage of every explosion.
                                   helps slower/faster explosions changing */
 
@@ -202,6 +203,7 @@ enum _element_property
 #define P_BLOWS_UP_FLIES               (1 << E_P_BLOWS_UP_FLIES)
 
 #define P_EXPLODES_BY_HIT              (1 << E_P_EXPLODES_BY_HIT)
+#define P_EXPLOSION                    (1 << E_P_EXPLOSION)
 #define P_EXPLOSION_FIRST_STAGE                (1 << E_P_EXPLOSION_FIRST_STAGE)
 
 #define P_NON_EXPLODABLE               (1 << E_P_NON_EXPLODABLE)
@@ -375,11 +377,11 @@ typedef struct _gd_cave
   /* and this one the highscores */
   GdHighScore highscore[GD_HIGHSCORE_NUM];
 
-  GHashTable *tags;            /* stores read-but-not-understood strings from bdcff, so we can save them later. */
+  HashTable *tags;      /* stores read-but-not-understood strings from bdcff, so we can save them later. */
 
   GdElement **map;            /* pointer to data for map, non-null if has a map */
-  GList *objects;
-  GList *replays;
+  List *objects;
+  List *replays;
 
   boolean intermission;        /* is this cave an intermission? */
   boolean intermission_instantlife;    /* one life extra, if the intermission is reached */
@@ -626,7 +628,7 @@ typedef struct _gd_cave
 } GdCave;
 
 
-#define CAVE_OFFSET(property) (G_STRUCT_OFFSET(GdCave, property))
+#define CAVE_OFFSET(property) (STRUCT_OFFSET(GdCave, property))
 
 /* arrays for movements */
 /* also no1 and bd2 cave data import helpers; line direction coordinates */
@@ -642,8 +644,8 @@ GdElement gd_get_element_from_string(const char *string);
 void gd_cave_init(void);
 
 /* for cave tags hash table */
-boolean gd_str_case_equal(gconstpointer s1, gconstpointer s2);
-guint gd_str_case_hash(gconstpointer v);
+int gd_str_case_equal(void *s1, void *s2);
+unsigned int gd_str_case_hash(void *v);
 
 /* cave highscore functions */
 int gd_highscore_compare(gconstpointer a, gconstpointer b);
@@ -700,10 +702,9 @@ void gd_drawcave_game(const GdCave *cave, int **element_buffer, int **gfx_buffer
                      boolean bonus_life_flash, int animcycle, boolean hate_invisible_outbox);
 
 /* function to copy a GdString */
-static inline int
-gd_strcpy(GdString dest, const GdString src)
+static inline char *gd_strcpy(GdString dest, const GdString src)
 {
-    return g_strlcpy(dest, src, sizeof(GdString));
+    return strncpy(dest, src, sizeof(GdString));
 }
 
 int gd_cave_time_show(const GdCave *cave, int internal_time);