rnd-20031008-1-src
[rocksndiamonds.git] / src / events.c
index 2ba138ffd67661107ee06d30444a21ceb36f20b3..e021ec83239051920c36a19b4cbeebde04931ada 100644 (file)
 #include "tape.h"
 #include "network.h"
 
-/* values for key_status */
-#define KEY_NOT_PRESSED                FALSE
-#define KEY_RELEASED           FALSE
-#define KEY_PRESSED            TRUE
-
 
 static boolean cursor_inside_playfield = FALSE;
 static boolean playfield_cursor_set = FALSE;
@@ -311,7 +306,9 @@ void HandleKeyEvent(KeyEvent *event)
   int key_status = (event->type==EVENT_KEYPRESS ? KEY_PRESSED : KEY_RELEASED);
   boolean with_modifiers = (game_status == GAME_MODE_PLAYING ? FALSE : TRUE);
   Key key = GetEventKey(event, with_modifiers);
+  Key keymod = (with_modifiers ? GetEventKey(event, FALSE) : key);
 
+  HandleKeyModState(keymod, key_status);
   HandleKey(key, key_status);
 }
 
@@ -425,14 +422,19 @@ void HandleButton(int mx, int my, int button)
          if (!IN_LEV_FIELD(x, y))
            break;
 
-         printf("      Feld[%d][%d] == %d\n", x,y, Feld[x][y]);
+         printf("      Feld[%d][%d] == %d ('%s')\n", x,y, Feld[x][y],
+                element_info[Feld[x][y]].token_name);
+         printf("      Back[%d][%d] == %d\n", x,y, Back[x][y]);
          printf("      Store[%d][%d] == %d\n", x,y, Store[x][y]);
          printf("      Store2[%d][%d] == %d\n", x,y, Store2[x][y]);
          printf("      StorePlayer[%d][%d] == %d\n", x,y, StorePlayer[x][y]);
          printf("      MovPos[%d][%d] == %d\n", x,y, MovPos[x][y]);
          printf("      MovDir[%d][%d] == %d\n", x,y, MovDir[x][y]);
          printf("      MovDelay[%d][%d] == %d\n", x,y, MovDelay[x][y]);
+         printf("      ChangeDelay[%d][%d] == %d\n", x,y, ChangeDelay[x][y]);
          printf("      GfxElement[%d][%d] == %d\n", x,y, GfxElement[x][y]);
+         printf("      GfxAction[%d][%d] == %d\n", x,y, GfxAction[x][y]);
+         printf("      GfxFrame[%d][%d] == %d\n", x,y, GfxFrame[x][y]);
          printf("\n");
        }
       }
@@ -626,16 +628,16 @@ void HandleKey(Key key, int key_status)
 
         case KSYM_Page_Up:
           if (game_status == GAME_MODE_LEVELS)
-            HandleChooseLevel(0,0, 0,-SCR_FIELDY, MB_MENU_MARK);
+            HandleChooseLevel(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
          else if (game_status == GAME_MODE_SETUP)
-           HandleSetupScreen(0,0, 0,-SCR_FIELDY, MB_MENU_MARK);
+           HandleSetupScreen(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
          break;
 
         case KSYM_Page_Down:
           if (game_status == GAME_MODE_LEVELS)
-            HandleChooseLevel(0,0, 0,SCR_FIELDY, MB_MENU_MARK);
+            HandleChooseLevel(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
          else if (game_status == GAME_MODE_SETUP)
-           HandleSetupScreen(0,0, 0,SCR_FIELDY, MB_MENU_MARK);
+           HandleSetupScreen(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
          break;
 
 #ifdef DEBUG
@@ -663,11 +665,11 @@ void HandleKey(Key key, int key_status)
          break;
 
         case KSYM_Page_Up:
-         HandleHallOfFame(0,0, 0,-SCR_FIELDY, MB_MENU_MARK);
+         HandleHallOfFame(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
          break;
 
         case KSYM_Page_Down:
-         HandleHallOfFame(0,0, 0,SCR_FIELDY, MB_MENU_MARK);
+         HandleHallOfFame(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
          break;
 
        default:
@@ -793,9 +795,16 @@ void HandleKey(Key key, int key_status)
 
        case KSYM_Q:
        case KSYM_q:
-         local_player->dynamite = 1000;
-         break;
+         {
+           int i;
 
+           for (i=0; i < MAX_INVENTORY_SIZE; i++)
+             if (local_player->inventory_size < MAX_INVENTORY_SIZE)
+               local_player->inventory_element[local_player->inventory_size++] =
+                 EL_DYNAMITE;
+         }
+
+         break;
 
 
 #if 0