X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;ds=sidebyside;f=src%2Fserver%2Finit.c;h=a3c1589b6992c1af654e327f9b193e464329d62e;hb=d92f16d5959fc846d3eaf669517eecb3969cda08;hp=3a83c34025d53ff56f74b23bb423a368fb9ee306;hpb=169b8dda5f4c4373300b5be5edc113a376799737;p=plomrogue diff --git a/src/server/init.c b/src/server/init.c index 3a83c34..a3c1589 100644 --- a/src/server/init.c +++ b/src/server/init.c @@ -5,9 +5,9 @@ #include /* global errno, EEXIST */ #include /* NULL */ #include /* uint32_t */ -#include /* sprintf(), fflush() */ -#include /* exit(), free() */ -#include /* atoi(), strlen() */ +#include /* FILE, sprintf(), fflush() */ +#include /* exit(), free(), atoi() */ +#include /* strlen() */ #include /* mkdir() */ #include /* defines pid_t, time_t */ #include /* time() */ @@ -17,16 +17,12 @@ */ #include "../common/rexit.h" /* exit_err() */ #include "../common/try_malloc.h" /* try_malloc() */ -#include "cleanup.h" /* set_cleanup_flag(), CLEANUP_MAP_OBJ_DEFS, - * CLEANUP_MAP_OBJ_ACTS - */ -#include "io.h" /* read_config_file(), struct EntrySkeleton */ +#include "cleanup.h" /* set_cleanup_flag() */ +#include "field_of_view.h" /* build_fov_map() */ #include "map.h" /* init_map() */ -#include "map_object_actions.h" /* struct MapObjAct, read_map_object_action() */ -#include "map_objects.h" /* struct MapObjDef, free_map_objects(), - * add_map_objects(), read_map_object_def() - */ -#include "rrand.h" /* rrand() */ +#include "things.h" /* Thing, ThingType, free_things(), add_things(), + * get_player() + */ #include "run.h" /* obey_msg(), io_loop() */ #include "world.h" /* global world */ @@ -58,26 +54,6 @@ extern void obey_argv(int argc, char * argv[]) -extern void init_map_and_map_objects_configs() -{ - world.map.size.x = 64; - world.map.size.y = 64; - world.map.dist_orthogonal = 5; - world.map.dist_diagonal = 7; - char * err_mod = "No map object definitions file."; - char * err_moa = "No map object actions file."; - exit_err(access(world.path_map_obj_defs, F_OK), err_mod); - exit_err(access(world.path_map_obj_acts, F_OK), err_moa); - read_config_file(world.path_map_obj_defs, CLEANUP_MAP_OBJECT_DEFS, - read_map_object_def, sizeof(struct MapObjDef), - (struct EntrySkeleton **) &world.map_obj_defs); - read_config_file(world.path_map_obj_acts, CLEANUP_MAP_OBJECT_ACTS, - read_map_object_action, sizeof(struct MapObjAct), - (struct EntrySkeleton **) &world.map_obj_acts); -} - - - extern void setup_server_io() { char * f_name = "setup_server_io()"; @@ -106,20 +82,35 @@ extern void remake_world(uint32_t seed) { char * f_name = "remake_world()"; free(world.log); - world.log = NULL; /* map_object_action.c's update_log() checks for this. */ + world.log = NULL; /* thing_actions.c's update_log() checks for this. */ world.seed = seed; - world.map_obj_count = 0; + world.thing_count = 0; free(world.map.cells); - free_map_objects(world.map_objs); + free_things(world.things); world.last_update_turn = 0; init_map(); - add_map_objects(0, 1); - add_map_objects(1, 1 + rrand() % 27); - add_map_objects(2, 1 + rrand() % 9); - add_map_objects(3, 1 + rrand() % 3); - add_map_objects(4, 1 + rrand() % 3); - add_map_objects(5, 1 + rrand() % 3); - set_cleanup_flag(CLEANUP_MAP_OBJECTS); + struct ThingType * tt; + for (tt = world.thing_types; NULL != tt; tt = tt->next) + { + if (world.player_type == tt->id) + { + add_things(tt->id, tt->start_n); + break; + } + } + for (tt = world.thing_types; NULL != tt; tt = tt->next) + { + if (world.player_type != tt->id) + { + add_things(tt->id, tt->start_n); + } + } + set_cleanup_flag(CLEANUP_THINGS); + struct Thing * t; + for (t = world.things; NULL != t; t = t->next) + { + t->fov_map = t->lifepoints ? build_fov_map(t) : NULL; + } if (world.turn) { exit_trouble(unlink(world.path_record), f_name, "unlink()");