From 3cb9fa5c472540eeeb456a648d9704e41b1a61fe Mon Sep 17 00:00:00 2001 From: Hourier Date: Wed, 26 Feb 2020 22:40:24 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#39962=20display-player.c=20?= =?utf8?q?=E3=81=8B=E3=82=89view-mainwindow.h=20=E3=81=B8=E3=81=AE?= =?utf8?q?=E5=8F=82=E7=85=A7=E3=82=92=E9=99=A4=E5=8E=BB=20/=20Removed=20re?= =?utf8?q?ference=20from=20display-player.c=20to=20view-mainwindow.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/birth.c | 6 +++--- src/character-dump.c | 14 +++++++------- src/character-dump.h | 3 ++- src/cmd/cmd-dump.c | 8 ++++---- src/core.c | 6 +++--- src/files.c | 4 ++-- src/files.h | 5 +++-- src/player/process-death.c | 11 +++++------ src/player/process-death.h | 3 ++- src/report.c | 9 ++++----- src/report.h | 4 +++- src/scores.c | 4 ++-- src/scores.h | 2 +- src/view-mainwindow.c | 2 +- src/view/display-player.c | 10 ++++------ src/view/display-player.h | 3 ++- 16 files changed, 48 insertions(+), 46 deletions(-) diff --git a/src/birth.c b/src/birth.c index 0dbe7e256..a361b7646 100644 --- a/src/birth.c +++ b/src/birth.c @@ -51,7 +51,7 @@ #include "save.h" #include "realm.h" #include "japanese.h" -#include "view-mainwindow.h" +#include "view-mainwindow.h" // 暫定。後で消す. /* * The last character rolled, @@ -3670,7 +3670,7 @@ static void edit_history(player_type *creature_ptr) creature_ptr->history[i][59] = '\0'; } - display_player(creature_ptr, 1); + display_player(creature_ptr, 1, map_name); #ifdef JP c_put_str(TERM_L_GREEN, "(キャラクターの生い立ち - 編集モード)", 11, 20); put_str("[ カーソルキーで移動、Enterで終了、Ctrl-Aでファイル読み込み ]", 17, 10); @@ -4355,7 +4355,7 @@ static bool player_birth_aux(player_type *creature_ptr) creature_ptr->chp = creature_ptr->mhp; creature_ptr->csp = creature_ptr->msp; - display_player(creature_ptr, mode); + display_player(creature_ptr, mode, map_name); /* Prepare a prompt (must squeeze everything in) */ Term_gotoxy(2, 23); diff --git a/src/character-dump.c b/src/character-dump.c index 531ce20df..d09ef4008 100644 --- a/src/character-dump.c +++ b/src/character-dump.c @@ -23,12 +23,12 @@ * @param fff ファイルポインタ * @return なし */ -static void dump_aux_display_player(player_type *creature_ptr, FILE *fff, void(*display_player)(player_type*, int)) +static void dump_aux_display_player(player_type *creature_ptr, FILE *fff, display_player_pf display_player, map_name_pf map_name) { TERM_COLOR a; char c; char buf[1024]; - display_player(creature_ptr, 0); + display_player(creature_ptr, 0, map_name); for (TERM_LEN y = 1; y < 22; y++) { @@ -46,7 +46,7 @@ static void dump_aux_display_player(player_type *creature_ptr, FILE *fff, void(* fprintf(fff, _("%s\n", "%s\n"), buf); } - display_player(creature_ptr, 1); + display_player(creature_ptr, 1, map_name); for (TERM_LEN y = 10; y < 19; y++) { TERM_LEN x; @@ -64,7 +64,7 @@ static void dump_aux_display_player(player_type *creature_ptr, FILE *fff, void(* } fprintf(fff, "\n"); - display_player(creature_ptr, 2); + display_player(creature_ptr, 2, map_name); for (TERM_LEN y = 2; y < 22; y++) { TERM_LEN x; @@ -85,7 +85,7 @@ static void dump_aux_display_player(player_type *creature_ptr, FILE *fff, void(* } fprintf(fff, "\n"); - display_player(creature_ptr, 3); + display_player(creature_ptr, 3, map_name); for (TERM_LEN y = 1; y < 22; y++) { TERM_LEN x; @@ -852,7 +852,7 @@ static void dump_aux_home_museum(player_type *creature_ptr, FILE *fff) * @param fff ファイルポインタ * @return エラーコード */ -void make_character_dump(player_type *creature_ptr, FILE *fff, void(*update_playtime)(void), void(*display_player)(player_type*, int)) +void make_character_dump(player_type *creature_ptr, FILE *fff, void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name) { #ifdef JP fprintf(fff, " [変愚蛮怒 %d.%d.%d キャラクタ情報]\n\n", @@ -863,7 +863,7 @@ void make_character_dump(player_type *creature_ptr, FILE *fff, void(*update_play #endif (*update_playtime)(); - dump_aux_display_player(creature_ptr, fff, display_player); + dump_aux_display_player(creature_ptr, fff, display_player, map_name); dump_aux_last_message(creature_ptr, fff); dump_aux_options(fff); dump_aux_recall(fff); diff --git a/src/character-dump.h b/src/character-dump.h index 47eed9272..5b64dd656 100644 --- a/src/character-dump.h +++ b/src/character-dump.h @@ -1,5 +1,6 @@ #pragma once #include "angband.h" +#include "files.h" - void make_character_dump(player_type *creature_ptr, FILE *fff, void(*update_playtime)(void), void(*display_player)(player_type*, int)); + void make_character_dump(player_type *creature_ptr, FILE *fff, void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name); diff --git a/src/cmd/cmd-dump.c b/src/cmd/cmd-dump.c index 6c3facc87..248260f1d 100644 --- a/src/cmd/cmd-dump.c +++ b/src/cmd/cmd-dump.c @@ -72,7 +72,7 @@ #include "spells.h" #include "objectkind.h" #include "floor-town.h" -#include "view-mainwindow.h" +#include "view-mainwindow.h" // 暫定。後で消す #include "english.h" @@ -1044,12 +1044,12 @@ void do_cmd_player_status(player_type *creature_ptr) while (TRUE) { update_playtime(); - display_player(creature_ptr, mode); + display_player(creature_ptr, mode, map_name); if (mode == 4) { mode = 0; - display_player(creature_ptr, mode); + display_player(creature_ptr, mode, map_name); } /* Prompt */ @@ -1077,7 +1077,7 @@ void do_cmd_player_status(player_type *creature_ptr) { if (tmp[0] && (tmp[0] != ' ')) { - file_character(creature_ptr, tmp, display_player); + file_character(creature_ptr, tmp, display_player, map_name); } } } diff --git a/src/core.c b/src/core.c index be4e66159..1d11a657b 100644 --- a/src/core.c +++ b/src/core.c @@ -4327,7 +4327,7 @@ void play_game(player_type *player_ptr, bool new_game) /* 町名消失バグ対策(#38205)のためここで世界マップ情報を読み出す */ process_dungeon_file(player_ptr, "w_info.txt", 0, 0, current_world_ptr->max_wild_y, current_world_ptr->max_wild_x); - success = send_world_score(player_ptr, TRUE, update_playtime, display_player); + success = send_world_score(player_ptr, TRUE, update_playtime, display_player, map_name); if (!success && !get_check_strict(_("スコア登録を諦めますか?", "Do you give up score registration? "), CHECK_NO_HISTORY)) { @@ -4699,12 +4699,12 @@ void close_game(player_type *player_ptr) print_tomb(player_ptr); flush(); - show_info(player_ptr, handle_stuff, update_playtime, display_player); + show_info(player_ptr, handle_stuff, update_playtime, display_player, map_name); Term_clear(); if (check_score(player_ptr)) { - if ((!send_world_score(player_ptr, do_send, update_playtime, display_player))) + if ((!send_world_score(player_ptr, do_send, update_playtime, display_player, map_name))) { if (get_check_strict(_("後でスコアを登録するために待機しますか?", "Stand by for later score registration? "), (CHECK_NO_ESCAPE | CHECK_NO_HISTORY))) diff --git a/src/files.c b/src/files.c index 6f87ffe56..a08e16433 100644 --- a/src/files.c +++ b/src/files.c @@ -995,7 +995,7 @@ errr process_pref_file(player_type *creature_ptr, concptr name) * Allow the "full" flag to dump additional info, * and trigger its usage from various places in the code. */ -errr file_character(player_type *creature_ptr, concptr name, display_player_pf display_player) +errr file_character(player_type *creature_ptr, concptr name, display_player_pf display_player, map_name_pf map_name) { char buf[1024]; path_build(buf, sizeof(buf), ANGBAND_DIR_USER, name); @@ -1025,7 +1025,7 @@ errr file_character(player_type *creature_ptr, concptr name, display_player_pf d * todo view-mainwindow への依存があるが、file_character() 自体関数ポインタなのでよそから呼び出されるので何とかするのは辛い * ついでに他の関数でもview(略) は参照されているので、簡単に除去することはできない… */ - make_character_dump(creature_ptr, fff, update_playtime, display_player); + make_character_dump(creature_ptr, fff, update_playtime, display_player, map_name); my_fclose(fff); msg_print(_("キャラクタ情報のファイルへの書き出しに成功しました。", "Character dump successful.")); msg_print(NULL); diff --git a/src/files.h b/src/files.h index 4027b0998..ae49ecd81 100644 --- a/src/files.h +++ b/src/files.h @@ -19,10 +19,11 @@ extern concptr ANGBAND_DIR_SAVE; extern concptr ANGBAND_DIR_USER; extern concptr ANGBAND_DIR_XTRA; -typedef void(*display_player_pf)(player_type*, int); +typedef concptr(*map_name_pf)(player_type*); +typedef void(*display_player_pf)(player_type*, int, map_name_pf); extern s16b tokenize(char *buf, s16b num, char **tokens, BIT_FLAGS mode); -extern errr file_character(player_type *creature_ptr, concptr name, display_player_pf display_player); +extern errr file_character(player_type *creature_ptr, concptr name, display_player_pf display_player, map_name_pf map_name); extern errr process_pref_file_command(player_type *creature_ptr, char *buf); extern concptr process_pref_file_expr(player_type *creature_ptr, char **sp, char *fp); extern errr process_pref_file(player_type *creature_ptr, concptr name); diff --git a/src/player/process-death.c b/src/player/process-death.c index 62b61e195..e8b59b061 100644 --- a/src/player/process-death.c +++ b/src/player/process-death.c @@ -12,7 +12,6 @@ #include "player-inventory.h" #include "object-flavor.h" #include "store.h" -#include "files.h" #include "term.h" #define GRAVE_LINE_WIDTH 31 @@ -370,7 +369,7 @@ static void show_dead_home_items(player_type *creature_ptr) * @param file_character ステータスダンプへのコールバック * @return なし */ -static void export_player_info(player_type *creature_ptr, void(*display_player)(player_type*, int)) +static void export_player_info(player_type *creature_ptr, display_player_pf display_player, map_name_pf map_name) { prt(_("キャラクターの記録をファイルに書き出すことができます。", "You may now dump a character record to one or more files."), 21, 0); prt(_("リターンキーでキャラクターを見ます。ESCで中断します。", "Then, hit RETURN to see the character, or ESC to abort."), 22, 0); @@ -383,7 +382,7 @@ static void export_player_info(player_type *creature_ptr, void(*display_player)( if (!out_val[0]) break; screen_save(); - (void)file_character(creature_ptr, out_val, display_player); + (void)file_character(creature_ptr, out_val, display_player, map_name); screen_load(); } } @@ -399,7 +398,7 @@ static void export_player_info(player_type *creature_ptr, void(*display_player)( * @param display_player ステータス表示へのコールバック * @return なし */ -void show_info(player_type *creature_ptr, void(*handle_stuff)(player_type*), void(*update_playtime)(void), void(*display_player)(player_type*, int)) +void show_info(player_type *creature_ptr, void(*handle_stuff)(player_type*), void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name) { inventory_aware(creature_ptr); home_aware(creature_ptr); @@ -409,9 +408,9 @@ void show_info(player_type *creature_ptr, void(*handle_stuff)(player_type*), voi flush(); msg_erase(); - export_player_info(creature_ptr, display_player); + export_player_info(creature_ptr, display_player, map_name); (*update_playtime)(); - (*display_player)(creature_ptr, 0); + (*display_player)(creature_ptr, 0, map_name); prt(_("何かキーを押すとさらに情報が続きます (ESCで中断): ", "Hit any key to see more information (ESC to abort): "), 23, 0); if (inkey() == ESCAPE) return; if (show_dead_player_items(creature_ptr)) return; diff --git a/src/player/process-death.h b/src/player/process-death.h index eac86e3dc..aabcda6ab 100644 --- a/src/player/process-death.h +++ b/src/player/process-death.h @@ -1,6 +1,7 @@ #pragma once #include "angband.h" +#include "files.h" void print_tomb(player_type *dead_ptr); -void show_info(player_type *creature_ptr, void(*handle_stuff)(player_type*), void(*update_playtime)(void), void(*displayer_player)(player_type*, int)); +void show_info(player_type *creature_ptr, void(*handle_stuff)(player_type*), void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name); diff --git a/src/report.c b/src/report.c index 0ca619c90..3c6d70d2c 100644 --- a/src/report.c +++ b/src/report.c @@ -12,7 +12,6 @@ #include "player-personality.h" #include "character-dump.h" -#include "files.h" #include "world.h" #include "term.h" @@ -221,7 +220,7 @@ static bool http_post(int sd, concptr url, BUF *buf) * @param dumpbuf 伝送内容バッファ * @return エラーコード */ -static errr make_dump(player_type *creature_ptr, BUF* dumpbuf, void(*update_playtime)(void), void(*display_player)(player_type*, int)) +static errr make_dump(player_type *creature_ptr, BUF* dumpbuf, void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name) { char buf[1024]; FILE *fff; @@ -241,7 +240,7 @@ static errr make_dump(player_type *creature_ptr, BUF* dumpbuf, void(*update_play } /* 一旦一時ファイルを作る。通常のダンプ出力と共通化するため。 */ - make_character_dump(creature_ptr, fff, update_playtime, display_player); + make_character_dump(creature_ptr, fff, update_playtime, display_player, map_name); my_fclose(fff); /* Open for read */ @@ -386,7 +385,7 @@ concptr make_screen_dump(player_type *creature_ptr) * @param creature_ptr プレーヤーへの参照ポインタ * @return 正常終了の時0、異常があったら1 */ -errr report_score(player_type *creature_ptr, void(*update_playtime)(void), void(*display_player)(player_type*, int)) +errr report_score(player_type *creature_ptr, void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name) { #ifdef WINDOWS WSADATA wsaData; @@ -427,7 +426,7 @@ errr report_score(player_type *creature_ptr, void(*update_playtime)(void), void( buf_sprintf(score, "killer: %s\n", creature_ptr->died_from); buf_sprintf(score, "-----charcter dump-----\n"); - make_dump(creature_ptr, score, update_playtime, display_player); + make_dump(creature_ptr, score, update_playtime, display_player, map_name); if (screen_dump) { diff --git a/src/report.h b/src/report.h index 798eff68e..4ab7e1546 100644 --- a/src/report.h +++ b/src/report.h @@ -3,6 +3,8 @@ extern concptr screen_dump; #ifdef WORLD_SCORE -extern errr report_score(player_type *creature_ptr, void(*update_playtime)(void), void(*display_player)(player_type*, int)); +#include "files.h" + +extern errr report_score(player_type *creature_ptr, void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name); extern concptr make_screen_dump(player_type *creature_ptr); #endif diff --git a/src/scores.c b/src/scores.c index 7ed8fdb36..9192727ef 100644 --- a/src/scores.c +++ b/src/scores.c @@ -429,7 +429,7 @@ void display_scores(int from, int to) * @param do_send 実際に転送ア処置を行うか否か * @return 転送が成功したらTRUEを返す */ -bool send_world_score(player_type *current_player_ptr, bool do_send, void(*update_playtime)(void), void(*display_player)(player_type*, int)) +bool send_world_score(player_type *current_player_ptr, bool do_send, void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name) { #ifdef WORLD_SCORE if (send_score && do_send) @@ -449,7 +449,7 @@ bool send_world_score(player_type *current_player_ptr, bool do_send, void(*updat prt(_("送信中..", "Sending..."), 0, 0); Term_fresh(); screen_save(); - err = report_score(current_player_ptr, update_playtime, display_player); + err = report_score(current_player_ptr, update_playtime, display_player, map_name); screen_load(); if (err) return FALSE; diff --git a/src/scores.h b/src/scores.h index 4780b7ee1..5ac7b6fd7 100644 --- a/src/scores.h +++ b/src/scores.h @@ -40,7 +40,7 @@ extern int highscore_fd; extern void display_scores_aux(int from, int to, int note, high_score *score); extern void display_scores(int from, int to); extern void kingly(player_type *winner_ptr); -extern bool send_world_score(player_type *current_player_ptr, bool do_send, void(*update_playtime)(void), void(*display_player)(player_type*, int)); +extern bool send_world_score(player_type *current_player_ptr, bool do_send, void(*update_playtime)(void), display_player_pf display_player, map_name_pf map_name); extern errr top_twenty(player_type *current_player_ptr); extern errr predict_score(player_type *current_player_ptr); extern void race_legends(player_type *current_player_ptr); diff --git a/src/view-mainwindow.c b/src/view-mainwindow.c index 8a05c4c6d..40731127b 100644 --- a/src/view-mainwindow.c +++ b/src/view-mainwindow.c @@ -1832,7 +1832,7 @@ static void fix_player(player_type *player_ptr) Term_activate(angband_term[j]); update_playtime(); - display_player(player_ptr, 0); + display_player(player_ptr, 0, map_name); Term_fresh(); Term_activate(old); } diff --git a/src/view/display-player.c b/src/view/display-player.c index 9f4ff5c7e..e7e0be005 100644 --- a/src/view/display-player.c +++ b/src/view/display-player.c @@ -1,5 +1,5 @@ /*! - * @brief プレーヤー表示に関するあれこれ (整理中) + * @brief プレーヤーのステータス表示メインルーチン群 * @date 2020/02/25 * @author Hourier * @details @@ -16,9 +16,7 @@ #include "quest.h" #include "core.h" // 暫定。後で消す #include "player/permanent-resistances.h" // 暫定。後で消す -#include "files.h" #include "mutation.h" -#include "view-mainwindow.h" // 暫定。後で消す #include "player-skill.h" #include "player-effects.h" #include "realm-song.h" @@ -529,7 +527,7 @@ static void display_player_middle(player_type *creature_ptr) * Mode 4 = mutations * */ -void display_player(player_type *creature_ptr, int mode) +void display_player(player_type *creature_ptr, int mode, map_name_pf map_name) { if ((creature_ptr->muta1 || creature_ptr->muta2 || creature_ptr->muta3) && display_mutations) mode = (mode % 5); @@ -657,7 +655,7 @@ void display_player(player_type *creature_ptr, int mode) else if (!floor_ptr->dun_level) { #ifdef JP - sprintf(statmsg, "…あなたは%sで%sに殺された。", map_name(creature_ptr), creature_ptr->died_from); + sprintf(statmsg, "…あなたは%sで%sに殺された。", (*map_name)(creature_ptr), creature_ptr->died_from); #else sprintf(statmsg, "...You were killed by %s in %s.", creature_ptr->died_from, map_name(creature_ptr)); #endif @@ -679,7 +677,7 @@ void display_player(player_type *creature_ptr, int mode) else { #ifdef JP - sprintf(statmsg, "…あなたは、%sの%d階で%sに殺された。", map_name(creature_ptr), (int)floor_ptr->dun_level, creature_ptr->died_from); + sprintf(statmsg, "…あなたは、%sの%d階で%sに殺された。", (*map_name)(creature_ptr), (int)floor_ptr->dun_level, creature_ptr->died_from); #else sprintf(statmsg, "...You were killed by %s on level %d of %s.", creature_ptr->died_from, floor_ptr->dun_level, map_name(creature_ptr)); #endif diff --git a/src/view/display-player.h b/src/view/display-player.h index 1b8180646..be5290913 100644 --- a/src/view/display-player.h +++ b/src/view/display-player.h @@ -1,6 +1,7 @@ #pragma once #include "angband.h" +#include "files.h" -void display_player(player_type *creature_ptr, int mode); +void display_player(player_type *creature_ptr, int mode, map_name_pf map_name); void display_player_equippy(player_type *player_ptr, TERM_LEN y, TERM_LEN x, BIT_FLAGS16 mode); -- 2.11.0