X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fserver%2Finit.c;h=f5c81d3d5081b3ec4ed48f43eeb1801f94f86789;hb=1dc64ee46c2dcbd7eb8a6c4fcd27620dab7d7680;hp=42ec699a921d067f237c7eb67c9bafaa78454463;hpb=fa0c416ccad4c4278813909ca1b799cd0600840c;p=plomrogue diff --git a/src/server/init.c b/src/server/init.c index 42ec699..f5c81d3 100644 --- a/src/server/init.c +++ b/src/server/init.c @@ -1,4 +1,9 @@ -/* src/server/init.c */ +/* src/server/init.c + * + * This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3 + * or any later version. For details on its copyright, license, and warranties, + * see the file NOTICE in the root directory of the PlomRogue source package. + */ #define _POSIX_C_SOURCE 2 /* getopt(), optarg */ #include "init.h" @@ -20,13 +25,13 @@ #include "../common/rexit.h" /* exit_err(), exit_trouble() */ #include "../common/try_malloc.h" /* try_malloc() */ #include "cleanup.h" /* set_cleanup_flag() */ -#include "field_of_view.h" /* build_fov_map() */ +#include "field_of_view.h" /* update_map_memory() */ #include "hardcoded_strings.h" /* s */ #include "map.h" /* remake_map() */ #include "things.h" /* Thing, ThingType, free_things(), add_things(), - * get_thing_id_action_id_by_name() + * get_thing_id_action_id_by_name(), get_player() */ -#include "run.h" /* obey_msg(), io_loop() */ +#include "run.h" /* obey_msg(), io_loop(), record(), send_to_outfile() */ #include "world.h" /* global world */ @@ -55,7 +60,7 @@ static void obey_lines_from_file(char * path, uint8_t record) FILE * file = try_fopen(path, "r", __func__); uint32_t linemax = textfile_width(file); char * line = try_malloc(linemax + 1, __func__); - while (NULL != try_fgets(line, linemax + 1, file, __func__)) + while (try_fgets(line, linemax + 1, file, __func__)) { if (strlen(line)) { @@ -66,7 +71,7 @@ static void obey_lines_from_file(char * path, uint8_t record) { *nl = '\0'; } - obey_msg(line, record, 1); + obey_msg(line, record); } err_line_inc(); } @@ -84,20 +89,20 @@ static void replay_game() uint32_t linemax = textfile_width(file); char * line = try_malloc(linemax + 1, __func__); while ( world.turn < world.replay - && NULL != try_fgets(line, linemax + 1, file, __func__)) + && try_fgets(line, linemax + 1, file, __func__)) { - obey_msg(line, 0, 1); + obey_msg(line, 0); err_line_inc(); } uint8_t end = 0; - while (!io_loop()) + while (3 == io_loop(2)) { if (!end) { end = (NULL == try_fgets(line, linemax + 1, file, __func__)); if (!end) { - obey_msg(line, 0, 1); + obey_msg(line, 0); err_line_inc(); } } @@ -112,7 +117,7 @@ static uint8_t world_cannot_be_made() { uint8_t player_will_be_generated = 0; struct ThingType * tt; - for (tt = world.thing_types; NULL != tt; tt = tt->next) + for (tt = world.thing_types; tt; tt = tt->next) { if (world.player_type == tt->id) { @@ -191,13 +196,12 @@ extern uint8_t remake_world() { return test; } - free(world.log); - world.log = NULL; /* thing_actions.c's update_log() checks for this. */ world.seed_map = world.seed; free_things(world.things); remake_map(); + world.exists = 1; struct ThingType * tt; - for (tt = world.thing_types; NULL != tt; tt = tt->next) + for (tt = world.thing_types; tt; tt = tt->next) { if (world.player_type == tt->id) { @@ -205,24 +209,16 @@ extern uint8_t remake_world() break; } } - for (tt = world.thing_types; NULL != tt; tt = tt->next) + update_map_memory(get_player(), 1); + for (tt = world.thing_types; tt; tt = tt->next) { if (world.player_type != tt->id) { add_things(tt->id, tt->start_n); } } - struct Thing * t; - for (t = world.things; NULL != t; t = t->next) - { - if (t->lifepoints) - { - build_fov_map(t); - } - } world.turn = 1; - world.do_update = 1; - world.exists = 1; + send_to_outfile("NEW_WORLD\n", 1); return 0; } @@ -252,9 +248,10 @@ extern void run_game() char * msg = try_malloc(strlen(command) + 1 + 11 + 1, __func__); int test = sprintf(msg, "%s %d", command, (int) time(NULL)); exit_trouble(test < 0, __func__, s[S_FCN_SPRINTF]); - obey_msg(msg, 1, 1); + obey_msg(msg, 1); free(msg); } err_line_zero(); - io_loop(); + io_loop(1); + record(NULL, 1); }