X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fclient%2Fio.c;h=27a0e0f46d623fc2b31be94c074a2c953d61becb;hb=0907037fc188c28471805286a67b786264ba3e2f;hp=998691cc9637e1b4be8236b79b1fe57d096d4339;hpb=0b7798939c0193fd794985b503737e40d8602313;p=plomrogue diff --git a/src/client/io.c b/src/client/io.c index 998691c..27a0e0f 100644 --- a/src/client/io.c +++ b/src/client/io.c @@ -5,6 +5,7 @@ #include /* open() */ #include /* PIPE_BUF */ #include /* halfdelay(), getch() */ +#include /* NULL */ #include /* uint8_t, uint16_t, uint32_t */ #include /* FILE, sprintf(), fseek() */ #include /* strcmp(), strlen(), memcpy() */ @@ -14,12 +15,12 @@ #include "../common/try_malloc.h" /* try_malloc() */ #include "../common/rexit.h" /* exit_trouble(), exit_err() */ #include "../common/readwrite.h" /* try_fopen(), try_fclose(), try_fgets(), - * try_fgetc() + * try_fgetc(), textfile_width() */ #include "control.h" /* try_key() */ -#include "map_window.h" /* for map_center() */ +#include "map.h" /* map_center() */ #include "misc.h" /* reset_windows() */ -#include "windows.h" /* draw_all_wins() */ +#include "windows.h" /* reset_windows_on_winch(), draw_all_wins() */ #include "world.h" /* world global */ @@ -66,8 +67,8 @@ static FILE * changed_server_out_file(char * path); * a hard-coded serialization format. Returns 1 on success and 0 if the out file * wasn't read for supposedly not having changed since a last read_world() call. * - * Note that the first successful read_world() triggers map_center(), so that on - * start the client focuses the map window on the player. + * map_center() is triggered by the first successful read_world() or on turn 1, + * so the client focuses the map window on the player on client and world start. */ static uint8_t read_world(); @@ -78,7 +79,7 @@ static void read_inventory(char * read_buf, uint32_t linemax, FILE * file) char * f_name = "read_inventory()"; char * delimiter = "%\n"; free(world.player_inventory); - world.player_inventory = NULL; + world.player_inventory = NULL; /* Avoids illegal strlen() below. */ while (1) { try_fgets(read_buf, linemax + 1, file, f_name); @@ -192,15 +193,14 @@ static uint8_t read_world() { return 0; } - uint32_t linemax = textfile_sizes(file, NULL); + uint32_t linemax = textfile_width(file); char * read_buf = try_malloc(linemax + 1, f_name); world.turn = read_value_from_line(read_buf, linemax, file); - world.score = read_value_from_line(read_buf, linemax, file); world.player_lifepoints = read_value_from_line(read_buf, linemax, file); read_inventory(read_buf, linemax, file); world.player_pos.y = read_value_from_line(read_buf, linemax, file); world.player_pos.x = read_value_from_line(read_buf, linemax, file); - if (first_read) + if (1 == world.turn || first_read) { map_center(); first_read = 0; @@ -260,7 +260,7 @@ extern char * io_loop() { if (world.winch) { - reset_windows(); + reset_windows_on_winch(); world.winch = 0; change_in_client++; }