old_my = my;
}
- HandleGadgets(mx, my, button);
+ if (HandleGadgets(mx, my, button))
+ {
+ /* do not handle this button event anymore */
+ mx = my = -32; /* force mouse event to be outside screen tiles */
+ }
switch(game_status)
{
break;
case GAME_MODE_INFO:
- HandleInfoScreen(button);
+ HandleInfoScreen(mx,my, 0,0, button);
break;
case GAME_MODE_SETUP:
#ifdef DEBUG
if (button == MB_RELEASED)
{
- int sx = (mx - SX) / TILEX;
- int sy = (my - SY) / TILEY;
-
- if (IN_VIS_FIELD(sx,sy))
+ if (IN_GFX_SCREEN(mx, my))
{
+ int sx = (mx - SX) / TILEX;
+ int sy = (my - SY) / TILEY;
int x = LEVELX(sx);
int y = LEVELY(sy);
return;
}
- /* allow quick escape to the main menu with the Escape key */
- if (key == KSYM_Escape &&
- game_status != GAME_MODE_MAIN &&
- game_status != GAME_MODE_PLAYING &&
- game_status != GAME_MODE_EDITOR &&
- game_status != GAME_MODE_LEVELS &&
- game_status != GAME_MODE_SETUP)
- {
- game_status = GAME_MODE_MAIN;
- DrawMainMenu();
- return;
- }
-
/* special key shortcuts */
if (game_status == GAME_MODE_MAIN || game_status == GAME_MODE_PLAYING)
{
TapeTogglePause(TAPE_TOGGLE_MANUAL);
}
-#if 0
-#ifndef DEBUG
-
- if (game_status == GAME_MODE_PLAYING && (tape.playing || tape.pausing))
- return;
-
-#endif
-#endif
-
-
- HandleGadgetsKeyInput(key);
+ if (HandleGadgetsKeyInput(key))
+ {
+ if (key != KSYM_Escape) /* always allow ESC key to be handled */
+ key = KSYM_UNDEFINED;
+ }
switch(game_status)
{
case GAME_MODE_MAIN:
case GAME_MODE_LEVELS:
case GAME_MODE_SETUP:
+ case GAME_MODE_INFO:
switch(key)
{
case KSYM_Return:
HandleChooseLevel(0,0, 0,0, MB_MENU_CHOICE);
else if (game_status == GAME_MODE_SETUP)
HandleSetupScreen(0,0, 0,0, MB_MENU_CHOICE);
+ else if (game_status == GAME_MODE_INFO)
+ HandleInfoScreen(0,0, 0,0, MB_MENU_CHOICE);
break;
case KSYM_Escape:
HandleChooseLevel(0,0, 0,0, MB_MENU_LEAVE);
else if (game_status == GAME_MODE_SETUP)
HandleSetupScreen(0,0, 0,0, MB_MENU_LEAVE);
+ else if (game_status == GAME_MODE_INFO)
+ HandleInfoScreen(0,0, 0,0, MB_MENU_LEAVE);
break;
case KSYM_Page_Up:
HandleChooseLevel(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SETUP)
HandleSetupScreen(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_INFO)
+ HandleInfoScreen(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
break;
case KSYM_Page_Down:
HandleChooseLevel(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SETUP)
HandleSetupScreen(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_INFO)
+ HandleInfoScreen(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
break;
#ifdef DEBUG
}
break;
- case GAME_MODE_INFO:
- HandleInfoScreen(MB_RELEASED);
- break;
-
case GAME_MODE_SCORES:
switch(key)
{
case KSYM_Return:
+ case KSYM_Escape:
game_status = GAME_MODE_MAIN;
DrawMainMenu();
- BackToFront();
break;
case KSYM_Page_Up:
break;
}
default:
- break;
+ if (key == KSYM_Escape)
+ {
+ game_status = GAME_MODE_MAIN;
+ DrawMainMenu();
+
+ return;
+ }
}
}
case GAME_MODE_MAIN:
case GAME_MODE_LEVELS:
case GAME_MODE_SETUP:
+ case GAME_MODE_INFO:
{
static unsigned long joystickmove_delay = 0;
HandleChooseLevel(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_SETUP)
HandleSetupScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+ else if (game_status == GAME_MODE_INFO)
+ HandleInfoScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
break;
}
HandleHallOfFame(0,0, dx,dy, !newbutton);
break;
- case GAME_MODE_INFO:
- HandleInfoScreen(!newbutton);
- break;
-
case GAME_MODE_EDITOR:
HandleLevelEditorIdle();
break;