X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Fmisc.c;h=e6f0df1c3dac7b3de7ebda8fe3cf54923ab94112;hb=67bcb0339e09a67fe1685cf81e35ccac18eba0c5;hp=c637a5d8ea478bdc17d2135e721036bd9537a8a0;hpb=75b0ee910d9a50de67e77ba40e877f9c8dabdd40;p=plomrogue
diff --git a/src/misc.c b/src/misc.c
index c637a5d..e6f0df1 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -5,9 +5,9 @@
#include /* for unlink(), acess() */
#include /* for size_t, calloc(), free() */
#include /* for strlen(), strcmp(), memcpy() */
-#include /* for uint8_t, uint16_t, uint32_t */
-#include "readwrite.h" /* for [read/write]_uint[8/16/32][_bigendian](),
- * try_fopen(), try_fclose(), get_linemax()
+#include /* for uint8_t, uint16_t */
+#include "readwrite.h" /* for try_fopen(), try_fclose(), textfile_sizes(),
+ * try_fputc(), try_fgetc()
*/
#include "map_objects.h" /* for struct MapObj, get_player(), read_map_objects(),
* write_map_objects()
@@ -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
{
@@ -195,8 +194,6 @@ extern uint16_t center_offset(uint16_t pos, uint16_t mapsize,
extern void turn_over(char action)
{
char * f_name = "turn_over()";
- char * err_write = "Trouble in turn_over() with write_uint8() "
- "writing to opened file 'record_tmp'.";
char * recordfile_tmp = "record_tmp";
char * recordfile = "record";
@@ -204,18 +201,18 @@ extern void turn_over(char action)
{
FILE * file_old = try_fopen(recordfile, "r", f_name);
FILE * file_new = try_fopen(recordfile_tmp, "w", f_name);
- char c = fgetc(file_old);
+ int c = try_fgetc(file_old, f_name);
while (EOF != c)
{
- exit_err(write_uint8(c, file_new), err_write);
- c = fgetc(file_old);
+ try_fputc((uint8_t) c, file_new, f_name);
+ c = try_fgetc(file_old, f_name);
}
try_fclose(file_old, f_name);
- exit_err(write_uint8(action, file_new), err_write);
+ try_fputc(action, file_new, f_name);
if ( is_command_id_shortdsc(action, "drop")
|| is_command_id_shortdsc(action, "use"))
{
- exit_err(write_uint8(world.inventory_select, file_new), err_write);
+ try_fputc(world.inventory_sel, file_new, f_name);
}
try_fclose_unlink_rename(file_new, recordfile_tmp, recordfile, f_name);
}
@@ -270,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);
@@ -285,13 +284,15 @@ extern void load_game()
char * f_name = "load_game2()";
char * filename = "savefile";
FILE * file = try_fopen(filename, "r", f_name);
- uint16_t linemax = get_linemax(file, f_name);
+ uint16_t linemax = textfile_sizes(file, NULL);
char line[linemax + 1];
try_fgets(line, linemax + 1, file, f_name);
world.mapseed = atoi(line);
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);
@@ -318,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();
@@ -332,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);
}