changed functions for score server access from static to public
[rocksndiamonds.git] / src / events.c
index b4f7594837de7fedf1a1cb8b93260437e4605962..13723bfa514da9ff8f78e499946907ad7d4729bd 100644 (file)
@@ -108,7 +108,7 @@ static int FilterEvents(const Event *event)
     {
       SetMouseCursor(CURSOR_DEFAULT);
 
-      DelayReached(&special_cursor_delay, 0);
+      ResetDelayCounter(&special_cursor_delay);
 
       cursor_mode_last = CURSOR_DEFAULT;
     }
@@ -214,6 +214,8 @@ static void HandleEvents(void)
 
   while (NextValidEvent(&event))
   {
+    int game_status_last = game_status;
+
     switch (event.type)
     {
       case EVENT_BUTTONPRESS:
@@ -264,6 +266,10 @@ static void HandleEvents(void)
        break;
     }
 
+    // always handle events within delay period if game status has changed
+    if (game_status != game_status_last)
+      ResetDelayCounter(&event_frame_delay);
+
     // do not handle events for longer than standard frame delay period
     if (DelayReached(&event_frame_delay, event_frame_delay_value))
       break;
@@ -330,7 +336,7 @@ static void HandleMouseCursor(void)
 
     // display normal pointer if mouse pressed
     if (button_status != MB_RELEASED)
-      DelayReached(&special_cursor_delay, 0);
+      ResetDelayCounter(&special_cursor_delay);
 
     if (gfx.cursor_mode != CURSOR_PLAYFIELD &&
        cursor_inside_playfield &&
@@ -1470,7 +1476,7 @@ void HandleKeyEvent(KeyEvent *event)
     if (key_status == KEY_PRESSED)
       SetOverlayEnabled(!GetOverlayEnabled());
   }
-  else
+  else if (!textinput_status)
   {
     // for any other "real" key event, disable virtual buttons
     SetOverlayEnabled(FALSE);
@@ -1749,9 +1755,14 @@ void HandleButton(int mx, int my, int button, int button_nr)
       break;
 
     case GAME_MODE_PSEUDO_TYPENAME:
+    case GAME_MODE_PSEUDO_TYPENAMES:
       HandleTypeName(KSYM_Return);
       break;
 
+    case GAME_MODE_NAMES:
+      HandleChoosePlayerName(mx, my, 0, 0, button);
+      break;
+
     case GAME_MODE_LEVELS:
       HandleChooseLevelSet(mx, my, 0, 0, button);
       break;
@@ -2080,6 +2091,8 @@ void HandleKey(Key key, int key_status)
          {
            key_action      |= key_info[i].action | JOY_BUTTON_SNAP;
            key_snap_action |= key_info[i].action;
+
+           tape.property_bits |= TAPE_PROPERTY_TAS_KEYS;
          }
        }
       }
@@ -2297,11 +2310,13 @@ void HandleKey(Key key, int key_status)
   switch (game_status)
   {
     case GAME_MODE_PSEUDO_TYPENAME:
+    case GAME_MODE_PSEUDO_TYPENAMES:
       HandleTypeName(key);
       break;
 
     case GAME_MODE_TITLE:
     case GAME_MODE_MAIN:
+    case GAME_MODE_NAMES:
     case GAME_MODE_LEVELS:
     case GAME_MODE_LEVELNR:
     case GAME_MODE_SETUP:
@@ -2319,6 +2334,8 @@ void HandleKey(Key key, int key_status)
            HandleTitleScreen(0, 0, 0, 0, MB_MENU_CHOICE);
          else if (game_status == GAME_MODE_MAIN)
            HandleMainMenu(0, 0, 0, 0, MB_MENU_CHOICE);
+          else if (game_status == GAME_MODE_NAMES)
+            HandleChoosePlayerName(0, 0, 0, 0, MB_MENU_CHOICE);
           else if (game_status == GAME_MODE_LEVELS)
             HandleChooseLevelSet(0, 0, 0, 0, MB_MENU_CHOICE);
           else if (game_status == GAME_MODE_LEVELNR)
@@ -2337,6 +2354,8 @@ void HandleKey(Key key, int key_status)
 
          if (game_status == GAME_MODE_TITLE)
            HandleTitleScreen(0, 0, 0, 0, MB_MENU_LEAVE);
+          else if (game_status == GAME_MODE_NAMES)
+            HandleChoosePlayerName(0, 0, 0, 0, MB_MENU_LEAVE);
           else if (game_status == GAME_MODE_LEVELS)
             HandleChooseLevelSet(0, 0, 0, 0, MB_MENU_LEAVE);
           else if (game_status == GAME_MODE_LEVELNR)
@@ -2350,7 +2369,9 @@ void HandleKey(Key key, int key_status)
          break;
 
         case KSYM_Page_Up:
-          if (game_status == GAME_MODE_LEVELS)
+          if (game_status == GAME_MODE_NAMES)
+            HandleChoosePlayerName(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
+          else if (game_status == GAME_MODE_LEVELS)
             HandleChooseLevelSet(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
           else if (game_status == GAME_MODE_LEVELNR)
             HandleChooseLevelNr(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
@@ -2363,7 +2384,9 @@ void HandleKey(Key key, int key_status)
          break;
 
         case KSYM_Page_Down:
-          if (game_status == GAME_MODE_LEVELS)
+          if (game_status == GAME_MODE_NAMES)
+            HandleChoosePlayerName(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+          else if (game_status == GAME_MODE_LEVELS)
             HandleChooseLevelSet(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
           else if (game_status == GAME_MODE_LEVELNR)
             HandleChooseLevelNr(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
@@ -2390,7 +2413,7 @@ void HandleKey(Key key, int key_status)
       switch (key)
       {
         case KSYM_Escape:
-         RequestQuitGame(setup.ask_on_escape);
+         RequestQuitGame(TRUE);
          break;
 
        default:
@@ -2594,6 +2617,7 @@ void HandleJoystick(void)
   {
     case GAME_MODE_TITLE:
     case GAME_MODE_MAIN:
+    case GAME_MODE_NAMES:
     case GAME_MODE_LEVELS:
     case GAME_MODE_LEVELNR:
     case GAME_MODE_SETUP:
@@ -2607,6 +2631,8 @@ void HandleJoystick(void)
        HandleTitleScreen(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
       else if (game_status == GAME_MODE_MAIN)
        HandleMainMenu(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+      else if (game_status == GAME_MODE_NAMES)
+        HandleChoosePlayerName(0,0,dx,dy,newbutton?MB_MENU_CHOICE:MB_MENU_MARK);
       else if (game_status == GAME_MODE_LEVELS)
         HandleChooseLevelSet(0,0,dx,dy,newbutton?MB_MENU_CHOICE : MB_MENU_MARK);
       else if (game_status == GAME_MODE_LEVELNR)