home · contact · privacy
Fixed bug that led to endless loop in nearest_enemy_dir().
[plomrogue] / src / misc.c
index 97c9fa69a96d0a2445eb54965c2fa6b5fdab3b47..e6f0df1c3dac7b3de7ebda8fe3cf54923ab94112 100644 (file)
@@ -27,8 +27,7 @@
 
 
 extern uint16_t rrand()
-{
-    /* Constants as recommended by POSIX.1-2001 (see man page rand(3)). */
+{   /* Constants as recommended by POSIX.1-2001 (see man page rand(3)). */
     world.seed = ((world.seed * 1103515245) + 12345) % 4294967296;
     return (world.seed >> 16); /* Ignore less random least significant bits. */
 }
@@ -169,17 +168,17 @@ extern void update_log(char * text)
 
 
 
-extern uint16_t center_offset(uint16_t pos, uint16_t mapsize,
+extern uint16_t center_offset(uint16_t position, uint16_t mapsize,
                               uint16_t framesize)
 {
     uint16_t offset = 0;
     if (mapsize > framesize)
     {
-        if (pos > framesize / 2)
+        if (position > framesize / 2)
         {
-            if (pos < mapsize - (framesize / 2))
+            if (position < mapsize - (framesize / 2))
             {
-                offset = pos - (framesize / 2);
+                offset = position - (framesize / 2);
             }
             else
             {
@@ -213,7 +212,7 @@ extern void turn_over(char action)
         if (   is_command_id_shortdsc(action, "drop")
             || is_command_id_shortdsc(action, "use"))
         {
-            try_fputc(world.inventory_select, file_new, f_name);
+            try_fputc(world.inventory_sel, file_new, f_name);
         }
         try_fclose_unlink_rename(file_new, recordfile_tmp, recordfile, f_name);
     }
@@ -268,6 +267,8 @@ extern void save_game()
     try_fwrite(line, strlen(line), 1, file, f_name);
     sprintf(line, "%u\n", world.seed);
     try_fwrite(line, strlen(line), 1, file, f_name);
+    sprintf(line, "%u\n", world.map_obj_count);
+    try_fwrite(line, strlen(line), 1, file, f_name);
     sprintf(line, "%u\n", world.turn);
     try_fwrite(line, strlen(line), 1, file, f_name);
     sprintf(line, "%u\n", world.score);
@@ -290,6 +291,8 @@ extern void load_game()
     try_fgets(line, linemax + 1, file, f_name);
     world.seed = atoi(line);
     try_fgets(line, linemax + 1, file, f_name);
+    world.map_obj_count = atoi(line);
+    try_fgets(line, linemax + 1, file, f_name);
     world.turn = atoi(line);
     try_fgets(line, linemax + 1, file, f_name);
     world.score = atoi(line);
@@ -316,10 +319,7 @@ extern void nav_inventory(char dir)
 {
     if ('u' == dir)
     {
-        if (world.inventory_select > 0)
-        {
-            world.inventory_select--;
-        }
+        world.inventory_sel = world.inventory_sel - (world.inventory_sel > 0);
         return;
     }
     struct MapObj * player = get_player();
@@ -330,8 +330,5 @@ extern void nav_inventory(char dir)
     }
     uint8_t n_owned = 0;
     for (; NULL != owned->next; owned = owned->next, n_owned++);
-    if (world.inventory_select < n_owned)
-    {
-        world.inventory_select++;
-    }
+    world.inventory_sel = world.inventory_sel + (world.inventory_sel < n_owned);
 }