rnd-20060212-1-src
authorHolger Schemel <info@artsoft.org>
Sun, 12 Feb 2006 12:39:06 +0000 (13:39 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:50:45 +0000 (10:50 +0200)
* fixed potential crash bug in WarnBuggyBase() (missing boundary check)
* fixed bug with CE change order in TestIfElementTouchesCustomElement()
* fixed bug when displaying info element without action, but direction

ChangeLog
src/conftime.h
src/events.c
src/files.c
src/game.c
src/main.h
src/screens.c

index c8b1327d6aa4bf949ada0933e2ebb1936ae38158..d91147183fcfb72d2833a9b0233abaf199d71f05 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-02-12
+       * fixed potential crash bug in WarnBuggyBase() (missing boundary check)
+
+2006-02-11
+       * fixed bug with CE change order in TestIfElementTouchesCustomElement()
+       * fixed bug when displaying info element without action, but direction
+
 2006-02-09
        * fixed minor graphical problems with springs smashing and slurping
          (when using R'n'D style graphics instead of EMC style graphics)
index f131772c3c87b8763a828a76a671805a72e95027..99eb7d9090dd06b09ebfecc9b853d6debb315a12 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2006-02-11 15:23]"
+#define COMPILE_DATE_STRING "[2006-02-12 13:35]"
index 95b9e9f0a0e9e1b8545fb1e60eb810ebca133381..c45581e549df5f0354e4a291aad9c08d059c5b54 100644 (file)
@@ -720,7 +720,9 @@ void HandleKey(Key key, int key_status)
     case GAME_MODE_INFO:
       switch(key)
       {
-#if 0
+#if 1
+       case KSYM_space:
+#else
        /* !!! only use "space" key to start game from main menu !!! */
        case KSYM_space:
 #endif
@@ -762,6 +764,12 @@ void HandleKey(Key key, int key_status)
            HandleInfoScreen(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
          break;
 
+#ifdef DEBUG
+       case KSYM_0:
+         GameFrameDelay = (GameFrameDelay == 500 ? GAME_FRAME_DELAY : 500);
+         break;
+#endif
+
        default:
          break;
       }
index af9ac437de8353642a7ea0cea6f131aa99d7febb..3d4bd2ef323e93f0916747a8358f6a1dbff381d3 100644 (file)
@@ -6040,7 +6040,8 @@ void LoadHelpAnimInfo()
 
 #if 0
   for (i = 0; i < num_list_entries; i++)
-    printf("::: %d, %d, %d => %d\n",
+    printf("::: '%s': %d, %d, %d => %d\n",
+          EL_NAME(helpanim_info[i].element),
           helpanim_info[i].element,
           helpanim_info[i].action,
           helpanim_info[i].direction,
index 9c0dcf992585522a1a3ea9a5597aa1f1d98d0788..79ba0e8a3585454a5c04252db2a66b6ccedbd66d 100644 (file)
@@ -39,6 +39,7 @@
 #define USE_FIXED_DONT_RUN_INTO                (USE_NEW_STUFF          * 1)
 #define USE_NEW_SPRING_BUMPER          (USE_NEW_STUFF          * 1)
 #define USE_STOP_CHANGED_ELEMENTS      (USE_NEW_STUFF          * 1)
+#define USE_ELEMENT_TOUCHING_BUGFIX    (USE_NEW_STUFF          * 1)
 
 #define USE_QUICKSAND_IMPACT_BUGFIX    (USE_NEW_STUFF          * 0)
 
@@ -7435,9 +7436,10 @@ static void WarnBuggyBase(int x, int y)
 
   for (i = 0; i < NUM_DIRECTIONS; i++)
   {
-    int xx = x + xy[i][0], yy = y + xy[i][1];
+    int xx = x + xy[i][0];
+    int yy = y + xy[i][1];
 
-    if (IS_PLAYER(xx, yy))
+    if (IN_LEV_FIELD(xx, yy) && IS_PLAYER(xx, yy))
     {
       PlayLevelSound(x, y, SND_SP_BUGGY_BASE_ACTIVE);
 
@@ -10176,7 +10178,7 @@ void TestIfPlayerTouchesCustomElement(int x, int y)
   }
 }
 
-#if 1
+#if USE_ELEMENT_TOUCHING_BUGFIX
 
 void TestIfElementTouchesCustomElement(int x, int y)
 {
index 3fcf5c17f971a05ffbf70a46e85f598ef8cab8a0..7dfec0fdecf39a9bc83c1cb10fb6f2018b573929 100644 (file)
 #define EL_CASCADE_TOGGLE(e)   (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 :    \
                                 IS_EDITOR_CASCADE_ACTIVE(e)   ? (e) - 1 : (e))
 
-#define EL_NAME(e)             (element_info[e].token_name)
+#define EL_NAME(e)             ((e) >= 0 ? element_info[e].token_name : "(?)")
 
 /* fundamental game speed values */
 #define ONE_SECOND_DELAY       1000    /* delay value for one second */
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
-#define PROGRAM_COPYRIGHT_STRING       "Copyright ©1995-2005 by Holger Schemel"
+#define PROGRAM_COPYRIGHT_STRING       "Copyright ©1995-2006 by Holger Schemel"
 
 #define ICON_TITLE_STRING              PROGRAM_TITLE_STRING
 #define COOKIE_PREFIX                  "ROCKSNDIAMONDS"
index 90b987f3bfa4884ba1ab9e94388407326414550e..9ee9ca4972a9719731f0885f390c4928f867a2cd 100644 (file)
@@ -826,12 +826,15 @@ void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init)
     action = helpanim_info[j].action;
     direction = helpanim_info[j].direction;
 
+    if (element < 0)
+      element = EL_UNKNOWN;
+
     if (action != -1 && direction != -1)
       graphic = el_act_dir2img(element, action, direction);
     else if (action != -1)
       graphic = el_act2img(element, action);
     else if (direction != -1)
-      graphic = el_act2img(element, direction);
+      graphic = el_dir2img(element, direction);
     else
       graphic = el2img(element);
 
@@ -1000,7 +1003,7 @@ void HandleInfoScreen_Elements(int button)
   }
   else
   {
-    if (DelayReached(&info_delay, GAME_FRAME_DELAY))
+    if (DelayReached(&info_delay, GameFrameDelay))
       if (page < num_pages)
        DrawInfoScreen_HelpAnim(page * anims_per_page, num_anims, FALSE);