From 0d843d3198968af34bc5482760de0c4ec9ec0313 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 2 Oct 2021 19:21:05 +0900 Subject: [PATCH] [Refactor] #1710 Definitions QUEST_STATUS_* to enum class QuestStatusType --- src/birth/game-play-initializer.cpp | 8 ++++---- src/cmd-action/cmd-move.cpp | 12 ++++++------ src/dungeon/quest-completion-checker.cpp | 16 ++++++++-------- src/dungeon/quest-monster-placer.cpp | 2 +- src/dungeon/quest.cpp | 22 +++++++++++----------- src/dungeon/quest.h | 30 ++++++++++++++++-------------- src/floor/floor-events.cpp | 4 ++-- src/floor/floor-leaver.cpp | 2 +- src/floor/wild.cpp | 4 ++-- src/info-reader/fixed-map-parser.cpp | 2 +- src/knowledge/knowledge-quests.cpp | 16 ++++++++-------- src/load/load.cpp | 2 +- src/load/quest-loader.cpp | 10 ++++++---- src/main/game-data-initializer.cpp | 2 +- src/market/building-quest.cpp | 16 ++++++++-------- src/save/save.cpp | 6 +++--- src/spell-kind/spells-world.cpp | 4 ++-- src/wizard/wizard-game-modifier.cpp | 4 ++-- src/world/world-movement-processor.cpp | 4 ++-- 19 files changed, 85 insertions(+), 81 deletions(-) diff --git a/src/birth/game-play-initializer.cpp b/src/birth/game-play-initializer.cpp index 720e5de66..44b72032a 100644 --- a/src/birth/game-play-initializer.cpp +++ b/src/birth/game-play-initializer.cpp @@ -60,7 +60,7 @@ void player_wipe_without_name(player_type *player_ptr) for (int i = 0; i < max_q_idx; i++) { quest_type *const q_ptr = &quest[i]; - q_ptr->status = QUEST_STATUS_UNTAKEN; + q_ptr->status = QuestStatusType::UNTAKEN; q_ptr->cur_num = 0; q_ptr->max_num = 0; q_ptr->type = 0; @@ -181,7 +181,7 @@ void init_dungeon_quests(player_type *player_ptr) for (int i = MIN_RANDOM_QUEST + number_of_quests - 1; i >= MIN_RANDOM_QUEST; i--) { quest_type *q_ptr = &quest[i]; monster_race *quest_r_ptr; - q_ptr->status = QUEST_STATUS_TAKEN; + q_ptr->status = QuestStatusType::TAKEN; determine_random_questor(player_ptr, q_ptr); quest_r_ptr = &r_info[q_ptr->r_idx]; quest_r_ptr->flags1 |= RF1_QUESTOR; @@ -191,11 +191,11 @@ void init_dungeon_quests(player_type *player_ptr) init_flags = INIT_ASSIGN; floor_ptr->inside_quest = QUEST_OBERON; parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0); - quest[QUEST_OBERON].status = QUEST_STATUS_TAKEN; + quest[QUEST_OBERON].status = QuestStatusType::TAKEN; floor_ptr->inside_quest = QUEST_SERPENT; parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0); - quest[QUEST_SERPENT].status = QUEST_STATUS_TAKEN; + quest[QUEST_SERPENT].status = QuestStatusType::TAKEN; floor_ptr->inside_quest = 0; } diff --git a/src/cmd-action/cmd-move.cpp b/src/cmd-action/cmd-move.cpp index c8ffd8f58..9db738cec 100644 --- a/src/cmd-action/cmd-move.cpp +++ b/src/cmd-action/cmd-move.cpp @@ -55,9 +55,9 @@ static bool confirm_leave_level(player_type *player_ptr, bool down_stair) { quest_type *q_ptr = &quest[player_ptr->current_floor_ptr->inside_quest]; if (confirm_quest && player_ptr->current_floor_ptr->inside_quest - && (q_ptr->type == QUEST_TYPE_RANDOM || (q_ptr->flags & QUEST_FLAG_ONCE && q_ptr->status != QUEST_STATUS_COMPLETED) + && (q_ptr->type == QUEST_TYPE_RANDOM || (q_ptr->flags & QUEST_FLAG_ONCE && q_ptr->status != QuestStatusType::COMPLETED) || (q_ptr->flags & QUEST_FLAG_TOWER - && ((q_ptr->status != QUEST_STATUS_STAGE_COMPLETED) || (down_stair && (quest[QUEST_TOWER1].status != QUEST_STATUS_COMPLETED)))))) { + && ((q_ptr->status != QuestStatusType::STAGE_COMPLETED) || (down_stair && (quest[QUEST_TOWER1].status != QuestStatusType::COMPLETED)))))) { msg_print(_("この階を一度去ると二度と戻って来られません。", "You can't come back here once you leave this floor.")); return get_check(_("本当にこの階を去りますか?", "Really leave this floor? ")); } @@ -94,13 +94,13 @@ void do_cmd_go_up(player_type *player_ptr) leave_quest_check(player_ptr); player_ptr->current_floor_ptr->inside_quest = g_ptr->special; - if (!quest[player_ptr->current_floor_ptr->inside_quest].status) { + if (quest[player_ptr->current_floor_ptr->inside_quest].status != QuestStatusType::UNTAKEN) { if (quest[player_ptr->current_floor_ptr->inside_quest].type != QUEST_TYPE_RANDOM) { init_flags = INIT_ASSIGN; parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0); } - quest[player_ptr->current_floor_ptr->inside_quest].status = QUEST_STATUS_TAKEN; + quest[player_ptr->current_floor_ptr->inside_quest].status = QuestStatusType::TAKEN; } if (!player_ptr->current_floor_ptr->inside_quest) { @@ -211,13 +211,13 @@ void do_cmd_go_down(player_type *player_ptr) leave_quest_check(player_ptr); leave_tower_check(player_ptr); player_ptr->current_floor_ptr->inside_quest = g_ptr->special; - if (!quest[player_ptr->current_floor_ptr->inside_quest].status) { + if (quest[player_ptr->current_floor_ptr->inside_quest].status != QuestStatusType::UNTAKEN) { if (quest[player_ptr->current_floor_ptr->inside_quest].type != QUEST_TYPE_RANDOM) { init_flags = INIT_ASSIGN; parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0); } - quest[player_ptr->current_floor_ptr->inside_quest].status = QUEST_STATUS_TAKEN; + quest[player_ptr->current_floor_ptr->inside_quest].status = QuestStatusType::TAKEN; } if (!player_ptr->current_floor_ptr->inside_quest) { diff --git a/src/dungeon/quest-completion-checker.cpp b/src/dungeon/quest-completion-checker.cpp index a153ded12..1676baee6 100644 --- a/src/dungeon/quest-completion-checker.cpp +++ b/src/dungeon/quest-completion-checker.cpp @@ -37,7 +37,7 @@ void QuestCompletionChecker::complete() short i; for (i = max_q_idx - 1; i > 0; i--) { auto *const q_ptr = &quest[i]; - if (q_ptr->status != QUEST_STATUS_TAKEN) { + if (q_ptr->status != QuestStatusType::TAKEN) { continue; } @@ -67,7 +67,7 @@ void QuestCompletionChecker::complete() auto create_stairs = false; auto reward = false; - if ((quest_num > 0) && (quest[quest_num].status == QUEST_STATUS_TAKEN)) { + if ((quest_num > 0) && (quest[quest_num].status == QuestStatusType::TAKEN)) { auto *const q_ptr = &quest[quest_num]; switch (q_ptr->type) { case QUEST_TYPE_KILL_NUMBER: @@ -84,7 +84,7 @@ void QuestCompletionChecker::complete() } if (q_ptr->flags & QUEST_FLAG_SILENT) { - q_ptr->status = QUEST_STATUS_FINISHED; + q_ptr->status = QuestStatusType::FINISHED; } else { complete_quest(this->player_ptr, quest_num); } @@ -108,12 +108,12 @@ void QuestCompletionChecker::complete() } if ((quest_num == QUEST_OBERON) || (quest_num == QUEST_SERPENT)) { - q_ptr->status = QUEST_STATUS_FINISHED; + q_ptr->status = QuestStatusType::FINISHED; } if (q_ptr->type == QUEST_TYPE_RANDOM) { reward = true; - q_ptr->status = QUEST_STATUS_FINISHED; + q_ptr->status = QuestStatusType::FINISHED; } break; @@ -131,9 +131,9 @@ void QuestCompletionChecker::complete() } if (this->count_all_hostile_monsters() == 1) { - q_ptr->status = QUEST_STATUS_STAGE_COMPLETED; - if ((quest[QUEST_TOWER1].status == QUEST_STATUS_STAGE_COMPLETED) && (quest[QUEST_TOWER2].status == QUEST_STATUS_STAGE_COMPLETED) - && (quest[QUEST_TOWER3].status == QUEST_STATUS_STAGE_COMPLETED)) { + q_ptr->status = QuestStatusType::STAGE_COMPLETED; + if ((quest[QUEST_TOWER1].status == QuestStatusType::STAGE_COMPLETED) && (quest[QUEST_TOWER2].status == QuestStatusType::STAGE_COMPLETED) + && (quest[QUEST_TOWER3].status == QuestStatusType::STAGE_COMPLETED)) { complete_quest(this->player_ptr, QUEST_TOWER1); } } diff --git a/src/dungeon/quest-monster-placer.cpp b/src/dungeon/quest-monster-placer.cpp index c205ac854..fc42f1932 100644 --- a/src/dungeon/quest-monster-placer.cpp +++ b/src/dungeon/quest-monster-placer.cpp @@ -25,7 +25,7 @@ bool place_quest_monsters(player_type *player_ptr) for (int i = 0; i < max_q_idx; i++) { monster_race *r_ptr; BIT_FLAGS mode; - if (quest[i].status != QUEST_STATUS_TAKEN || (quest[i].type != QUEST_TYPE_KILL_LEVEL && quest[i].type != QUEST_TYPE_RANDOM) + if (quest[i].status != QuestStatusType::TAKEN || (quest[i].type != QUEST_TYPE_KILL_LEVEL && quest[i].type != QUEST_TYPE_RANDOM) || quest[i].level != floor_ptr->dun_level || player_ptr->dungeon_idx != quest[i].dungeon || (quest[i].flags & QUEST_FLAG_PRESET)) { continue; } diff --git a/src/dungeon/quest.cpp b/src/dungeon/quest.cpp index c31962d5f..90856dbfe 100644 --- a/src/dungeon/quest.cpp +++ b/src/dungeon/quest.cpp @@ -115,7 +115,7 @@ void determine_random_questor(player_type *player_ptr, quest_type *q_ptr) * @param q_ptr クエスト情報への参照ポインタ * @param stat ステータス(成功or失敗) */ -void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, int16_t stat) +void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, QuestStatusType stat) { q_ptr->status = stat; q_ptr->complev = lev; @@ -143,7 +143,7 @@ void complete_quest(player_type *player_ptr, QUEST_IDX quest_num) break; } - record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_COMPLETED); + record_quest_final_status(q_ptr, player_ptr->lev, QuestStatusType::COMPLETED); if (q_ptr->flags & QUEST_FLAG_SILENT) return; @@ -163,7 +163,7 @@ void check_find_art_quest_completion(player_type *player_ptr, object_type *o_ptr { /* Check if completed a quest */ for (QUEST_IDX i = 0; i < max_q_idx; i++) { - if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) && (quest[i].status == QUEST_STATUS_TAKEN) && (quest[i].k_idx == o_ptr->name1)) { + if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) && (quest[i].status == QuestStatusType::TAKEN) && (quest[i].k_idx == o_ptr->name1)) { complete_quest(player_ptr, i); } } @@ -205,7 +205,7 @@ void quest_discovery(QUEST_IDX q_idx) } msg_print(_("この階は以前は誰かによって守られていたようだ…。", "It seems that this level was protected by someone before...")); - record_quest_final_status(q_ptr, 0, QUEST_STATUS_FINISHED); + record_quest_final_status(q_ptr, 0, QuestStatusType::FINISHED); } /*! @@ -222,7 +222,7 @@ QUEST_IDX quest_number(player_type *player_ptr, DEPTH level) return (floor_ptr->inside_quest); for (QUEST_IDX i = 0; i < max_q_idx; i++) { - if (quest[i].status != QUEST_STATUS_TAKEN) + if (quest[i].status != QuestStatusType::TAKEN) continue; if ((quest[i].type == QUEST_TYPE_KILL_LEVEL) && !(quest[i].flags & QUEST_FLAG_PRESET) && (quest[i].level == level) @@ -245,7 +245,7 @@ QUEST_IDX random_quest_number(player_type *player_ptr, DEPTH level) return 0; for (QUEST_IDX i = MIN_RANDOM_QUEST; i < MAX_RANDOM_QUEST + 1; i++) { - if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QUEST_STATUS_TAKEN) && (quest[i].level == level) + if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QuestStatusType::TAKEN) && (quest[i].level == level) && (quest[i].dungeon == DUNGEON_ANGBAND)) { return i; } @@ -265,16 +265,16 @@ void leave_quest_check(player_type *player_ptr) return; quest_type *const q_ptr = &quest[leaving_quest]; - bool is_one_time_quest = ((q_ptr->flags & QUEST_FLAG_ONCE) || (q_ptr->type == QUEST_TYPE_RANDOM)) && (q_ptr->status == QUEST_STATUS_TAKEN); + bool is_one_time_quest = ((q_ptr->flags & QUEST_FLAG_ONCE) || (q_ptr->type == QUEST_TYPE_RANDOM)) && (q_ptr->status == QuestStatusType::TAKEN); if (!is_one_time_quest) return; - record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_FAILED); + record_quest_final_status(q_ptr, player_ptr->lev, QuestStatusType::FAILED); /* Additional settings */ switch (q_ptr->type) { case QUEST_TYPE_TOWER: - quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED; + quest[QUEST_TOWER1].status = QuestStatusType::FAILED; quest[QUEST_TOWER1].complev = player_ptr->lev; break; case QUEST_TYPE_FIND_ARTIFACT: @@ -307,13 +307,13 @@ void leave_tower_check(player_type *player_ptr) leaving_quest = player_ptr->current_floor_ptr->inside_quest; bool is_leaving_from_tower = leaving_quest != 0; is_leaving_from_tower &= quest[leaving_quest].type == QUEST_TYPE_TOWER; - is_leaving_from_tower &= quest[QUEST_TOWER1].status != QUEST_STATUS_COMPLETED; + is_leaving_from_tower &= quest[QUEST_TOWER1].status != QuestStatusType::COMPLETED; if (!is_leaving_from_tower) return; if (quest[leaving_quest].type != QUEST_TYPE_TOWER) return; - quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED; + quest[QUEST_TOWER1].status = QuestStatusType::FAILED; quest[QUEST_TOWER1].complev = player_ptr->lev; update_playtime(); quest[QUEST_TOWER1].comptime = w_ptr->play_time; diff --git a/src/dungeon/quest.h b/src/dungeon/quest.h index b9340cc8a..e786e9789 100644 --- a/src/dungeon/quest.h +++ b/src/dungeon/quest.h @@ -10,18 +10,18 @@ #define MIN_RANDOM_QUEST 40 /*game_turn < player_ptr->feeling_turn + delay && !cheat_xtra) return; - int quest_num = quest_number(player_ptr, floor_ptr->dun_level); - if (quest_num + auto quest_num = quest_number(player_ptr, floor_ptr->dun_level); + if ((quest_num > 0) && (quest_type::is_fixed(quest_num) && !((quest_num == QUEST_OBERON) || (quest_num == QUEST_SERPENT) || !(quest[quest_num].flags & QUEST_FLAG_PRESET)))) return; diff --git a/src/floor/floor-leaver.cpp b/src/floor/floor-leaver.cpp index 56849d31b..b2ab0d541 100644 --- a/src/floor/floor-leaver.cpp +++ b/src/floor/floor-leaver.cpp @@ -249,7 +249,7 @@ static void preserve_info(player_type *player_ptr) { MONRACE_IDX quest_r_idx = 0; for (DUNGEON_IDX i = 0; i < max_q_idx; i++) { - if ((quest[i].status == QUEST_STATUS_TAKEN) && ((quest[i].type == QUEST_TYPE_KILL_LEVEL) || (quest[i].type == QUEST_TYPE_RANDOM)) + if ((quest[i].status == QuestStatusType::TAKEN) && ((quest[i].type == QUEST_TYPE_KILL_LEVEL) || (quest[i].type == QUEST_TYPE_RANDOM)) && (quest[i].level == player_ptr->current_floor_ptr->dun_level) && (player_ptr->dungeon_idx == quest[i].dungeon) && !(quest[i].flags & QUEST_FLAG_PRESET)) { quest_r_idx = quest[i].r_idx; diff --git a/src/floor/wild.cpp b/src/floor/wild.cpp index 6d04c2171..9b9daff08 100644 --- a/src/floor/wild.cpp +++ b/src/floor/wild.cpp @@ -542,8 +542,8 @@ void wilderness_gen(player_type *player_ptr) generate_encounter = false; set_floor_and_wall(0); for (int i = 0; i < max_q_idx; i++) - if (quest[i].status == QUEST_STATUS_REWARDED) - quest[i].status = QUEST_STATUS_FINISHED; + if (quest[i].status == QuestStatusType::REWARDED) + quest[i].status = QuestStatusType::FINISHED; } static int16_t conv_terrain2feat[MAX_WILDERNESS]; diff --git a/src/info-reader/fixed-map-parser.cpp b/src/info-reader/fixed-map-parser.cpp index cf51ae3f7..bcb31a809 100644 --- a/src/info-reader/fixed-map-parser.cpp +++ b/src/info-reader/fixed-map-parser.cpp @@ -198,7 +198,7 @@ static concptr parse_fixed_map_expression(player_type *player_ptr, char **sp, ch sprintf(tmp, "%d", quest[atoi(b + 11)].type); v = tmp; } else if (prefix(b + 1, "QUEST")) { - sprintf(tmp, "%d", quest[atoi(b + 6)].status); + sprintf(tmp, "%d", enum2i(quest[atoi(b + 6)].status)); v = tmp; } else if (prefix(b + 1, "RANDOM")) { sprintf(tmp, "%d", (int)(w_ptr->seed_town % atoi(b + 7))); diff --git a/src/knowledge/knowledge-quests.cpp b/src/knowledge/knowledge-quests.cpp index f11041773..10278f266 100644 --- a/src/knowledge/knowledge-quests.cpp +++ b/src/knowledge/knowledge-quests.cpp @@ -55,9 +55,9 @@ static void do_cmd_knowledge_quests_current(player_type *player_ptr, FILE *fff) fprintf(fff, _("《遂行中のクエスト》\n", "< Current Quest >\n")); for (QUEST_IDX i = 1; i < max_q_idx; i++) { - bool is_print = quest[i].status == QUEST_STATUS_TAKEN; - is_print |= (quest[i].status == QUEST_STATUS_STAGE_COMPLETED) && (quest[i].type == QUEST_TYPE_TOWER); - is_print |= quest[i].status == QUEST_STATUS_COMPLETED; + bool is_print = quest[i].status == QuestStatusType::TAKEN; + is_print |= (quest[i].status == QuestStatusType::STAGE_COMPLETED) && (quest[i].type == QUEST_TYPE_TOWER); + is_print |= quest[i].status == QuestStatusType::COMPLETED; if (!is_print) continue; @@ -77,7 +77,7 @@ static void do_cmd_knowledge_quests_current(player_type *player_ptr, FILE *fff) if (quest[i].type != QUEST_TYPE_RANDOM) { char note[512] = "\0"; - if (quest[i].status == QUEST_STATUS_TAKEN || quest[i].status == QUEST_STATUS_STAGE_COMPLETED) { + if (quest[i].status == QuestStatusType::TAKEN || quest[i].status == QuestStatusType::STAGE_COMPLETED) { switch (quest[i].type) { case QUEST_TYPE_KILL_LEVEL: case QUEST_TYPE_KILL_ANY_LEVEL: @@ -128,7 +128,7 @@ static void do_cmd_knowledge_quests_current(player_type *player_ptr, FILE *fff) sprintf(tmp_str, _(" %s (危険度:%d階相当)%s\n", " %s (Danger level: %d)%s\n"), quest[i].name, (int)quest[i].level, note); fputs(tmp_str, fff); - if (quest[i].status == QUEST_STATUS_COMPLETED) { + if (quest[i].status == QuestStatusType::COMPLETED) { sprintf(tmp_str, _(" クエスト達成 - まだ報酬を受けとってない。\n", " Quest Completed - Unrewarded\n")); fputs(tmp_str, fff); continue; @@ -229,7 +229,7 @@ void do_cmd_knowledge_quests_completed(player_type *player_ptr, FILE *fff, QUEST QUEST_IDX q_idx = quest_num[i]; quest_type *const q_ptr = &quest[q_idx]; - if (q_ptr->status == QUEST_STATUS_FINISHED && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) { + if (q_ptr->status == QuestStatusType::FINISHED && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) { ++total; } } @@ -252,7 +252,7 @@ void do_cmd_knowledge_quests_failed(player_type *player_ptr, FILE *fff, QUEST_ID QUEST_IDX q_idx = quest_num[i]; quest_type *const q_ptr = &quest[q_idx]; - if (((q_ptr->status == QUEST_STATUS_FAILED_DONE) || (q_ptr->status == QUEST_STATUS_FAILED)) && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) { + if (((q_ptr->status == QuestStatusType::FAILED_DONE) || (q_ptr->status == QuestStatusType::FAILED)) && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) { ++total; } } @@ -273,7 +273,7 @@ static void do_cmd_knowledge_quests_wiz_random(FILE *fff) if (quest[i].flags & QUEST_FLAG_SILENT) continue; - if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QUEST_STATUS_TAKEN)) { + if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QuestStatusType::TAKEN)) { total++; sprintf(tmp_str, _(" %s (%d階, %s)\n", " %s (%d, %s)\n"), quest[i].name, (int)quest[i].level, r_info[quest[i].r_idx].name.c_str()); fputs(tmp_str, fff); diff --git a/src/load/load.cpp b/src/load/load.cpp index 0899d4cfc..0f80b860f 100644 --- a/src/load/load.cpp +++ b/src/load/load.cpp @@ -71,7 +71,7 @@ static errr load_town_quest(player_type *player_ptr) /* Quest 18 was removed */ if (h_older_than(1, 7, 0, 6)) { quest[OLD_QUEST_WATER_CAVE] = {}; - quest[OLD_QUEST_WATER_CAVE].status = QUEST_STATUS_UNTAKEN; + quest[OLD_QUEST_WATER_CAVE].status = QuestStatusType::UNTAKEN; } load_wilderness_info(player_ptr); diff --git a/src/load/quest-loader.cpp b/src/load/quest-loader.cpp index 512753032..5c4f9dbdd 100644 --- a/src/load/quest-loader.cpp +++ b/src/load/quest-loader.cpp @@ -12,6 +12,7 @@ #include "system/floor-type-definition.h" #include "system/monster-race-definition.h" #include "system/player-type-definition.h" +#include "util/enum-converter.h" /*! * @brief ランダムクエスト情報の読み込み @@ -69,9 +70,10 @@ static bool check_quest_index(int loading_quest_index) static void load_quest_completion(quest_type *q_ptr) { - rd_s16b(&q_ptr->status); int16_t tmp16s; rd_s16b(&tmp16s); + q_ptr->status = i2enum(tmp16s); + rd_s16b(&tmp16s); q_ptr->level = tmp16s; if (h_older_than(1, 0, 6)) @@ -119,8 +121,8 @@ void analyze_quests(player_type *player_ptr, const uint16_t max_quests_load, con quest_type *const q_ptr = &quest[i]; load_quest_completion(q_ptr); - bool is_quest_running = (q_ptr->status == QUEST_STATUS_TAKEN); - is_quest_running |= (!h_older_than(0, 3, 14) && (q_ptr->status == QUEST_STATUS_COMPLETED)); + bool is_quest_running = (q_ptr->status == QuestStatusType::TAKEN); + is_quest_running |= (!h_older_than(0, 3, 14) && (q_ptr->status == QuestStatusType::COMPLETED)); is_quest_running |= (!h_older_than(1, 0, 7) && (i >= MIN_RANDOM_QUEST) && (i <= (MIN_RANDOM_QUEST + max_rquests_load))); if (!is_quest_running) continue; @@ -134,7 +136,7 @@ void analyze_quests(player_type *player_ptr, const uint16_t max_quests_load, con q_ptr->dungeon = tmp8u; } - if (q_ptr->status == QUEST_STATUS_TAKEN || q_ptr->status == QUEST_STATUS_UNTAKEN) + if (q_ptr->status == QuestStatusType::TAKEN || q_ptr->status == QuestStatusType::UNTAKEN) if (r_info[q_ptr->r_idx].flags1 & RF1_UNIQUE) r_info[q_ptr->r_idx].flags1 |= RF1_QUESTOR; } diff --git a/src/main/game-data-initializer.cpp b/src/main/game-data-initializer.cpp index 3c994b057..281b10809 100644 --- a/src/main/game-data-initializer.cpp +++ b/src/main/game-data-initializer.cpp @@ -42,7 +42,7 @@ void init_quests(void) { quest.assign(max_q_idx, {}); for (auto &q_ref : quest) { - q_ref.status = QUEST_STATUS_UNTAKEN; + q_ref.status = QuestStatusType::UNTAKEN; } } diff --git a/src/market/building-quest.cpp b/src/market/building-quest.cpp index ace4a2fea..a6ccdb239 100644 --- a/src/market/building-quest.cpp +++ b/src/market/building-quest.cpp @@ -77,14 +77,14 @@ void castle_quest(player_type *player_ptr) quest_type *q_ptr; q_ptr = &quest[q_index]; - if (q_ptr->status == QUEST_STATUS_COMPLETED) { - q_ptr->status = QUEST_STATUS_REWARDED; + if (q_ptr->status == QuestStatusType::COMPLETED) { + q_ptr->status = QuestStatusType::REWARDED; print_questinfo(player_ptr, q_index, false); reinit_wilderness = true; return; } - if (q_ptr->status == QUEST_STATUS_TAKEN) { + if (q_ptr->status == QuestStatusType::TAKEN) { put_str(_("あなたは現在のクエストを終了させていません!", "You have not completed your current quest yet!"), 8, 0); put_str(_("CTRL-Qを使えばクエストの状態がチェックできます。", "Use CTRL-Q to check the status of your quest."), 9, 0); @@ -104,20 +104,20 @@ void castle_quest(player_type *player_ptr) clear_bldg(4, 18); msg_print(_("放棄しました。", "You gave up.")); msg_print(nullptr); - record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_FAILED); + record_quest_final_status(q_ptr, player_ptr->lev, QuestStatusType::FAILED); } - if (q_ptr->status == QUEST_STATUS_FAILED) { + if (q_ptr->status == QuestStatusType::FAILED) { print_questinfo(player_ptr, q_index, false); - q_ptr->status = QUEST_STATUS_FAILED_DONE; + q_ptr->status = QuestStatusType::FAILED_DONE; reinit_wilderness = true; return; } - if (q_ptr->status != QUEST_STATUS_UNTAKEN) + if (q_ptr->status != QuestStatusType::UNTAKEN) return; - q_ptr->status = QUEST_STATUS_TAKEN; + q_ptr->status = QuestStatusType::TAKEN; reinit_wilderness = true; if (q_ptr->type != QUEST_TYPE_KILL_ANY_LEVEL) { print_questinfo(player_ptr, q_index, true); diff --git a/src/save/save.cpp b/src/save/save.cpp index edcc8e181..3381fcc15 100644 --- a/src/save/save.cpp +++ b/src/save/save.cpp @@ -125,13 +125,13 @@ static bool wr_savefile_new(player_type *player_ptr, save_type type) for (short i = 0; i < max_q_idx; i++) { auto *const q_ptr = &quest[i]; - wr_s16b(q_ptr->status); + wr_s16b(enum2i(q_ptr->status)); wr_s16b((int16_t)q_ptr->level); wr_byte((byte)q_ptr->complev); wr_u32b(q_ptr->comptime); - bool is_quest_running = q_ptr->status == QUEST_STATUS_TAKEN; - is_quest_running |= q_ptr->status == QUEST_STATUS_COMPLETED; + bool is_quest_running = q_ptr->status == QuestStatusType::TAKEN; + is_quest_running |= q_ptr->status == QuestStatusType::COMPLETED; is_quest_running |= !quest_type::is_fixed(i); if (!is_quest_running) continue; diff --git a/src/spell-kind/spells-world.cpp b/src/spell-kind/spells-world.cpp index 44a2bdbb1..341df46e5 100644 --- a/src/spell-kind/spells-world.cpp +++ b/src/spell-kind/spells-world.cpp @@ -398,9 +398,9 @@ bool free_level_recall(player_type *player_ptr) DEPTH max_depth = d_info[select_dungeon].maxdepth; if (select_dungeon == DUNGEON_ANGBAND) { - if (quest[QUEST_OBERON].status != QUEST_STATUS_FINISHED) + if (quest[QUEST_OBERON].status != QuestStatusType::FINISHED) max_depth = 98; - else if (quest[QUEST_SERPENT].status != QUEST_STATUS_FINISHED) + else if (quest[QUEST_SERPENT].status != QuestStatusType::FINISHED) max_depth = 99; } diff --git a/src/wizard/wizard-game-modifier.cpp b/src/wizard/wizard-game-modifier.cpp index 9e793ba50..30a2e8039 100644 --- a/src/wizard/wizard-game-modifier.cpp +++ b/src/wizard/wizard-game-modifier.cpp @@ -119,7 +119,7 @@ void wiz_enter_quest(player_type* player_ptr) init_flags = i2enum(INIT_SHOW_TEXT | INIT_ASSIGN); player_ptr->current_floor_ptr->inside_quest = (QUEST_IDX)tmp_int; parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0); - quest[tmp_int].status = QUEST_STATUS_TAKEN; + quest[tmp_int].status = QuestStatusType::TAKEN; if (quest[tmp_int].dungeon == 0) exe_enter_quest(player_ptr, (QUEST_IDX)tmp_int); } @@ -136,7 +136,7 @@ void wiz_complete_quest(player_type *player_ptr) return; } - if (quest[player_ptr->current_floor_ptr->inside_quest].status == QUEST_STATUS_TAKEN) + if (quest[player_ptr->current_floor_ptr->inside_quest].status == QuestStatusType::TAKEN) complete_quest(player_ptr, player_ptr->current_floor_ptr->inside_quest); } diff --git a/src/world/world-movement-processor.cpp b/src/world/world-movement-processor.cpp index e8fbb6424..fbffb6bce 100644 --- a/src/world/world-movement-processor.cpp +++ b/src/world/world-movement-processor.cpp @@ -31,8 +31,8 @@ void check_random_quest_auto_failure(player_type *player_ptr) } for (auto i = MIN_RANDOM_QUEST; i < MAX_RANDOM_QUEST + 1; i++) { auto q_ptr = &quest[i]; - if ((q_ptr->type == QUEST_TYPE_RANDOM) && (q_ptr->status == QUEST_STATUS_TAKEN) && (q_ptr->level < player_ptr->current_floor_ptr->dun_level)) { - q_ptr->status = QUEST_STATUS_FAILED; + if ((q_ptr->type == QUEST_TYPE_RANDOM) && (q_ptr->status == QuestStatusType::TAKEN) && (q_ptr->level < player_ptr->current_floor_ptr->dun_level)) { + q_ptr->status = QuestStatusType::FAILED; q_ptr->complev = (byte)player_ptr->lev; update_playtime(); q_ptr->comptime = w_ptr->play_time; -- 2.11.0