OSDN Git Service

Merge pull request #3279 from habu1010/feature/display-etc-screen-on-center
[hengbandforosx/hengbandosx.git] / src / cmd-io / cmd-diary.cpp
index 6005221..09bfe2d 100644 (file)
@@ -11,6 +11,7 @@
 #include "player-base/player-class.h"
 #include "player/player-personality.h"
 #include "system/player-type-definition.h"
+#include "term/gameterm.h"
 #include "term/screen-processor.h"
 #include "term/z-form.h"
 #include "util/angband-files.h"
  */
 static void display_diary(PlayerType *player_ptr)
 {
-    std::stringstream file_name;
-    file_name << _("playrecord-", "playrec-") << savefile_base << ".txt";
-    char buf[1024];
-    path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name.str().data());
-
     PlayerClass pc(player_ptr);
     const auto max_subtitles = diary_subtitles.size();
     std::string subtitle;
@@ -49,7 +45,11 @@ static void display_diary(PlayerType *player_ptr)
     strnfmt(diary_title, sizeof(diary_title), "Legend of %s %s '%s'", ap_ptr->title, player_ptr->name, subtitle.data());
 #endif
 
-    (void)show_file(player_ptr, false, buf, diary_title, -1, 0);
+    std::stringstream ss;
+    ss << _("playrecord-", "playrec-") << savefile_base << ".txt";
+    const auto &path = path_build(ANGBAND_DIR_USER, ss.str());
+    const auto &filename = path.string();
+    (void)show_file(player_ptr, false, filename.data(), diary_title, -1, 0);
 }
 
 /*!
@@ -90,25 +90,24 @@ static void do_cmd_last_get(PlayerType *player_ptr)
 /*!
  * @brief ファイル中の全日記記録を消去する /
  */
-static void do_cmd_erase_diary(void)
+static void do_cmd_erase_diary()
 {
-    char buf[256];
-    FILE *fff = nullptr;
-
     if (!get_check(_("本当に記録を消去しますか?", "Do you really want to delete all your records? "))) {
         return;
     }
-    std::string file_name = _("playrecord-", "playrec-");
-    file_name.append(savefile_base).append(".txt");
-    path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name.data());
-    fd_kill(buf);
 
-    fff = angband_fopen(buf, FileOpenMode::WRITE);
+    std::stringstream ss;
+    ss << _("playrecord-", "playrec-") << savefile_base << ".txt";
+    const auto &path = path_build(ANGBAND_DIR_USER, ss.str());
+    const auto &filename = path.string();
+    fd_kill(filename);
+
+    auto *fff = angband_fopen(path, FileOpenMode::WRITE);
     if (fff) {
         angband_fclose(fff);
         msg_format(_("記録を消去しました。", "deleted record."));
     } else {
-        msg_format(_("%s の消去に失敗しました。", "failed to delete %s."), buf);
+        msg_format(_("%s の消去に失敗しました。", "failed to delete %s."), filename.data());
     }
 
     msg_print(nullptr);
@@ -121,6 +120,8 @@ static void do_cmd_erase_diary(void)
 void do_cmd_diary(PlayerType *player_ptr)
 {
     screen_save();
+    TermCenteredOffsetSetter tcos(MAIN_TERM_MIN_COLS, MAIN_TERM_MIN_ROWS);
+
     while (true) {
         term_clear();
         prt(_("[ 記録の設定 ]", "[ Play Record ]"), 2, 0);