+ if (is_string_suffix(cheat_input, ":insert-solution-tape") ||
+ is_string_suffix(cheat_input, ":ist"))
+ {
+ InsertSolutionTape();
+ }
+ else if (is_string_suffix(cheat_input, ":reload-graphics") ||
+ is_string_suffix(cheat_input, ":rg"))
+ {
+ ReloadCustomArtwork(1 << ARTWORK_TYPE_GRAPHICS);
+ DrawMainMenu();
+ }
+ else if (is_string_suffix(cheat_input, ":reload-sounds") ||
+ is_string_suffix(cheat_input, ":rs"))
+ {
+ ReloadCustomArtwork(1 << ARTWORK_TYPE_SOUNDS);
+ DrawMainMenu();
+ }
+ else if (is_string_suffix(cheat_input, ":reload-music") ||
+ is_string_suffix(cheat_input, ":rm"))
+ {
+ ReloadCustomArtwork(1 << ARTWORK_TYPE_MUSIC);
+ DrawMainMenu();
+ }
+ else if (is_string_suffix(cheat_input, ":reload-artwork") ||
+ is_string_suffix(cheat_input, ":ra"))
+ {
+ ReloadCustomArtwork(1 << ARTWORK_TYPE_GRAPHICS |
+ 1 << ARTWORK_TYPE_SOUNDS |
+ 1 << ARTWORK_TYPE_MUSIC);
+ DrawMainMenu();
+ }
+ else if (is_string_suffix(cheat_input, ":dump-level") ||
+ is_string_suffix(cheat_input, ":dl"))
+ {
+ DumpLevel(&level);
+ }
+ else if (is_string_suffix(cheat_input, ":dump-tape") ||
+ is_string_suffix(cheat_input, ":dt"))
+ {
+ DumpTape(&tape);
+ }
+ }
+ else if (game_status == GAME_MODE_PLAYING)
+ {
+#ifdef DEBUG
+ if (is_string_suffix(cheat_input, ".q"))
+ DEBUG_SetMaximumDynamite();
+#endif
+ }
+ else if (game_status == GAME_MODE_EDITOR)
+ {
+ if (is_string_suffix(cheat_input, ":dump-brush") ||
+ is_string_suffix(cheat_input, ":DB"))
+ {
+ DumpBrush();
+ }
+ else if (is_string_suffix(cheat_input, ":DDB"))
+ {
+ DumpBrush_Small();
+ }
+ }
+}
+
+void HandleKey(Key key, int key_status)
+{
+ boolean anyTextGadgetActiveOrJustFinished = anyTextGadgetActive();
+ static struct SetupKeyboardInfo custom_key;
+ static struct
+ {
+ Key *key_custom;
+ Key key_default;
+ byte action;
+ } key_info[] =
+ {
+ { &custom_key.left, DEFAULT_KEY_LEFT, JOY_LEFT },
+ { &custom_key.right, DEFAULT_KEY_RIGHT, JOY_RIGHT },
+ { &custom_key.up, DEFAULT_KEY_UP, JOY_UP },
+ { &custom_key.down, DEFAULT_KEY_DOWN, JOY_DOWN },
+ { &custom_key.snap, DEFAULT_KEY_SNAP, JOY_BUTTON_1 },
+ { &custom_key.drop, DEFAULT_KEY_DROP, JOY_BUTTON_2 }
+ };
+ int joy = 0;
+ int i;
+
+ if (game_status == GAME_MODE_PLAYING)
+ {
+ /* only needed for single-step tape recording mode */
+ static boolean clear_button_2[MAX_PLAYERS] = { FALSE,FALSE,FALSE,FALSE };
+ static boolean element_dropped[MAX_PLAYERS] = { FALSE,FALSE,FALSE,FALSE };
+ int pnr;
+
+ for (pnr = 0; pnr < MAX_PLAYERS; pnr++)