From 5f1836dc47770d829664b200ea3f9c0b3d4aafe2 Mon Sep 17 00:00:00 2001 From: Hourier Date: Mon, 24 Feb 2020 12:10:30 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#39962=20print=5Ftomb()=20=E3=81=8B?= =?utf8?q?=E3=82=89show=5Fkilling=5Fmonster()=20=E3=82=92=E5=88=86?= =?utf8?q?=E9=9B=A2=20/=20Separated=20show=5Fkilling=5Fmonster()=20from=20?= =?utf8?q?print=5Ftomb()?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/view/process-death.c | 90 +++++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 39 deletions(-) diff --git a/src/view/process-death.c b/src/view/process-death.c index f26470dab..7315e5c94 100644 --- a/src/view/process-death.c +++ b/src/view/process-death.c @@ -33,6 +33,56 @@ static void center_string(char *buf, concptr str) /*! + * @brief プレーヤーを殺したモンスターを表示する + * @param dead_ptr プレーヤーへの参照ポインタ + * @param buf 墓テンプレへのバッファ + * @return 追加の行数 + */ +static int show_killing_monster(player_type *dead_ptr, char *buf) +{ + char tmp[160]; + roff_to_buf(dead_ptr->died_from, GRAVE_LINE_WIDTH + 1, tmp, sizeof tmp); + char *t; + t = tmp + strlen(tmp) + 1; + if (!*t) return 0; + + char dummy[80]; + strcpy(dummy, t); /* 2nd line */ + if (*(t + strlen(t) + 1)) /* Does 3rd line exist? */ + { + for (t = dummy + strlen(dummy) - 2; iskanji(*(t - 1)); t--) /* Loop */; + strcpy(t, "…"); + } + else if (my_strstr(tmp, "『") && suffix(dummy, "』")) + { + char dummy2[80]; + char *name_head = my_strstr(tmp, "『"); + sprintf(dummy2, "%s%s", name_head, dummy); + if (strlen(dummy2) <= GRAVE_LINE_WIDTH) + { + strcpy(dummy, dummy2); + *name_head = '\0'; + } + } + else if (my_strstr(tmp, "「") && suffix(dummy, "」")) + { + char dummy2[80]; + char *name_head = my_strstr(tmp, "「"); + sprintf(dummy2, "%s%s", name_head, dummy); + if (strlen(dummy2) <= GRAVE_LINE_WIDTH) + { + strcpy(dummy, dummy2); + *name_head = '\0'; + } + } + + center_string(buf, dummy); + put_str(buf, 15, 11); + return 1; +} + + +/*! * @brief 墓石のアスキーアート表示 / * Display a "tomb-stone" * @param creature_ptr プレーヤーへの参照ポインタ @@ -93,45 +143,7 @@ void print_tomb(player_type *dead_ptr, void(*read_dead_file)(char*)) } else { - roff_to_buf(dead_ptr->died_from, GRAVE_LINE_WIDTH + 1, tmp, sizeof tmp); - char *t; - t = tmp + strlen(tmp) + 1; - if (*t) - { - char dummy[80]; - strcpy(dummy, t); /* 2nd line */ - if (*(t + strlen(t) + 1)) /* Does 3rd line exist? */ - { - for (t = dummy + strlen(dummy) - 2; iskanji(*(t - 1)); t--) /* Loop */; - strcpy(t, "…"); - } - else if (my_strstr(tmp, "『") && suffix(dummy, "』")) - { - char dummy2[80]; - char *name_head = my_strstr(tmp, "『"); - sprintf(dummy2, "%s%s", name_head, dummy); - if (strlen(dummy2) <= GRAVE_LINE_WIDTH) - { - strcpy(dummy, dummy2); - *name_head = '\0'; - } - } - else if (my_strstr(tmp, "「") && suffix(dummy, "」")) - { - char dummy2[80]; - char *name_head = my_strstr(tmp, "「"); - sprintf(dummy2, "%s%s", name_head, dummy); - if (strlen(dummy2) <= GRAVE_LINE_WIDTH) - { - strcpy(dummy, dummy2); - *name_head = '\0'; - } - } - - center_string(buf, dummy); - put_str(buf, 15, 11); - extra_line = 1; - } + extra_line = show_killing_monster(dead_ptr, buf); } center_string(buf, tmp); -- 2.11.0