From b34a5a1e9d9a105ed3991e3a4634287de7b90d34 Mon Sep 17 00:00:00 2001 From: Hourier Date: Mon, 21 Sep 2020 22:29:03 +0900 Subject: [PATCH] [Refactor] #40742 Reshaped game-play.c --- src/core/game-play.c | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/src/core/game-play.c b/src/core/game-play.c index f2a6fe3a0..ff1251a99 100644 --- a/src/core/game-play.c +++ b/src/core/game-play.c @@ -101,8 +101,6 @@ */ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) { - bool load_game = TRUE; - bool init_random_seed = FALSE; if (browsing_movie) { reset_visuals(player_ptr, process_autopick_file_command); browse_movie(); @@ -113,22 +111,17 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) current_world_ptr->character_icky = TRUE; term_activate(angband_term[0]); angband_term[0]->resize_hook = resize_map; - for (MONSTER_IDX i = 1; i < 8; i++) { - if (angband_term[i]) { + for (MONSTER_IDX i = 1; i < 8; i++) + if (angband_term[i]) angband_term[i]->resize_hook = redraw_window; - } - } (void)term_set_cursor(0); - if (!load_savedata(player_ptr)) { + if (!load_savedata(player_ptr)) quit(_("セーブファイルが壊れています", "broken savefile")); - } extract_option_vars(); if (player_ptr->wait_report_score) { char buf[1024]; - bool success; - if (!get_check_strict(player_ptr, _("待機していたスコア登録を今行ないますか?", "Do you register score now? "), CHECK_NO_HISTORY)) quit(0); @@ -143,8 +136,7 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) /* 町名消失バグ対策(#38205)のためここで世界マップ情報を読み出す */ parse_fixed_map(player_ptr, "w_info.txt", 0, 0, current_world_ptr->max_wild_y, current_world_ptr->max_wild_x); - success = send_world_score(player_ptr, TRUE, update_playtime, display_player); - + bool success = send_world_score(player_ptr, TRUE, update_playtime, display_player); if (!success && !get_check_strict(player_ptr, _("スコア登録を諦めますか?", "Do you give up score registration? "), CHECK_NO_HISTORY)) { prt(_("引き続き待機します。", "standing by for future registration..."), 0, 0); (void)inkey(); @@ -158,28 +150,25 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) (void)fd_close(highscore_fd); highscore_fd = -1; signals_handle_tstp(); - quit(0); } current_world_ptr->creating_savefile = new_game; + bool init_random_seed = FALSE; if (!current_world_ptr->character_loaded) { new_game = TRUE; current_world_ptr->character_dungeon = FALSE; init_random_seed = TRUE; init_saved_floors(player_ptr, FALSE); - } else if (new_game) { + } else if (new_game) init_saved_floors(player_ptr, TRUE); - } - if (!new_game) { + if (!new_game) process_player_name(player_ptr, FALSE); - } - if (init_random_seed) { + if (init_random_seed) Rand_state_init(); - } floor_type *floor_ptr = player_ptr->current_floor_ptr; if (new_game) { @@ -207,7 +196,7 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) player_ptr, DIARY_GAMESTART, 1, _(" ----ゲーム再開----", " --- Restarted Game ---")); /* - * todo もう2.2.Xなので互換性は打ち切ってもいいのでは? + * todo 3.0.Xで削除予定 * 1.0.9 以前はセーブ前に player_ptr->riding = -1 としていたので、再設定が必要だった。 * もう不要だが、以前のセーブファイルとの互換のために残しておく。 */ @@ -241,7 +230,6 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) flavor_init(); prt(_("お待ち下さい...", "Please wait..."), 0, 0); term_fresh(); - if (arg_wizard) { if (enter_wizard_mode(player_ptr)) { current_world_ptr->wizard = TRUE; @@ -296,13 +284,13 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) } term_xtra(TERM_XTRA_REACT, 0); - player_ptr->window |= (PW_INVEN | PW_EQUIP | PW_SPELL | PW_PLAYER); player_ptr->window |= (PW_MESSAGE | PW_OVERHEAD | PW_DUNGEON | PW_MONSTER | PW_OBJECT); handle_stuff(player_ptr); if (arg_force_original) rogue_like_commands = FALSE; + if (arg_force_roguelike) rogue_like_commands = TRUE; @@ -330,6 +318,7 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) (void)combine_and_reorder_home(player_ptr, STORE_MUSEUM); select_floor_music(player_ptr); + bool load_game = TRUE; while (TRUE) { process_dungeon(player_ptr, load_game); current_world_ptr->character_xtra = TRUE; @@ -357,6 +346,7 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) player_ptr->arena_number++; else player_ptr->arena_number = -1 - player_ptr->arena_number; + player_ptr->is_dead = FALSE; player_ptr->chp = 0; player_ptr->chp_frac = 0; @@ -365,9 +355,8 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie) prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS | CFM_RAND_CONNECT); leave_floor(player_ptr); } else { - if ((current_world_ptr->wizard || cheat_live) && !get_check(_("死にますか? ", "Die? "))) { + if ((current_world_ptr->wizard || cheat_live) && !get_check(_("死にますか? ", "Die? "))) cheat_death(player_ptr); - } } } -- 2.11.0