home · contact · privacy
Replaced dummy function by just passing NULL and checking for it.
authorChristian Heller <c.heller@plomlompom.de>
Fri, 19 Jul 2013 23:39:05 +0000 (01:39 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Fri, 19 Jul 2013 23:39:05 +0000 (01:39 +0200)
src/main.c
src/map_objects.c
src/map_objects.h
src/misc.c

index b65108b7b4ec4ae3b3a2c93e52a3490ab8fa068f..a720191eeeba8106485e6d77a6f9866fcab97a9e 100644 (file)
@@ -50,7 +50,7 @@ int main (int argc, char *argv[]) {
     player.pos.x = read_uint16_bigendian(file) - 1;
     player.hitpoints = fgetc(file);
     read_map_objects (&world.monster, file, sizeof(struct Monster), read_map_objects_monsterdata);
-    read_map_objects (&world.item,    file, sizeof(struct Item),    readwrite_map_objects_dummy);
+    read_map_objects (&world.item,    file, sizeof(struct Item),    NULL);
     fclose(file); }
 
   // For non-interactive mode, try to load world state from record file.
index 6aeb13b2158ddc85340005ed52abf8d5d8afeb79..747b7180a52e905111885d3b224ce8af7e92022c 100644 (file)
@@ -49,10 +49,6 @@ extern void init_map_object_defs (struct World * world, char * filename) {
   free(defline);
   fclose(file); };
 
-extern void readwrite_map_objects_dummy (void * dummy, FILE * file) {
-// Dummy function for calls of (write|read)_map_objects on map objects without specific attributes.
-  ; }
-
 extern void write_map_objects_monsterdata (void * start, FILE * file) {
 // Write to file data specific to map objects of type monster.
   struct Monster * m = (struct Monster *) start;
@@ -65,7 +61,8 @@ extern void write_map_objects (void * start, FILE * file, void (* w_typedata) (v
     write_uint16_bigendian(map_obj->pos.y + 1, file);
     write_uint16_bigendian(map_obj->pos.x + 1, file);
     fputc(map_obj->type, file);
-    w_typedata (map_obj, file); }
+    if (w_typedata)
+      w_typedata (map_obj, file); }
   write_uint16_bigendian(0, file); }
 
 extern void read_map_objects_monsterdata (void * start, FILE * file) {
@@ -98,7 +95,8 @@ extern void read_map_objects (void * start, FILE * file, size_t size, void (* r_
     map_obj->pos.y = test - 1;
     map_obj->pos.x = read_uint16_bigendian(file) - 1;
     map_obj->type = fgetc(file);
-    r_typedata (map_obj, file); }
+    if (r_typedata)
+      r_typedata (map_obj, file); }
   if (!first)
     map_obj->next = 0; }
 
index abf77ebcc54fbcaa4a89b0d90de274db5338cc03..f39df0daedf99ff059778a2f21cd035bb4c727d3 100644 (file)
@@ -36,7 +36,6 @@ struct MonsterDef {
   unsigned char hitpoints_start; };
 
 extern void init_map_object_defs (struct World *, char *);
-extern void readwrite_map_objects_dummy (void *, FILE *);
 extern void write_map_objects_monsterdata (void *, FILE *);
 extern void write_map_objects (void * start, FILE *, void (*) (void *, FILE *) );
 extern void read_map_objects_monsterdata (void *, FILE *);
index 8d38d59c383297ef3be00af1f3f67ce562d5e01c..cff42644ca1abe26ff8f9d4997a03d542aa46168 100644 (file)
@@ -93,7 +93,7 @@ extern void save_game(struct World * world) {
   write_uint16_bigendian(world->player->pos.x + 1, file);
   fputc(world->player->hitpoints, file);
   write_map_objects (world->monster, file, write_map_objects_monsterdata);
-  write_map_objects (world->item, file, readwrite_map_objects_dummy);
+  write_map_objects (world->item, file, NULL);
   fclose(file); }
 
 extern void toggle_window (struct WinMeta * win_meta, struct Win * win) {