X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fmain.c;h=bb2ef43c438c931ff7df99d30f1823563ef6853d;hb=e31f0c764131a28ac50c6f9c35e0a190f4bc95e4;hp=fcaac80e3556d1b6e0912775a67f7ddfd4f563cc;hpb=fb8ddca6abc66eb7e52a007850689309b4cda938;p=plomrogue diff --git a/src/main.c b/src/main.c index fcaac80..bb2ef43 100644 --- a/src/main.c +++ b/src/main.c @@ -7,13 +7,15 @@ #include /* for time() */ #include /* for getopt(), optarg */ #include /* for uint32_t */ -#include "windows.h" /* for structs WinMeta, Win, init_win_meta(), draw_all_wins() +#include "windows.h" /* for structs WinMeta, Win, init_win_meta(), + * draw_all_wins() */ -#include "readwrite.h" /* for read_uint32_bigendian](), write_uint32_bigendian(), - * try_fopen(), try_fclose(), try_fclose_unlink_rename() +#include "readwrite.h" /* for read_uint32_bigendian](), + * 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(), @@ -76,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()) / " @@ -135,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; } @@ -161,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; @@ -229,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; }