X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Fmain.c;h=bb2ef43c438c931ff7df99d30f1823563ef6853d;hb=e31f0c764131a28ac50c6f9c35e0a190f4bc95e4;hp=5d253ce186f58b55fd8d3c4e60014850578cb9d0;hpb=8e38bb5605a46afd6398b69c63c935aa5dc83660;p=plomrogue diff --git a/src/main.c b/src/main.c index 5d253ce..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/defs2"); + 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,13 +134,13 @@ int main(int argc, char *argv[]) set_cleanup_flag(CLEANUP_MAP); if (0 == world.turn) { - player.pos = find_passable_pos(world.map); - struct MapObj ** ptr; - ptr = build_map_objects(&world, &world.map_objs, 1, 1 + rrand() % 27); - ptr = build_map_objects(&world, ptr, 2, 1 + rrand() % 9); - ptr = build_map_objects(&world, ptr, 3, 1 + rrand() % 3); - ptr = build_map_objects(&world, ptr, 4, 1 + rrand() % 3); - ptr = build_map_objects(&world, ptr, 5, 1 + rrand() % 3); + 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); + add_map_objects(&world, 4, 1 + rrand() % 3); + add_map_objects(&world, 5, 1 + rrand() % 3); set_cleanup_flag(CLEANUP_MAP_OBJECTS); world.turn = 1; } @@ -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; }