3 #include "cmd-gameoption.h"
5 #include "io/read-pref-file.h"
9 * @brief マクロ情報をprefファイルに保存する /
13 static void macro_dump(FILE **fpp, concptr fname)
15 static concptr mark = "Macro Dump";
17 path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
18 FILE_TYPE(FILE_TYPE_TEXT);
19 if (!open_auto_dump(fpp, buf, mark)) return;
21 auto_dump_printf(*fpp, _("\n# 自動マクロセーブ\n\n", "\n# Automatic macro dump\n\n"));
23 for (int i = 0; i < macro__num; i++)
25 ascii_to_text(buf, macro__act[i]);
26 auto_dump_printf(*fpp, "A:%s\n", buf);
27 ascii_to_text(buf, macro__pat[i]);
28 auto_dump_printf(*fpp, "P:%s\n", buf);
29 auto_dump_printf(*fpp, "\n");
32 close_auto_dump(fpp, mark);
37 * @brief マクロのトリガーキーを取得する /
38 * Hack -- ask for a "trigger" (see below)
39 * @param buf キー表記を保管するバッファ
43 * Note the complex use of the "inkey()" function from "util.c".
45 * Note that both "flush()" calls are extremely important.
48 static void do_cmd_macro_aux(char *buf)
65 ascii_to_text(tmp, buf);
66 Term_addstr(-1, TERM_WHITE, tmp);
71 * @brief マクロのキー表記からアスキーコードを得てターミナルに表示する /
72 * Hack -- ask for a keymap "trigger" (see below)
73 * @param buf キー表記を取得するバッファ
77 * Note that both "flush()" calls are extremely important. This may
78 * no longer be true, since "util.c" is much simpler now.
81 static void do_cmd_macro_aux_keymap(char *buf)
87 ascii_to_text(tmp, buf);
88 Term_addstr(-1, TERM_WHITE, tmp);
94 * @brief キーマップをprefファイルにダンプする /
95 * Hack -- append all keymaps to the given file
96 * @param fname ファイルネーム
100 static errr keymap_dump(concptr fname)
102 FILE *auto_dump_stream;
103 static concptr mark = "Keymap Dump";
107 if (rogue_like_commands)
109 mode = KEYMAP_MODE_ROGUE;
113 mode = KEYMAP_MODE_ORIG;
116 path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
117 FILE_TYPE(FILE_TYPE_TEXT);
118 if (!open_auto_dump(&auto_dump_stream, buf, mark)) return -1;
120 auto_dump_printf(auto_dump_stream, _("\n# 自動キー配置セーブ\n\n", "\n# Automatic keymap dump\n\n"));
121 for (int i = 0; i < 256; i++)
124 act = keymap_act[mode][i];
129 ascii_to_text(key, buf);
130 ascii_to_text(buf, act);
131 auto_dump_printf(auto_dump_stream, "A:%s\n", buf);
132 auto_dump_printf(auto_dump_stream, "C:%d:%s\n", mode, key);
135 close_auto_dump(&auto_dump_stream, mark);
141 * @brief マクロを設定するコマンドのメインルーチン /
142 * Interact with "macros"
146 * Note that the macro "action" must be defined before the trigger.
148 * Could use some helpful instructions on this page.
151 void do_cmd_macros(player_type *creature_ptr, void(*process_autopick_file_command)(char*))
155 FILE *auto_dump_stream;
156 BIT_FLAGS mode = rogue_like_commands ? KEYMAP_MODE_ROGUE : KEYMAP_MODE_ORIG;
157 FILE_TYPE(FILE_TYPE_TEXT);
162 prt(_("[ マクロの設定 ]", "Interact with Macros"), 2, 0);
163 prt(_("マクロ行動が(もしあれば)下に表示されます:", "Current action (if any) shown below:"), 20, 0);
164 ascii_to_text(buf, macro__buf);
167 prt(_("(1) ユーザー設定ファイルのロード", "(1) Load a user pref file"), 4, 5);
168 prt(_("(2) ファイルにマクロを追加", "(2) Append macros to a file"), 5, 5);
169 prt(_("(3) マクロの確認", "(3) Query a macro"), 6, 5);
170 prt(_("(4) マクロの作成", "(4) Create a macro"), 7, 5);
171 prt(_("(5) マクロの削除", "(5) Remove a macro"), 8, 5);
172 prt(_("(6) ファイルにキー配置を追加", "(6) Append keymaps to a file"), 9, 5);
173 prt(_("(7) キー配置の確認", "(7) Query a keymap"), 10, 5);
174 prt(_("(8) キー配置の作成", "(8) Create a keymap"), 11, 5);
175 prt(_("(9) キー配置の削除", "(9) Remove a keymap"), 12, 5);
176 prt(_("(0) マクロ行動の入力", "(0) Enter a new action"), 13, 5);
178 prt(_("コマンド: ", "Command: "), 16, 0);
180 if (i == ESCAPE) break;
184 prt(_("コマンド: ユーザー設定ファイルのロード", "Command: Load a user pref file"), 16, 0);
185 prt(_("ファイル: ", "File: "), 18, 0);
186 sprintf(tmp, "%s.prf", creature_ptr->base_name);
187 if (!askfor(tmp, 80)) continue;
189 errr err = process_pref_file(creature_ptr, tmp, process_autopick_file_command);
191 msg_format(_("標準の設定ファイル'%s'を読み込みました。", "Loaded default '%s'."), tmp);
193 msg_format(_("'%s'の読み込みに失敗しました!", "Failed to load '%s'!"), tmp);
195 msg_format(_("'%s'を読み込みました。", "Loaded '%s'."), tmp);
199 prt(_("コマンド: マクロをファイルに追加する", "Command: Append macros to a file"), 16, 0);
200 prt(_("ファイル: ", "File: "), 18, 0);
201 sprintf(tmp, "%s.prf", creature_ptr->base_name);
202 if (!askfor(tmp, 80)) continue;
204 macro_dump(&auto_dump_stream, tmp);
205 msg_print(_("マクロを追加しました。", "Appended macros."));
209 prt(_("コマンド: マクロの確認", "Command: Query a macro"), 16, 0);
210 prt(_("トリガーキー: ", "Trigger: "), 18, 0);
211 do_cmd_macro_aux(buf);
212 int k = macro_find_exact(buf);
215 msg_print(_("そのキーにはマクロは定義されていません。", "Found no macro."));
219 strcpy(macro__buf, macro__act[k]);
220 ascii_to_text(buf, macro__buf);
222 msg_print(_("マクロを確認しました。", "Found a macro."));
227 prt(_("コマンド: マクロの作成", "Command: Create a macro"), 16, 0);
228 prt(_("トリガーキー: ", "Trigger: "), 18, 0);
229 do_cmd_macro_aux(buf);
231 c_prt(TERM_L_RED, _("カーソルキーの左右でカーソル位置を移動。BackspaceかDeleteで一文字削除。",
232 "Press Left/Right arrow keys to move cursor. Backspace/Delete to delete a char."), 22, 0);
233 prt(_("マクロ行動: ", "Action: "), 20, 0);
234 ascii_to_text(tmp, macro__buf);
237 text_to_ascii(macro__buf, tmp);
238 macro_add(buf, macro__buf);
239 msg_print(_("マクロを追加しました。", "Added a macro."));
244 prt(_("コマンド: マクロの削除", "Command: Remove a macro"), 16, 0);
245 prt(_("トリガーキー: ", "Trigger: "), 18, 0);
246 do_cmd_macro_aux(buf);
248 msg_print(_("マクロを削除しました。", "Removed a macro."));
252 prt(_("コマンド: キー配置をファイルに追加する", "Command: Append keymaps to a file"), 16, 0);
253 prt(_("ファイル: ", "File: "), 18, 0);
254 sprintf(tmp, "%s.prf", creature_ptr->base_name);
255 if (!askfor(tmp, 80)) continue;
257 (void)keymap_dump(tmp);
258 msg_print(_("キー配置を追加しました。", "Appended keymaps."));
262 prt(_("コマンド: キー配置の確認", "Command: Query a keymap"), 16, 0);
263 prt(_("押すキー: ", "Keypress: "), 18, 0);
264 do_cmd_macro_aux_keymap(buf);
265 concptr act = keymap_act[mode][(byte)(buf[0])];
268 msg_print(_("キー配置は定義されていません。", "Found no keymap."));
272 strcpy(macro__buf, act);
273 ascii_to_text(buf, macro__buf);
275 msg_print(_("キー配置を確認しました。", "Found a keymap."));
280 prt(_("コマンド: キー配置の作成", "Command: Create a keymap"), 16, 0);
281 prt(_("押すキー: ", "Keypress: "), 18, 0);
282 do_cmd_macro_aux_keymap(buf);
284 c_prt(TERM_L_RED, _("カーソルキーの左右でカーソル位置を移動。BackspaceかDeleteで一文字削除。",
285 "Press Left/Right arrow keys to move cursor. Backspace/Delete to delete a char."), 22, 0);
286 prt(_("行動: ", "Action: "), 20, 0);
287 ascii_to_text(tmp, macro__buf);
290 text_to_ascii(macro__buf, tmp);
291 string_free(keymap_act[mode][(byte)(buf[0])]);
292 keymap_act[mode][(byte)(buf[0])] = string_make(macro__buf);
293 msg_print(_("キー配置を追加しました。", "Added a keymap."));
298 prt(_("コマンド: キー配置の削除", "Command: Remove a keymap"), 16, 0);
299 prt(_("押すキー: ", "Keypress: "), 18, 0);
300 do_cmd_macro_aux_keymap(buf);
301 string_free(keymap_act[mode][(byte)(buf[0])]);
302 keymap_act[mode][(byte)(buf[0])] = NULL;
303 msg_print(_("キー配置を削除しました。", "Removed a keymap."));
307 prt(_("コマンド: マクロ行動の入力", "Command: Enter a new action"), 16, 0);
309 c_prt(TERM_L_RED, _("カーソルキーの左右でカーソル位置を移動。BackspaceかDeleteで一文字削除。",
310 "Press Left/Right arrow keys to move cursor. Backspace/Delete to delete a char."), 22, 0);
311 prt(_("マクロ行動: ", "Action: "), 20, 0);
313 if (!askfor(buf, 80)) continue;
315 text_to_ascii(macro__buf, buf);