<ClCompile Include="..\..\src\info-reader\race-reader.c" />\r
<ClCompile Include="..\..\src\info-reader\skill-reader.c" />\r
<ClCompile Include="..\..\src\info-reader\vault-reader.c" />\r
+ <ClCompile Include="..\..\src\io\command-repeater.c" />\r
<ClCompile Include="..\..\src\io\input-key-acceptor.c" />\r
<ClCompile Include="..\..\src\io\input-key-requester.c" />\r
<ClCompile Include="..\..\src\term\screen-processor.c" />\r
<ClInclude Include="..\..\src\info-reader\random-grid-effect-types.h" />\r
<ClInclude Include="..\..\src\info-reader\skill-reader.h" />\r
<ClInclude Include="..\..\src\info-reader\vault-reader.h" />\r
+ <ClInclude Include="..\..\src\io\command-repeater.h" />\r
<ClInclude Include="..\..\src\io\input-key-acceptor.h" />\r
<ClInclude Include="..\..\src\io\input-key-requester.h" />\r
<ClInclude Include="..\..\src\term\screen-processor.h" />\r
<ClCompile Include="..\..\src\io\input-key-requester.c">
<Filter>io</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\io\command-repeater.c">
+ <Filter>io</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\cmd\cmd-basic.h">
<ClInclude Include="..\..\src\io\input-key-requester.h">
<Filter>io</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\io\command-repeater.h">
+ <Filter>io</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
inventory/recharge-processor.c inventory/recharge-processor.h \
\
io/chuukei.c io/chuukei.h \
+ io/command-repeater.c io/command-repeater.h \
io/exit-panic.c io/exit-panic.h \
io/files-util.c io/files-util.h \
io/gf-descriptions.c io/gf-descriptions.h \
#include "game-option/disturbance-options.h"
#include "game-option/text-display-options.h"
#include "inventory/player-inventory.h"
+#include "io/command-repeater.h"
#include "io/input-key-requester.h"
#include "main/sound-definitions-table.h"
#include "main/sound-of-music.h"
#include "game-option/play-record-options.h"
#include "game-option/text-display-options.h"
#include "grid/grid.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "io/targeting.h"
#include "game-option/input-options.h"
#include "game-option/text-display-options.h"
#include "inventory/player-inventory.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "io/write-diary.h"
#include "core/asking-player.h"
#include "game-option/disturbance-options.h"
#include "game-option/text-display-options.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "io/targeting.h"
#include "core/asking-player.h"
#include "game-option/text-display-options.h"
#include "inventory/player-inventory.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "main/sound-of-music.h"
#include "cmd-io/macro-util.h"
#include "core/stuff-handler.h"
#include "game-option/input-options.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h" // todo 相互依存している、後で何とかする.
#include "main/sound-of-music.h"
#include "game-option/special-options.h"
#include "game-option/text-display-options.h"
#include "inventory/inventory-object.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "main/sound-of-music.h"
--- /dev/null
+#include "io/command-repeater.h"
+#include "input-key-requester.h"
+
+#define REPEAT_MAX 20
+
+/* Number of chars saved */
+static int repeat__cnt = 0;
+
+/* Current index */
+static int repeat__idx = 0;
+
+/* Saved "stuff" */
+static COMMAND_CODE repeat__key[REPEAT_MAX];
+
+void repeat_push(COMMAND_CODE what)
+{
+ if (repeat__cnt == REPEAT_MAX)
+ return;
+
+ repeat__key[repeat__cnt++] = what;
+ ++repeat__idx;
+}
+
+bool repeat_pull(COMMAND_CODE *what)
+{
+ if (repeat__idx == repeat__cnt)
+ return FALSE;
+
+ *what = repeat__key[repeat__idx++];
+ return TRUE;
+}
+
+void repeat_check(void)
+{
+ if (command_cmd == ESCAPE)
+ return;
+ if (command_cmd == ' ')
+ return;
+ if (command_cmd == '\r')
+ return;
+ if (command_cmd == '\n')
+ return;
+
+ COMMAND_CODE what;
+ if (command_cmd == 'n') {
+ repeat__idx = 0;
+ if (repeat_pull(&what)) {
+ command_cmd = what;
+ }
+ } else {
+ repeat__cnt = 0;
+ repeat__idx = 0;
+ what = command_cmd;
+ repeat_push(what);
+ }
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+
+void repeat_push(COMMAND_CODE what);
+bool repeat_pull(COMMAND_CODE *what);
+void repeat_check(void);
#include "game-option/runtime-arguments.h"
#include "inventory/player-inventory.h"
#include "io/chuukei.h"
+#include "io/command-repeater.h"
#include "io/files-util.h"
#include "io/input-key-requester.h" // todo 相互依存している、後で何とかする.
#include "io/write-diary.h"
#include "grid/feature.h"
#include "grid/grid.h"
#include "inventory/player-inventory.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "main/sound-of-music.h"
#include "core/stuff-handler.h"
#include "floor/floor.h"
#include "game-option/text-display-options.h"
+#include "io/command-repeater.h"
#include "io/input-key-requester.h"
#include "main/sound-definitions-table.h"
#include "main/sound-of-music.h"
#include "game-option/text-display-options.h"
#include "grid/feature.h"
#include "grid/grid.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "io/targeting.h"
#include "effect/spells-effect-util.h"
#include "game-option/disturbance-options.h"
#include "game-option/text-display-options.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "io/targeting.h"
#include "game-option/input-options.h"
#include "game-option/text-display-options.h"
#include "grid/grid.h"
+#include "io/command-repeater.h"
#include "io/input-key-acceptor.h"
#include "io/input-key-requester.h"
#include "io/targeting.h"
#include "game-option/text-display-options.h"
#include "inventory/inventory-object.h"
#include "inventory/player-inventory.h"
+#include "io/command-repeater.h"
#include "io/files-util.h"
#include "io/input-key-requester.h"
#include "io/write-diary.h"
-/* File: util.c */
-
-/*
+/*
+ * @author
+ * 2002/01/12 mogami
+ * 2020/05/16 Hourier
+ * @details
* Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
- *
* This software may be copied and distributed for educational, research,
* and not for profit purposes provided that this copyright and statement
* are included in all such copies. Other copyrights may also apply.
*/
- /* Purpose: Angband utilities -BEN- */
-
#include "system/angband.h"
#include "util/util.h"
#include "cmd-io/cmd-dump.h"
}
-#define REPEAT_MAX 20
-
-/* Number of chars saved */
-static int repeat__cnt = 0;
-
-/* Current index */
-static int repeat__idx = 0;
-
-/* Saved "stuff" */
-static COMMAND_CODE repeat__key[REPEAT_MAX];
-
-void repeat_push(COMMAND_CODE what)
-{
- if (repeat__cnt == REPEAT_MAX) return;
-
- repeat__key[repeat__cnt++] = what;
- ++repeat__idx;
-}
-
-
-bool repeat_pull(COMMAND_CODE *what)
-{
- if (repeat__idx == repeat__cnt) return FALSE;
-
- *what = repeat__key[repeat__idx++];
- return TRUE;
-}
-
-void repeat_check(void)
-{
- if (command_cmd == ESCAPE) return;
- if (command_cmd == ' ') return;
- if (command_cmd == '\r') return;
- if (command_cmd == '\n') return;
-
- COMMAND_CODE what;
- if (command_cmd == 'n')
- {
- repeat__idx = 0;
- if (repeat_pull(&what))
- {
- command_cmd = what;
- }
- }
- else
- {
- repeat__cnt = 0;
- repeat__idx = 0;
- what = command_cmd;
- repeat_push(what);
- }
-}
-
-
/*
* Array size for which InsertionSort
* is used instead of QuickSort
extern char *angband_strstr(concptr haystack, concptr needle);
extern char *angband_strchr(concptr ptr, char ch);
extern void str_tolower(char *str);
-
-extern void repeat_push(COMMAND_CODE what);
-extern bool repeat_pull(COMMAND_CODE *what);
-extern void repeat_check(void);