From: Hourier Date: Sun, 22 Mar 2020 08:47:06 +0000 (+0900) Subject: [Refactor] #40236 Separated cmd-diary.c/h from cmd-dump.c/h X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d5f6de725e966fead17bcd8d7f578fc1a747a431;p=hengband%2Fhengband.git [Refactor] #40236 Separated cmd-diary.c/h from cmd-dump.c/h --- diff --git a/Hengband_vcs2017/Hengband/Hengband.vcxproj b/Hengband_vcs2017/Hengband/Hengband.vcxproj index ecae13fa5..de9973fb7 100644 --- a/Hengband_vcs2017/Hengband/Hengband.vcxproj +++ b/Hengband_vcs2017/Hengband/Hengband.vcxproj @@ -158,6 +158,7 @@ + @@ -337,6 +338,7 @@ + diff --git a/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters b/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters index 3b2abc95b..69b3d928e 100644 --- a/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters +++ b/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters @@ -526,6 +526,9 @@ cmd + + cmd + @@ -1034,6 +1037,9 @@ cmd + + cmd + diff --git a/src/Makefile.am b/src/Makefile.am index e5919bcc3..5702e9485 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -137,11 +137,11 @@ hengband_SOURCES = \ cmd/diary-subtitle-table.c cmd/diary-subtitle-table.h \ cmd/object-group-table.c cmd/object-group-table.h \ cmd/cmd-activate.c cmd/cmd-activate.h cmd/cmd-basic.c cmd/cmd-basic.h \ - cmd/cmd-dump.c cmd/cmd-dump.h cmd/cmd-eat.c cmd/cmd-eat.h \ - cmd/cmd-gameoption.c cmd/cmd-gameoption.h cmd/cmd-help.c cmd/cmd-help.h \ - cmd/cmd-hissatsu.c cmd/cmd-hissatsu.h cmd/cmd-item.c cmd/cmd-item.h \ - cmd/cmd-magiceat.c cmd/cmd-magiceat.h cmd/cmd-mane.c cmd/cmd-mane.h \ - cmd/cmd-macro.c cmd/cmd-macro.h \ + cmd/cmd-dump.c cmd/cmd-dump.h cmd/cmd-diary.c cmd/cmd-diary.h \ + cmd/cmd-eat.c cmd/cmd-eat.h cmd/cmd-gameoption.c cmd/cmd-gameoption.h \ + cmd/cmd-help.c cmd/cmd-help.h cmd/cmd-hissatsu.c cmd/cmd-hissatsu.h \ + cmd/cmd-item.c cmd/cmd-item.h cmd/cmd-magiceat.c cmd/cmd-magiceat.h \ + cmd/cmd-mane.c cmd/cmd-mane.h cmd/cmd-macro.c cmd/cmd-macro.h \ cmd/cmd-pet.c cmd/cmd-pet.h cmd/cmd-quaff.c cmd/cmd-quaff.h \ cmd/cmd-read.c cmd/cmd-read.h cmd/cmd-save.c cmd/cmd-save.h \ cmd/cmd-smith.c cmd/cmd-smith.h cmd/cmd-spell.c cmd/cmd-spell.h \ diff --git a/src/cmd/cmd-diary.c b/src/cmd/cmd-diary.c new file mode 100644 index 000000000..06a04e390 --- /dev/null +++ b/src/cmd/cmd-diary.c @@ -0,0 +1,155 @@ +#include "angband.h" +#include "cmd/cmd-diary.h" +#include "chuukei.h" +#include "core/show-file.h" +#include "files.h" +#include "cmd/diary-subtitle-table.h" +#include "player-personality.h" +#include "io/write-diary.h" +#include "world.h" + +/*! + * @brief 日記のタイトル表記と内容出力 + * @param creature_ptr プレーヤーへの参照ポインタ + * @return なし + */ +static void display_diary(player_type *creature_ptr) +{ + char diary_title[256]; + GAME_TEXT file_name[MAX_NLEN]; + char buf[1024]; + char tmp[80]; + sprintf(file_name, _("playrecord-%s.txt", "playrec-%s.txt"), savefile_base); + path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name); + + if (creature_ptr->pclass == CLASS_WARRIOR || creature_ptr->pclass == CLASS_MONK || creature_ptr->pclass == CLASS_SAMURAI || creature_ptr->pclass == CLASS_BERSERKER) + strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 1)]); + else if (IS_WIZARD_CLASS(creature_ptr)) + strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 1) + 1]); + else strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 2) + 1]); + +#ifdef JP + sprintf(diary_title, "「%s%s%sの伝説 -%s-」", ap_ptr->title, ap_ptr->no ? "の" : "", creature_ptr->name, tmp); +#else + sprintf(diary_title, "Legend of %s %s '%s'", ap_ptr->title, creature_ptr->name, tmp); +#endif + + (void)show_file(creature_ptr, FALSE, buf, diary_title, -1, 0); +} + + +/*! + * @brief 日記に任意の内容を表記するコマンドのメインルーチン / + * @return なし + */ +static void add_diary_note(player_type *creature_ptr) +{ + char tmp[80] = "\0"; + char bunshou[80] = "\0"; + if (get_string(_("内容: ", "diary note: "), tmp, 79)) + { + strcpy(bunshou, tmp); + exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 0, bunshou); + } +} + +/*! + * @brief 最後に取得したアイテムの情報を日記に追加するメインルーチン / + * @return なし + */ +static void do_cmd_last_get(player_type *creaute_ptr) +{ + if (record_o_name[0] == '\0') return; + + char buf[256]; + sprintf(buf, _("%sの入手を記録します。", "Do you really want to record getting %s? "), record_o_name); + if (!get_check(buf)) return; + + GAME_TURN turn_tmp = current_world_ptr->game_turn; + current_world_ptr->game_turn = record_turn; + sprintf(buf, _("%sを手に入れた。", "discover %s."), record_o_name); + exe_write_diary(creaute_ptr, DIARY_DESCRIPTION, 0, buf); + current_world_ptr->game_turn = turn_tmp; +} + + +/*! + * @brief ファイル中の全日記記録を消去する / + * @return なし + */ +static void do_cmd_erase_diary(void) +{ + GAME_TEXT file_name[MAX_NLEN]; + char buf[256]; + FILE *fff = NULL; + + if (!get_check(_("本当に記録を消去しますか?", "Do you really want to delete all your record? "))) return; + sprintf(file_name, _("playrecord-%s.txt", "playrec-%s.txt"), savefile_base); + path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name); + fd_kill(buf); + + fff = my_fopen(buf, "w"); + if (fff) + { + my_fclose(fff); + msg_format(_("記録を消去しました。", "deleted record.")); + } + else + { + msg_format(_("%s の消去に失敗しました。", "failed to delete %s."), buf); + } + + msg_print(NULL); +} + + +/*! + * @brief 日記コマンド + * @param crerature_ptr プレーヤーへの参照ポインタ + * @return なし + */ +void do_cmd_diary(player_type *creature_ptr) +{ + FILE_TYPE(FILE_TYPE_TEXT); + screen_save(); + int i; + while (TRUE) + { + Term_clear(); + prt(_("[ 記録の設定 ]", "[ Play Record ]"), 2, 0); + prt(_("(1) 記録を見る", "(1) Display your record"), 4, 5); + prt(_("(2) 文章を記録する", "(2) Add record"), 5, 5); + prt(_("(3) 直前に入手又は鑑定したものを記録する", "(3) Record the last item you got or identified"), 6, 5); + prt(_("(4) 記録を消去する", "(4) Delete your record"), 7, 5); + prt(_("(R) プレイ動画を記録する/中止する", "(R) Record playing movie / or stop it"), 9, 5); + prt(_("コマンド:", "Command: "), 18, 0); + i = inkey(); + if (i == ESCAPE) break; + + switch (i) + { + case '1': + display_diary(creature_ptr); + break; + case '2': + add_diary_note(creature_ptr); + break; + case '3': + do_cmd_last_get(creature_ptr); + break; + case '4': + do_cmd_erase_diary(); + break; + case 'r': case 'R': + screen_load(); + prepare_movie_hooks(); + return; + default: + bell(); + } + + msg_erase(); + } + + screen_load(); +} diff --git a/src/cmd/cmd-diary.h b/src/cmd/cmd-diary.h new file mode 100644 index 000000000..98dcbdc8a --- /dev/null +++ b/src/cmd/cmd-diary.h @@ -0,0 +1,3 @@ +#pragma once + +void do_cmd_diary(player_type *creature_ptr); diff --git a/src/cmd/cmd-dump.c b/src/cmd/cmd-dump.c index 306201cba..19667de48 100644 --- a/src/cmd/cmd-dump.c +++ b/src/cmd/cmd-dump.c @@ -31,24 +31,19 @@ */ #include "angband.h" -#include "cmd-dump.h" +#include "cmd/cmd-dump.h" #include "term.h" -#include "core.h" +#include "core.h" // 暫定。後で消す. #include "core/show-file.h" #include "io/read-pref-file.h" -#include "io/write-diary.h" -#include "chuukei.h" - +#include "io/interpret-pref-file.h" #include "autopick.h" - -#include "inet.h" #include "birth.h" #include "dungeon.h" #include "world.h" -#include "view/display-player.h" +#include "view/display-player.h" // 暫定。後で消す. #include "player/process-name.h" #include "player-effects.h" -#include "player-status.h" #include "player-skill.h" #include "player-personality.h" #include "sort.h" @@ -59,21 +54,15 @@ #include "avatar.h" #include "object-flavor.h" #include "object-hook.h" -#include "monster.h" #include "monster-status.h" #include "view-mainwindow.h" #include "dungeon-file.h" -#include "io/interpret-pref-file.h" -#include "files.h" -#include "spells.h" #include "objectkind.h" #include "floor-town.h" #include "cmd/feeling-table.h" #include "cmd/monster-group-table.h" -#include "cmd/diary-subtitle-table.h" #include "cmd/object-group-table.h" #include "view-mainwindow.h" // 暫定。後で消す - #include "english.h" static void do_cmd_knowledge_monsters(player_type *creature_ptr, bool *need_redraw, bool visual_only, IDX direct_r_idx); @@ -91,153 +80,6 @@ static SYMBOL_CODE char_idx_feat[F_LIT_MAX]; static char hack[17] = "dwsorgbuDWvyRGBU"; /*! - * @brief 日記のタイトル表記と内容出力 - * @param creature_ptr プレーヤーへの参照ポインタ - * @return なし - */ -static void display_diary(player_type *creature_ptr) -{ - char diary_title[256]; - GAME_TEXT file_name[MAX_NLEN]; - char buf[1024]; - char tmp[80]; - sprintf(file_name, _("playrecord-%s.txt", "playrec-%s.txt"), savefile_base); - path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name); - - if (creature_ptr->pclass == CLASS_WARRIOR || creature_ptr->pclass == CLASS_MONK || creature_ptr->pclass == CLASS_SAMURAI || creature_ptr->pclass == CLASS_BERSERKER) - strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 1)]); - else if (IS_WIZARD_CLASS(creature_ptr)) - strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 1) + 1]); - else strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 2) + 1]); - -#ifdef JP - sprintf(diary_title, "「%s%s%sの伝説 -%s-」", ap_ptr->title, ap_ptr->no ? "の" : "", creature_ptr->name, tmp); -#else - sprintf(diary_title, "Legend of %s %s '%s'", ap_ptr->title, creature_ptr->name, tmp); -#endif - - (void)show_file(creature_ptr, FALSE, buf, diary_title, -1, 0); -} - - -/*! - * @brief 日記に任意の内容を表記するコマンドのメインルーチン / - * @return なし - */ -static void add_diary_note(player_type *creature_ptr) -{ - char tmp[80] = "\0"; - char bunshou[80] = "\0"; - if (get_string(_("内容: ", "diary note: "), tmp, 79)) - { - strcpy(bunshou, tmp); - exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 0, bunshou); - } -} - -/*! - * @brief 最後に取得したアイテムの情報を日記に追加するメインルーチン / - * @return なし - */ -static void do_cmd_last_get(player_type *creaute_ptr) -{ - if (record_o_name[0] == '\0') return; - - char buf[256]; - sprintf(buf, _("%sの入手を記録します。", "Do you really want to record getting %s? "), record_o_name); - if (!get_check(buf)) return; - - GAME_TURN turn_tmp = current_world_ptr->game_turn; - current_world_ptr->game_turn = record_turn; - sprintf(buf, _("%sを手に入れた。", "discover %s."), record_o_name); - exe_write_diary(creaute_ptr, DIARY_DESCRIPTION, 0, buf); - current_world_ptr->game_turn = turn_tmp; -} - - -/*! - * @brief ファイル中の全日記記録を消去する / - * @return なし - */ -static void do_cmd_erase_diary(void) -{ - GAME_TEXT file_name[MAX_NLEN]; - char buf[256]; - FILE *fff = NULL; - - if (!get_check(_("本当に記録を消去しますか?", "Do you really want to delete all your record? "))) return; - sprintf(file_name, _("playrecord-%s.txt", "playrec-%s.txt"), savefile_base); - path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name); - fd_kill(buf); - - fff = my_fopen(buf, "w"); - if (fff) - { - my_fclose(fff); - msg_format(_("記録を消去しました。", "deleted record.")); - } - else - { - msg_format(_("%s の消去に失敗しました。", "failed to delete %s."), buf); - } - - msg_print(NULL); -} - - -/*! - * @brief 日記コマンド - * @param crerature_ptr プレーヤーへの参照ポインタ - * @return なし - */ -void do_cmd_diary(player_type *creature_ptr) -{ - FILE_TYPE(FILE_TYPE_TEXT); - screen_save(); - int i; - while (TRUE) - { - Term_clear(); - prt(_("[ 記録の設定 ]", "[ Play Record ]"), 2, 0); - prt(_("(1) 記録を見る", "(1) Display your record"), 4, 5); - prt(_("(2) 文章を記録する", "(2) Add record"), 5, 5); - prt(_("(3) 直前に入手又は鑑定したものを記録する", "(3) Record the last item you got or identified"), 6, 5); - prt(_("(4) 記録を消去する", "(4) Delete your record"), 7, 5); - prt(_("(R) プレイ動画を記録する/中止する", "(R) Record playing movie / or stop it"), 9, 5); - prt(_("コマンド:", "Command: "), 18, 0); - i = inkey(); - if (i == ESCAPE) break; - - switch (i) - { - case '1': - display_diary(creature_ptr); - break; - case '2': - add_diary_note(creature_ptr); - break; - case '3': - do_cmd_last_get(creature_ptr); - break; - case '4': - do_cmd_erase_diary(); - break; - case 'r': case 'R': - screen_load(); - prepare_movie_hooks(); - return; - default: - bell(); - } - - msg_erase(); - } - - screen_load(); -} - - -/*! * @brief 画面を再描画するコマンドのメインルーチン * Hack -- redraw the screen * @param creature_ptr プレーヤーへの参照ポインタ diff --git a/src/cmd/cmd-dump.h b/src/cmd/cmd-dump.h index 0f4d1179b..51d1ce498 100644 --- a/src/cmd/cmd-dump.h +++ b/src/cmd/cmd-dump.h @@ -1,6 +1,5 @@ #pragma once -extern void do_cmd_diary(player_type *creature_ptr); extern void do_cmd_redraw(player_type *creature_ptr); extern void do_cmd_player_status(player_type *creature_ptr); extern void do_cmd_message_one(void); diff --git a/src/core.c b/src/core.c index 48e780449..84a2b0ed6 100644 --- a/src/core.c +++ b/src/core.c @@ -24,6 +24,7 @@ #include "bldg.h" #include "io/write-diary.h" #include "cmd/cmd-activate.h" +#include "cmd/cmd-diary.h" #include "cmd/cmd-dump.h" #include "cmd/cmd-eat.h" #include "cmd/cmd-help.h" diff --git a/src/store.c b/src/store.c index a0856067e..0bfdd38ac 100644 --- a/src/store.c +++ b/src/store.c @@ -18,6 +18,7 @@ #include "floor.h" #include "io/write-diary.h" #include "cmd/cmd-basic.h" +#include "cmd/cmd-diary.h" #include "cmd/cmd-dump.h" #include "cmd/cmd-help.h" #include "cmd/cmd-item.h"