auto_dump_printf(auto_dump_stream, _("\n# アイテムの[色/文字]の設定\n\n", "\n# Object attr/char definitions\n\n"));
for (const auto &k_ref : k_info) {
- GAME_TEXT o_name[MAX_NLEN];
if (k_ref.name.empty()) {
continue;
}
+ std::string o_name("");
+ GAME_TEXT char_o_name[MAX_NLEN]{};
if (!k_ref.flavor) {
- strip_name(o_name, k_ref.idx);
+ o_name = strip_name(k_ref.idx);
} else {
ObjectType dummy;
dummy.prep(k_ref.idx);
- describe_flavor(player_ptr, o_name, &dummy, OD_FORCE_FLAVOR);
+ describe_flavor(player_ptr, char_o_name, &dummy, OD_FORCE_FLAVOR);
}
- auto_dump_printf(auto_dump_stream, "# %s\n", o_name);
+ if (o_name == "") {
+ o_name = char_o_name;
+ }
+
+ auto_dump_printf(auto_dump_stream, "# %s\n", o_name.data());
auto_dump_printf(auto_dump_stream, "K:%d:0x%02X/0x%02X\n\n", (int)k_ref.idx, (byte)(k_ref.x_attr), (byte)(k_ref.x_char));
}
#include "util/string-processor.h"
#include "world/world.h"
#include <functional>
+#include <sstream>
#include <utility>
/*!
* @param buf ベースアイテム格納先の参照ポインタ
* @param k_idx ベースアイテムID
*/
-void strip_name(char *buf, KIND_OBJECT_IDX k_idx)
+std::string strip_name(KIND_OBJECT_IDX k_idx)
{
auto k_ptr = &k_info[k_idx];
auto tok = str_split(k_ptr->name, ' ');
- std::string name = "";
- for (auto s : tok) {
+ std::stringstream name;
+ for (const auto &s : tok) {
if (s == "" || s == "~" || s == "&" || s == "#") {
continue;
}
endpos--;
}
- name += s.substr(offset, endpos);
+ name << s.substr(offset, endpos);
}
- name += " ";
- strcpy(buf, name.c_str());
+ name << " ";
+ return name.str();
}
#pragma once
#include "system/angband.h"
+#include <string>
void get_table_name_aux(char *out_string);
void get_table_name(char *out_string);
void get_table_sindarin_aux(char *out_string);
void get_table_sindarin(char *out_string);
void flavor_init(void);
-void strip_name(char *buf, KIND_OBJECT_IDX k_idx);
+std::string strip_name(KIND_OBJECT_IDX k_idx);
for (auto tval : { ItemKindType::SWORD, ItemKindType::POLEARM, ItemKindType::HAFTED, ItemKindType::DIGGING, ItemKindType::BOW }) {
for (int num = 0; num < 64; num++) {
- char tmp[30];
for (const auto &k_ref : k_info) {
if ((k_ref.tval != tval) || (k_ref.sval != num)) {
continue;
SUB_EXP weapon_exp = player_ptr->weapon_exp[tval][num];
SUB_EXP weapon_max = player_ptr->weapon_exp_max[tval][num];
- strip_name(tmp, k_ref.idx);
- fprintf(fff, "%-25s ", tmp);
+ const auto tmp = strip_name(k_ref.idx);
+ fprintf(fff, "%-25s ", tmp.data());
if (show_actual_value) {
fprintf(fff, "%4d/%4d ", weapon_exp, weapon_max);
}
{
int i;
for (i = 0; i < per_page && (object_idx[object_top + i] >= 0); i++) {
- GAME_TEXT o_name[MAX_NLEN];
TERM_COLOR a;
object_kind *flavor_k_ptr;
KIND_OBJECT_IDX k_idx = object_idx[object_top + i];
}
attr = ((i + object_top == object_cur) ? cursor : attr);
+ std::string o_name;
if (!k_ptr->flavor || (!visual_only && k_ptr->aware)) {
- strip_name(o_name, k_idx);
+ o_name = strip_name(k_idx);
} else {
- strcpy(o_name, flavor_k_ptr->flavor_name.c_str());
+ o_name = flavor_k_ptr->flavor_name;
}
- c_prt(attr, o_name, row + i, col);
+ c_prt(attr, o_name.data(), row + i, col);
if (per_page == 1) {
c_prt(attr, format("%02x/%02x", flavor_k_ptr->x_attr, flavor_k_ptr->x_char), row + i, (w_ptr->wizard || visual_only) ? 64 : 68);
}
{
auto num = 0;
KIND_OBJECT_IDX choice[80]{};
- char buf[160]{};
char ch;
for (const auto &k_ref : k_info) {
if (num >= 80) {
auto row = 2 + (num % 20);
auto col = _(30, 32) * (num / 20);
ch = listsym[num];
- strcpy(buf, " ");
- strip_name(buf, k_ref.idx);
- prt(format("[%c] %s", ch, buf), row, col);
+ const auto buf = strip_name(k_ref.idx);
+ prt(format("[%c] %s", ch, buf.c_str()), row, col);
choice[num++] = k_ref.idx;
}