X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain.c;h=bb2ef43c438c931ff7df99d30f1823563ef6853d;hb=e31f0c764131a28ac50c6f9c35e0a190f4bc95e4;hp=06156fc5b01f3cd117de54dad1051044d0e79c95;hpb=70e61f84d109d0f3072ab569774424b83136ae58;p=plomrogue diff --git a/src/main.c b/src/main.c index 06156fc..bb2ef43 100644 --- a/src/main.c +++ b/src/main.c @@ -14,8 +14,8 @@ * write_uint32_bigendian(), try_fopen(), try_fclose(), * try_fclose_unlink_rename() */ -#include "map_objects.h" /* for structs MapObj Player, init_map_object_defs(), - * build_map_objects() +#include "map_objects.h" /* for structs MapObj, init_map_object_defs(), + * build_map_objects(), get_player() */ #include "map.h" /* for struct Map, init_map() */ #include "misc.h" /* for update_log(), find_passable_pos(), save_game(), @@ -78,17 +78,14 @@ int main(int argc, char *argv[]) } } - /* Initialize log, player, monster/item definitions and monsters/items. */ + /* Initialize log and map object definitions. */ world.score = 0; world.log = try_calloc(1, sizeof(char), &world, f_name); set_cleanup_flag(CLEANUP_LOG); update_log(&world, " "); - struct Player player; - player.hitpoints = 5; - world.player = &player; init_map_object_defs(&world, "config/defs"); set_cleanup_flag(CLEANUP_MAP_OBJECT_DEFS); - world.map_obj_count = 1; + world.map_obj_count = 0; /* For interactive mode, try to load world state from savefile. */ char * err_r = "Trouble loading game (in main()) / " @@ -137,8 +134,8 @@ int main(int argc, char *argv[]) set_cleanup_flag(CLEANUP_MAP); if (0 == world.turn) { - player.pos = find_passable_pos(world.map); world.map_objs = NULL; + add_map_objects(&world, 0, 1); add_map_objects(&world, 1, 1 + rrand() % 27); add_map_objects(&world, 2, 1 + rrand() % 9); add_map_objects(&world, 3, 1 + rrand() % 3); @@ -163,8 +160,12 @@ int main(int argc, char *argv[]) err_winmem = "Trouble with draw_all_wins() in main()."; /* Focus map on player. */ + struct MapObj * player = get_player(&world); struct Win * win_map = get_win_by_id(&world, 'm'); - map_center_player(&map, &player, win_map->frame.size); + win_map->center = player->pos; + + /* Initialize player's inventory selection index to start position. */ + world.inventory_select = 0; /* Replay mode. */ int key; @@ -231,7 +232,7 @@ int main(int argc, char *argv[]) if ( (1 == wc->view && wingeom_control(key, &world)) || (2 == wc->view && winkeyb_control(key, &world)) - || (0 != player.hitpoints && player_control(key, &world))) + || (0 != player->lifepoints && player_control(key, &world))) { continue; }