OSDN Git Service

[Refactor] #3779 update_playtime() をAngbandWorld のオブジェクトメソッドへ繰り込んだ
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 9 Dec 2023 03:01:46 +0000 (12:01 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 9 Dec 2023 13:03:52 +0000 (22:03 +0900)
src/cmd-io/cmd-autopick.cpp
src/cmd-visual/cmd-draw.cpp
src/core/game-closer.cpp
src/dungeon/quest.cpp
src/knowledge/knowledge-self.cpp
src/monster-floor/monster-death.cpp
src/save/save.cpp
src/window/display-sub-windows.cpp
src/world/world-movement-processor.cpp
src/world/world.cpp
src/world/world.h

index cc7014f..032881c 100644 (file)
@@ -137,7 +137,7 @@ void do_cmd_edit_autopick(PlayerType *player_ptr)
         old_autosave_turn = w_ptr->game_turn;
     }
 
-    update_playtime();
+    w_ptr->update_playtime();
     init_autopick();
     if (autopick_last_destroyed_object.is_valid()) {
         autopick_entry_from_object(player_ptr, entry, &autopick_last_destroyed_object);
index f94da2f..f0b35ef 100644 (file)
@@ -78,7 +78,7 @@ void do_cmd_redraw(PlayerType *player_ptr)
         SubWindowRedrawingFlag::ITEM_KNOWLEDGE,
     };
     rfu.set_flags(flags_swrf);
-    update_playtime();
+    w_ptr->update_playtime();
     handle_stuff(player_ptr);
     if (PlayerRace(player_ptr).equals(PlayerRaceType::ANDROID)) {
         calc_android_exp(player_ptr);
@@ -114,7 +114,7 @@ static std::optional<int> input_status_command(PlayerType *player_ptr, int page)
 
         const auto &filename = str_ltrim(*input_filename);
         if (!filename.empty()) {
-            update_playtime();
+            w_ptr->update_playtime();
             file_character(player_ptr, filename);
         }
 
@@ -141,7 +141,7 @@ void do_cmd_player_status(PlayerType *player_ptr)
     while (true) {
         TermCenteredOffsetSetter tcos(MAIN_TERM_MIN_COLS, MAIN_TERM_MIN_ROWS);
 
-        update_playtime();
+        w_ptr->update_playtime();
         (void)display_player(player_ptr, page);
         if (page == 5) {
             page = 0;
index f4b9bd9..aada48a 100644 (file)
@@ -168,7 +168,7 @@ void close_game(PlayerType *player_ptr)
 
     auto do_send = true;
     if (!cheat_save || input_check(_("死んだデータをセーブしますか? ", "Save death? "))) {
-        update_playtime();
+        w_ptr->update_playtime();
         w_ptr->sf_play_time += w_ptr->play_time;
 
         if (!save_player(player_ptr, SaveType::CLOSE_GAME)) {
index f93c0a3..5d2c7f3 100644 (file)
@@ -241,7 +241,7 @@ void record_quest_final_status(QuestType *q_ptr, PLAYER_LEVEL lev, QuestStatusTy
 {
     q_ptr->status = stat;
     q_ptr->complev = lev;
-    update_playtime();
+    w_ptr->update_playtime();
     q_ptr->comptime = w_ptr->play_time;
 }
 
@@ -410,7 +410,7 @@ void leave_tower_check(PlayerType *player_ptr)
     }
     tower1.status = QuestStatusType::FAILED;
     tower1.complev = player_ptr->lev;
-    update_playtime();
+    w_ptr->update_playtime();
     tower1.comptime = w_ptr->play_time;
 }
 
index fc1810f..d40560f 100644 (file)
@@ -148,7 +148,7 @@ void do_cmd_knowledge_stat(PlayerType *player_ptr)
         return;
     }
 
-    update_playtime();
+    w_ptr->update_playtime();
     uint32_t play_time = w_ptr->play_time;
     uint32_t all_time = w_ptr->sf_play_time + play_time;
     fprintf(fff, _("現在のプレイ時間 : %d:%02d:%02d\n", "Current Play Time is %d:%02d:%02d\n"), play_time / (60 * 60), (play_time / 60) % 60, play_time % 60);
index b881408..5398824 100644 (file)
@@ -385,7 +385,7 @@ void monster_death(PlayerType *player_ptr, MONSTER_IDX m_idx, bool drop_item, At
 
     // プレイヤーしかユニークを倒せないのでここで時間を記録
     if (md_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE) && md_ptr->m_ptr->mflag2.has_not(MonsterConstantFlagType::CLONED)) {
-        update_playtime();
+        w_ptr->update_playtime();
         md_ptr->r_ptr->defeat_time = w_ptr->play_time;
         md_ptr->r_ptr->defeat_level = player_ptr->lev;
     }
index 1e6cd34..f4ff5ee 100644 (file)
@@ -317,8 +317,8 @@ bool save_player(PlayerType *player_ptr, SaveType type)
         std::filesystem::create_directory(debug_save_dir, ec);
     }
     safe_setuid_drop();
-    update_playtime();
-    bool result = false;
+    w_ptr->update_playtime();
+    auto result = false;
     if (save_player_aux(player_ptr, savefile_new.data(), type)) {
         std::stringstream ss_old;
         ss_old << savefile.string() << ".old";
index 90a202d..5d544a0 100644 (file)
@@ -392,7 +392,7 @@ void fix_equip(PlayerType *player_ptr)
  */
 void fix_player(PlayerType *player_ptr)
 {
-    update_playtime();
+    w_ptr->update_playtime();
     display_sub_windows(SubWindowRedrawingFlag::PLAYER,
         [player_ptr] {
             display_player(player_ptr, 0);
index 041693b..561e3f6 100644 (file)
@@ -43,7 +43,7 @@ void check_random_quest_auto_failure(PlayerType *player_ptr)
 
         quest.status = QuestStatusType::FAILED;
         quest.complev = (byte)player_ptr->lev;
-        update_playtime();
+        w_ptr->update_playtime();
         quest.comptime = w_ptr->play_time;
         monraces_info[quest.r_idx].flags1 &= ~(RF1_QUESTOR);
     }
index abf1b67..ab36769 100644 (file)
@@ -64,13 +64,15 @@ std::tuple<int, int, int> AngbandWorld::extract_date_time(PlayerRaceType start_r
 /*!
  * @brief 実ゲームプレイ時間を更新する
  */
-void update_playtime(void)
+void AngbandWorld::update_playtime()
 {
-    if (w_ptr->start_time != 0) {
-        uint32_t tmp = (uint32_t)time(nullptr);
-        w_ptr->play_time += (tmp - w_ptr->start_time);
-        w_ptr->start_time = tmp;
+    if (this->start_time == 0) {
+        return;
     }
+
+    const auto current_time = static_cast<uint32_t>(time(nullptr));
+    this->play_time += (current_time - this->start_time);
+    this->start_time = current_time;
 }
 
 /*!
index 8730672..5a530f3 100644 (file)
@@ -76,6 +76,7 @@ public:
     bool get_arena() const;
     std::tuple<int, int, int> extract_date_time(PlayerRaceType start_race) const;
     bool is_daytime() const;
+    void update_playtime();
 
 private:
     bool is_out_arena = false; // アリーナ外部にいる時だけtrue.
@@ -83,8 +84,6 @@ private:
 
 extern AngbandWorld *w_ptr;
 
-class PlayerType;
-void update_playtime(void);
 void add_winner_class(PlayerClassType c);
 void add_retired_class(PlayerClassType c);
 bool is_winner_class(PlayerClassType c);