OSDN Git Service

Merge pull request #3569 from sikabane-works/release/3.0.0.88-alpha
[hengbandforosx/hengbandosx.git] / src / view / display-player-misc-info.cpp
1 #include "view/display-player-misc-info.h"
2 #include "player-info/class-info.h"
3 #include "player-info/mimic-info-table.h"
4 #include "player/player-personality.h"
5 #include "player/player-sex.h"
6 #include "system/player-type-definition.h"
7 #include "term/screen-processor.h"
8 #include "term/term-color-types.h"
9 #include "term/z-form.h"
10 #include "view/display-player-stat-info.h"
11 #include <sstream>
12
13 /*!
14  * @brief 画面上部にプレイヤーの名前を表示する
15  *
16  * @param name_only trueならば名前のみ表示する。falseならばプレイヤーの性格も表示する。
17  */
18 void display_player_name(PlayerType *player_ptr, bool name_only)
19 {
20     std::stringstream ss;
21     if (!name_only) {
22         ss << ap_ptr->title << _(ap_ptr->no == 1 ? "の" : "", " ");
23     }
24     ss << player_ptr->name;
25     const auto display_name = ss.str();
26
27     constexpr std::string_view header = _("名前  : ", "Name  : ");
28     const auto length = header.length() + display_name.length();
29
30     const auto [wid, hgt] = term_get_size();
31     const auto center_col = (wid - length) / 2 - 4; // ヘッダがあるぶん少し左に寄せたほうが見やすい
32     constexpr auto row = 1;
33
34     term_erase(0, row);
35     term_putstr(center_col, row, -1, TERM_WHITE, header);
36     term_putstr(center_col + header.length(), row, -1, TERM_L_BLUE, display_name);
37 }
38
39 /*!
40  * @brief プレイヤーの特性フラグ一覧表示2a /
41  * @param player_ptr プレイヤーへの参照ポインタ
42  * Special display, part 2a
43  */
44 void display_player_misc_info(PlayerType *player_ptr)
45 {
46     display_player_name(player_ptr);
47
48     put_str(_("性別  :", "Sex   :"), 3, 1);
49     put_str(_("種族  :", "Race  :"), 4, 1);
50     put_str(_("職業  :", "Class :"), 5, 1);
51
52     c_put_str(TERM_L_BLUE, sp_ptr->title, 3, 9);
53     c_put_str(TERM_L_BLUE, (player_ptr->mimic_form != MimicKindType::NONE ? mimic_info.at(player_ptr->mimic_form).title : rp_ptr->title), 4, 9);
54     c_put_str(TERM_L_BLUE, cp_ptr->title, 5, 9);
55
56     put_str(_("レベル:", "Level :"), 6, 1);
57     put_str(_("HP  :", "Hits  :"), 7, 1);
58     put_str(_("MP  :", "Mana  :"), 8, 1);
59
60     c_put_str(TERM_L_BLUE, format("%d", (int)player_ptr->lev), 6, 9);
61     c_put_str(TERM_L_BLUE, format("%d/%d", (int)player_ptr->chp, (int)player_ptr->mhp), 7, 9);
62     c_put_str(TERM_L_BLUE, format("%d/%d", (int)player_ptr->csp, (int)player_ptr->msp), 8, 9);
63 }