#include "io/uid-checker.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
+#include "system/angband-exceptions.h"
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
#include "term/screen-processor.h"
* Allow the "full" flag to dump additional info,
* and trigger its usage from various places in the code.
*/
-errr file_character(PlayerType *player_ptr, concptr name)
+void file_character(PlayerType *player_ptr, std::string_view filename)
{
- const auto &path = path_build(ANGBAND_DIR_USER, name);
+ const auto &path = path_build(ANGBAND_DIR_USER, filename);
auto fd = fd_open(path, O_RDONLY);
if (fd >= 0) {
const auto &filename = path.string();
}
if (!fff) {
- prt(_("キャラクタ情報のファイルへの書き出しに失敗しました!", "Character dump failed!"), 0, 0);
- (void)inkey();
- return -1;
+ THROW_EXCEPTION(std::runtime_error, _("キャラクタ情報のファイルへの書き出しに失敗しました!", "Character dump failed!"));
}
screen_save();
angband_fclose(fff);
msg_print(_("キャラクタ情報のファイルへの書き出しに成功しました。", "Character dump successful."));
msg_print(nullptr);
- return 0;
}
/*!
#include <filesystem>
#include <optional>
#include <string>
+#include <string_view>
extern std::filesystem::path savefile; //!< セーブファイルのフルパス
extern std::string savefile_base; //!< セーブファイル名
class PlayerType;
typedef void (*update_playtime_pf)(void);
-errr file_character(PlayerType *player_ptr, concptr name);
+void file_character(PlayerType *player_ptr, std::string_view filename);
std::optional<std::string> get_random_line(concptr file_name, int entry);
void read_dead_file();
}
screen_save();
- (void)file_character(player_ptr, out_val);
+ file_character(player_ptr, out_val);
screen_load();
}
}
struct tm *now_tm = localtime(&now_t);
char datetime[32];
- char filename[128];
-
strftime(datetime, sizeof(datetime), "%Y-%m-%d_%H%M%S", now_tm);
- strnfmt(filename, sizeof(filename), "%s_Autodump_%s.txt", p_ptr->name, datetime);
-
screen_save();
- (void)file_character(player_ptr, filename);
+ const auto filename = format("%s_Autodump_%s.txt", player_ptr->name, datetime);
+ file_character(player_ptr, filename);
screen_load();
}