diff --git a/src/events.c b/src/events.c index e82d366..1aad1fa 100644 --- a/src/events.c +++ b/src/events.c @@ -1329,31 +1329,103 @@ void HandleKey(Key key, int key_status) return; } - if ((key == KSYM_minus || - key == KSYM_plus || - key == KSYM_0) && - ((GetKeyModState() & KMOD_Control) || - (GetKeyModState() & KMOD_Alt)) && - video.window_scaling_available && - !video.fullscreen_enabled) + /* Special and debug keys invoked with either Control+ or Alt+ */ + if ((GetKeyModState() & KMOD_Control) || + (GetKeyModState() & KMOD_Alt)) { - if (key == KSYM_0) - setup.window_scaling_percent = STD_WINDOW_SCALING_PERCENT; - else - setup.window_scaling_percent += - (key == KSYM_minus ? -1 : +1) * STEP_WINDOW_SCALING_PERCENT; + /* Video scaling keys */ + if (video.window_scaling_available && + !video.fullscreen_enabled) + { + int did_scaling = 1; + switch (key) + { + case KSYM_minus: + case KSYM_KP_Subtract: + setup.window_scaling_percent -= STEP_WINDOW_SCALING_PERCENT; + break; + case KSYM_equal: + case KSYM_plus: + case KSYM_KP_Add: + setup.window_scaling_percent += STEP_WINDOW_SCALING_PERCENT; + break; + case KSYM_0: + case KSYM_KP_0: + setup.window_scaling_percent = STD_WINDOW_SCALING_PERCENT; + break; + default: + did_scaling = 0; + break; + } + if (did_scaling) + { + if (setup.window_scaling_percent < MIN_WINDOW_SCALING_PERCENT) + setup.window_scaling_percent = MIN_WINDOW_SCALING_PERCENT; + else if (setup.window_scaling_percent > MAX_WINDOW_SCALING_PERCENT) + setup.window_scaling_percent = MAX_WINDOW_SCALING_PERCENT; - if (setup.window_scaling_percent < MIN_WINDOW_SCALING_PERCENT) - setup.window_scaling_percent = MIN_WINDOW_SCALING_PERCENT; - else if (setup.window_scaling_percent > MAX_WINDOW_SCALING_PERCENT) - setup.window_scaling_percent = MAX_WINDOW_SCALING_PERCENT; + ToggleFullscreenOrChangeWindowScalingIfNeeded(); - ToggleFullscreenOrChangeWindowScalingIfNeeded(); + if (game_status == GAME_MODE_SETUP) + RedrawSetupScreenAfterFullscreenToggle(); - if (game_status == GAME_MODE_SETUP) - RedrawSetupScreenAfterFullscreenToggle(); + return; + } + } - return; + /* Debug keys */ + switch (key) + { +/* Should any of these be enabled by default? Maybe all of them? */ +#ifdef DEBUG + /* KSYM_0 belongs to [0/+/-] scaling control set */ + case KSYM_1: case KSYM_KP_1: /* 200% */ + case KSYM_2: case KSYM_KP_2: /* 100% */ + case KSYM_3: case KSYM_KP_3: /* 66% */ + case KSYM_4: case KSYM_KP_4: /* 50% */ + case KSYM_5: case KSYM_KP_5: /* 40% */ + case KSYM_6: case KSYM_KP_6: /* 33% */ + case KSYM_7: case KSYM_KP_7: /* 28% */ + case KSYM_8: case KSYM_KP_8: /* 25% */ + case KSYM_9: case KSYM_KP_9: /* 4% */ + if (key == KSYM_9 || key == KSYM_KP_9) + { + /* Really slow */ + GameFrameDelay = 500; + } + else + { + /* Some specific fast-to-slow speeds */ + if (key >= KSYM_1 && key <= KSYM_9) + GameFrameDelay = (key - KSYM_0) * 10; + else + GameFrameDelay = (key - KSYM_KP_0) * 10; + } + + printf("Game speed == %d%% (%d ms delay between two frames)\n", + GAME_FRAME_DELAY * 100 / GameFrameDelay, GameFrameDelay); + return; + + case KSYM_b: + setup.sp_show_border_elements = !setup.sp_show_border_elements; + printf("Supaplex border elements %s\n", + setup.sp_show_border_elements ? "enabled" : "disabled"); + return; + + case KSYM_d: + options.debug = !options.debug; + printf("debug mode %s\n", + options.debug ? "enabled" : "disabled"); + return; + + case KSYM_v: + printf("::: currently using game engine version %d\n", + game.engine_version); + return; +#endif + default: + break; + } } if (game_status == GAME_MODE_PLAYING && AllPlayersGone && @@ -1494,18 +1566,6 @@ void HandleKey(Key key, int key_status) HandleHallOfFame(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); break; -#ifdef DEBUG - case KSYM_0: - GameFrameDelay = (GameFrameDelay == 500 ? GAME_FRAME_DELAY : 500); - break; - - case KSYM_b: - setup.sp_show_border_elements = !setup.sp_show_border_elements; - printf("Supaplex border elements %s\n", - setup.sp_show_border_elements ? "enabled" : "disabled"); - break; -#endif - default: break; } @@ -1524,40 +1584,6 @@ void HandleKey(Key key, int key_status) RequestQuitGame(setup.ask_on_escape); break; -#ifdef DEBUG - case KSYM_0: - if (key == KSYM_0) - { - if (GameFrameDelay == 500) - GameFrameDelay = GAME_FRAME_DELAY; - else - GameFrameDelay = 500; - } - else - GameFrameDelay = (key - KSYM_0) * 10; - printf("Game speed == %d%% (%d ms delay between two frames)\n", - GAME_FRAME_DELAY * 100 / GameFrameDelay, GameFrameDelay); - break; - - case KSYM_d: - if (options.debug) - { - options.debug = FALSE; - printf("debug mode disabled\n"); - } - else - { - options.debug = TRUE; - printf("debug mode enabled\n"); - } - break; - - case KSYM_v: - printf("::: currently using game engine version %d\n", - game.engine_version); - break; -#endif - default: break; }