X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fbd_cave.c;h=7948c1703e85ca949c27faefc6069b67b2b95706;hb=f288729146c5882b01fa2ecfceb70870b5c47fca;hp=86b07a889bee26e1a36866053f22b8e78b1e8df3;hpb=d2b7c541271aec188c9394af58cdb8d9f66d88b9;p=rocksndiamonds.git diff --git a/src/game_bd/bd_cave.c b/src/game_bd/bd_cave.c index 86b07a88..7948c170 100644 --- a/src/game_bd/bd_cave.c +++ b/src/game_bd/bd_cave.c @@ -247,7 +247,7 @@ void gd_create_char_to_element_table(void) if (c) { - if (gd_char_to_element[c]!=O_UNKNOWN) + if (gd_char_to_element[c] != O_UNKNOWN) Warn("Character %c already used for element %x", c, gd_char_to_element[c]); gd_char_to_element[c] = i; @@ -443,7 +443,6 @@ guint gd_str_case_hash(gconstpointer v) */ GdCave *gd_cave_new(void) { - int i; GdCave *cave; cave = checked_calloc(sizeof(GdCave)); @@ -451,11 +450,6 @@ GdCave *gd_cave_new(void) /* hash table which stores unknown tags as strings. */ cave->tags = g_hash_table_new_full(gd_str_case_hash, gd_str_case_equal, free, free); - /* for strings */ - for (i = 0; gd_cave_properties[i].identifier != NULL; i++) - if (gd_cave_properties[i].type == GD_TYPE_LONGSTRING) - G_STRUCT_MEMBER(GString *, cave, gd_cave_properties[i].offset) = g_string_new(NULL); - gd_cave_set_gdash_defaults(cave); return cave; @@ -546,10 +540,10 @@ void gd_cave_free(GdCave *cave) if (cave->random) /* random generator is a GRand * */ g_rand_free(cave->random); - /* free GStrings */ + /* free strings */ for (i = 0; gd_cave_properties[i].identifier != NULL; i++) if (gd_cave_properties[i].type == GD_TYPE_LONGSTRING) - g_string_free(G_STRUCT_MEMBER(GString *, cave, gd_cave_properties[i].offset), TRUE); + checked_free(G_STRUCT_MEMBER(char *, cave, gd_cave_properties[i].offset)); /* map */ gd_cave_map_free(cave->map); @@ -597,8 +591,8 @@ void gd_cave_copy(GdCave *dest, const GdCave *src) /* for longstrings */ for (i = 0; gd_cave_properties[i].identifier != NULL; i++) if (gd_cave_properties[i].type == GD_TYPE_LONGSTRING) - G_STRUCT_MEMBER(GString *, dest, gd_cave_properties[i].offset) = - g_string_new(G_STRUCT_MEMBER(GString *, src, gd_cave_properties[i].offset)->str); + G_STRUCT_MEMBER(char *, dest, gd_cave_properties[i].offset) = + getStringCopy(G_STRUCT_MEMBER(char *, src, gd_cave_properties[i].offset)); /* no reason to copy this */ dest->objects_order = NULL; @@ -1299,7 +1293,7 @@ void gd_drawcave_game(const GdCave *cave, int **element_buffer, int **gfx_buffer /* player with bomb does not blink or tap - no graphics drawn for that. running is drawn using w/o bomb cells */ - if (cave->last_direction!=GD_MV_STILL) + if (cave->last_direction != GD_MV_STILL) { elemmapping[O_PLAYER_BOMB] = map; elemdrawing[O_PLAYER_BOMB] = draw; @@ -1396,8 +1390,6 @@ GdReplay *gd_replay_new(void) rep = checked_calloc(sizeof(GdReplay)); - /* create dynamic objects */ - rep->comment = g_string_new(NULL); rep->movements = g_byte_array_new(); return rep; @@ -1410,7 +1402,7 @@ GdReplay *gd_replay_new_from_replay(GdReplay *orig) rep = g_memdup(orig, sizeof(GdReplay)); /* replicate dynamic data */ - rep->comment = g_string_new(orig->comment->str); + rep->comment = getStringCopy(orig->comment); rep->movements = g_byte_array_new(); g_byte_array_append(rep->movements, orig->movements->data, orig->movements->len); @@ -1420,7 +1412,7 @@ GdReplay *gd_replay_new_from_replay(GdReplay *orig) void gd_replay_free(GdReplay *replay) { g_byte_array_free(replay->movements, TRUE); - g_string_free(replay->comment, TRUE); + checked_free(replay->comment); free(replay); } @@ -1437,26 +1429,6 @@ void gd_replay_store_movement(GdReplay *replay, GdDirection player_move, g_byte_array_append(replay->movements, data, 1); } -/* get next available movement from a replay; store variables to player_move, - player_fire, suicide */ -/* return true if successful */ -boolean gd_replay_get_next_movement(GdReplay *replay, GdDirection *player_move, - boolean *player_fire, boolean *suicide) -{ - guint8 data; - - /* if no more available movements */ - if (replay->current_playing_pos >= replay->movements->len) - return FALSE; - - data = replay->movements->data[replay->current_playing_pos++]; - *suicide = (data & GD_REPLAY_SUICIDE_MASK) != 0; - *player_fire = (data & GD_REPLAY_FIRE_MASK) != 0; - *player_move = (data & GD_REPLAY_MOVE_MASK); - - return TRUE; -} - /* calculate adler checksum for a rendered cave; this can be used for more caves. */ void gd_cave_adler_checksum_more(GdCave *cave, guint32 *a, guint32 *b) {