#include "system/item-entity.h"
#include "system/player-type-definition.h"
#include "term/term-color-types.h"
+#include "term/z-form.h"
#include "util/bit-flags-calculator.h"
#include "view/display-util.h"
-static TERM_COLOR likert_color = TERM_WHITE;
-
/*!
* @brief
* @param player_ptr プレイヤーへの参照ポインタ
* Returns a "rating" of x depending on y
* @param x 技能値
* @param y 技能値に対するランク基準比
+ * @return スキル レベルのテキスト説明とその説明のカラー インデックスのペア
*/
-static concptr likert(int x, int y)
+static std::pair<std::string, TERM_COLOR> likert(int x, int y)
{
- static char dummy[20] = "", dummy2[20] = "";
- memset(dummy, 0, strlen(dummy));
- memset(dummy2, 0, strlen(dummy2));
- if (y <= 0) {
- y = 1;
- }
+ std::string desc;
if (show_actual_value) {
- sprintf(dummy, "%3d-", x);
+ desc = format("%3d-", x);
}
if (x < 0) {
- likert_color = TERM_L_DARK;
- strcat(dummy, _("最低", "Very Bad"));
- return dummy;
+ return make_pair(desc.append(_("最低", "Very Bad")), TERM_L_DARK);
+ }
+
+ if (y <= 0) {
+ y = 1;
}
switch ((x / y)) {
case 0:
case 1: {
- likert_color = TERM_RED;
- strcat(dummy, _("悪い", "Bad"));
- break;
+ return make_pair(desc.append(_("悪い", "Bad")), TERM_RED);
}
case 2: {
- likert_color = TERM_L_RED;
- strcat(dummy, _("劣る", "Poor"));
- break;
+ return make_pair(desc.append(_("劣る", "Poor")), TERM_L_RED);
}
case 3:
case 4: {
- likert_color = TERM_ORANGE;
- strcat(dummy, _("普通", "Fair"));
- break;
+ return make_pair(desc.append(_("普通", "Fair")), TERM_ORANGE);
}
case 5: {
- likert_color = TERM_YELLOW;
- strcat(dummy, _("良い", "Good"));
- break;
+ return make_pair(desc.append(_("良い", "Good")), TERM_YELLOW);
}
case 6: {
- likert_color = TERM_YELLOW;
- strcat(dummy, _("大変良い", "Very Good"));
- break;
+ return make_pair(desc.append(_("大変良い", "Very Good")), TERM_YELLOW);
}
case 7:
case 8: {
- likert_color = TERM_L_GREEN;
- strcat(dummy, _("卓越", "Excellent"));
- break;
+ return make_pair(desc.append(_("卓越", "Excellent")), TERM_L_GREEN);
}
case 9:
case 10:
case 11:
case 12:
case 13: {
- likert_color = TERM_GREEN;
- strcat(dummy, _("超越", "Superb"));
- break;
+ return make_pair(desc.append(_("超越", "Superb")), TERM_GREEN);
}
case 14:
case 15:
case 16:
case 17: {
- likert_color = TERM_BLUE;
- strcat(dummy, _("英雄的", "Heroic"));
- break;
+ return make_pair(desc.append(_("英雄的", "Heroic")), TERM_BLUE);
}
default: {
- likert_color = TERM_VIOLET;
- sprintf(dummy2, _("伝説的[%d]", "Legendary[%d]"), (int)((((x / y) - 17) * 5) / 2));
- strcat(dummy, dummy2);
- break;
+ desc.append(format(_("伝説的[%d]", "Legendary[%d]"), (int)((((x / y) - 17) * 5) / 2)));
+ return make_pair(desc, TERM_VIOLET);
}
}
-
- return dummy;
}
/*!
int xfos = player_ptr->skill_fos;
int xdig = player_ptr->skill_dig;
- concptr desc = likert(xthn, 12);
- display_player_one_line(ENTRY_SKILL_FIGHT, desc, likert_color);
-
- desc = likert(xthb, 12);
- display_player_one_line(ENTRY_SKILL_SHOOT, desc, likert_color);
+ auto sd = likert(xthn, 12);
+ display_player_one_line(ENTRY_SKILL_FIGHT, sd.first.data(), sd.second);
- desc = likert(xsav, 7);
- display_player_one_line(ENTRY_SKILL_SAVING, desc, likert_color);
+ sd = likert(xthb, 12);
+ display_player_one_line(ENTRY_SKILL_SHOOT, sd.first.data(), sd.second);
- desc = likert((xstl > 0) ? xstl : -1, 1);
- display_player_one_line(ENTRY_SKILL_STEALTH, desc, likert_color);
+ sd = likert(xsav, 7);
+ display_player_one_line(ENTRY_SKILL_SAVING, sd.first.data(), sd.second);
- desc = likert(xfos, 6);
- display_player_one_line(ENTRY_SKILL_PERCEP, desc, likert_color);
+ sd = likert((xstl > 0) ? xstl : -1, 1);
+ display_player_one_line(ENTRY_SKILL_STEALTH, sd.first.data(), sd.second);
- desc = likert(xsrh, 6);
- display_player_one_line(ENTRY_SKILL_SEARCH, desc, likert_color);
+ sd = likert(xfos, 6);
+ display_player_one_line(ENTRY_SKILL_PERCEP, sd.first.data(), sd.second);
- desc = likert(xdis, 8);
- display_player_one_line(ENTRY_SKILL_DISARM, desc, likert_color);
+ sd = likert(xsrh, 6);
+ display_player_one_line(ENTRY_SKILL_SEARCH, sd.first.data(), sd.second);
- desc = likert(xdev, 6);
- display_player_one_line(ENTRY_SKILL_DEVICE, desc, likert_color);
+ sd = likert(xdis, 8);
+ display_player_one_line(ENTRY_SKILL_DISARM, sd.first.data(), sd.second);
- desc = likert(xdev, 6);
- display_player_one_line(ENTRY_SKILL_DEVICE, desc, likert_color);
+ sd = likert(xdev, 6);
+ display_player_one_line(ENTRY_SKILL_DEVICE, sd.first.data(), sd.second);
- desc = likert(xdig, 4);
- display_player_one_line(ENTRY_SKILL_DIG, desc, likert_color);
+ sd = likert(xdig, 4);
+ display_player_one_line(ENTRY_SKILL_DIG, sd.first.data(), sd.second);
if (!muta_att) {
display_player_one_line(ENTRY_BLOWS, format("%d+%d", blows1, blows2), TERM_L_BLUE);
display_player_one_line(ENTRY_SHOTS, format("%d.%02d", shots, shot_frac), TERM_L_BLUE);
+ concptr desc;
if ((damage[0] + damage[1]) == 0) {
desc = "nil!";
} else {