X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fclient%2Fio.c;h=481495d81fdb295ea0f00d622c9681a9bbbdfd22;hb=d6093b3a7d57aa34d3ee2a84112c59328bf1feed;hp=998691cc9637e1b4be8236b79b1fe57d096d4339;hpb=0b7798939c0193fd794985b503737e40d8602313;p=plomrogue diff --git a/src/client/io.c b/src/client/io.c index 998691c..481495d 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() */ @@ -17,9 +18,9 @@ * try_fgetc() */ #include "control.h" /* try_key() */ -#include "map_window.h" /* for map_center() */ +#include "map_window.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); @@ -195,12 +196,12 @@ static uint8_t read_world() uint32_t linemax = textfile_sizes(file, NULL); 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_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 +261,7 @@ extern char * io_loop() { if (world.winch) { - reset_windows(); + reset_windows_on_winch(); world.winch = 0; change_in_client++; }