rnd-20020921-8-src
authorHolger Schemel <info@artsoft.org>
Sat, 21 Sep 2002 21:10:45 +0000 (23:10 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:38:41 +0000 (10:38 +0200)
src/conf_e2g.c
src/conftime.h
src/init.c
src/libgame/system.h
src/main.c
src/main.h
src/tools.c
src/tools.h

index 1336e54366a0a234e1ec339c10f73006ca263ee7..332a0a006ec9f81a65fb068806c7d27b0779a8fb 100644 (file)
@@ -21,6 +21,9 @@
 static struct
 {
     int element;
+    int direction;
+    int action;
+
     int graphic;
 }
 element_to_graphic[] =
index b2898efcb060a5fe518e836adec0a6fa8f86baf5..23b21eca8e2339a8bef0d808ff883141821fd7e5 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2002-09-21 21:53]"
+#define COMPILE_DATE_STRING "[2002-09-21 23:08]"
index db21b860d7917146073a284dc62f96d5433837b8..54a6436e3e7637622cc145134173158f945198fc 100644 (file)
@@ -26,6 +26,9 @@
 #include "cartoons.h"
 #include "config.h"
 
+#include "conf_e2g.c"  /* include auto-generated data structure definitions */
+
+
 static char *image_filename[NUM_PICTURES] =
 {
   "RocksScreen.pcx",
@@ -556,8 +559,7 @@ void InitGadgets()
 
 void InitElementInfo()
 {
-  int i, j;
-
+#if 0
   static struct
   {
     int element;
@@ -919,13 +921,19 @@ void InitElementInfo()
       -1,                      -1
     }
   };
+#endif
+
+  int i, j, k;
 
   /* always start with reliable default values */
   for(i=0; i<MAX_ELEMENTS; i++)
   {
     for(j=0; j<NUM_GFX_ACTIONS_MAPPED; j++)
     {
-      element_info[i].graphic[j] = GFX_LEERRAUM;
+      element_info[i].graphic[j] = IMG_EMPTY_SPACE;
+
+      for(k=0; k<NUM_MV_DIRECTIONS; k++)
+       element_info[i].direction_graphic[j][k] = IMG_EMPTY_SPACE;
       element_info[i].has_direction_graphic[j] = FALSE;
     }
   }
@@ -946,6 +954,7 @@ void InitElementInfo()
       GFX_START_ROCKSSP + nr_graphic;
   }
 
+#if 0
   /* this overrides some of the above default settings (GFX_SP_ZONK etc.) */
   i = 0;
   while (element_to_graphic[i].element > -1)
@@ -975,6 +984,33 @@ void InitElementInfo()
     element_info[element].has_direction_graphic[GFX_ACTION_DEFAULT] = TRUE;
     i++;
   }
+#else
+  i = 0;
+  while (element_to_graphic[i].element > -1)
+  {
+    int element   = element_to_graphic[i].element;
+    int direction = element_to_graphic[i].direction;
+    int action    = element_to_graphic[i].action;
+    int graphic   = element_to_graphic[i].graphic;
+
+    if (action > -1)
+      action = graphics_action_mapping[action];
+    else
+      action = GFX_ACTION_DEFAULT;
+
+    if (direction > -1)
+    {
+      direction = MV_DIR_BIT(direction);
+
+      element_info[element].direction_graphic[action][direction] = graphic;
+      element_info[element].has_direction_graphic[action] = TRUE;
+    }
+    else
+      element_info[element].graphic[action] = graphic;
+
+    i++;
+  }
+#endif
 }
 
 static void InitGraphicInfo()
index 5072584ee6441e9e1cdd6d68513b701072ede24b..463d76fcc0b12fbdb23037661757d2ef8c054a6b 100644 (file)
@@ -71,6 +71,7 @@
 #define MV_BIT_RIGHT           1
 #define MV_BIT_UP              2
 #define MV_BIT_DOWN            3
+#define NUM_MV_DIRECTIONS      4
 
 #define MV_NO_MOVING           0
 #define MV_LEFT                        (1 << MV_BIT_LEFT)
@@ -83,7 +84,7 @@
 #define KEY_BUTTON             (KEY_BUTTON_1 | KEY_BUTTON_2)
 #define KEY_ACTION             (KEY_MOTION | KEY_BUTTON)
 
-#define LOG_MV_DIR(x)          ((x) == MV_LEFT  ? MV_BIT_LEFT  :       \
+#define MV_DIR_BIT(x)          ((x) == MV_LEFT  ? MV_BIT_LEFT  :       \
                                 (x) == MV_RIGHT ? MV_BIT_RIGHT :       \
                                 (x) == MV_UP    ? MV_BIT_UP    : MV_BIT_DOWN)
 
index 1d202e3a84113aad20464b78ad9085a1cca9fdad..da3239dfc0b66ed1f21daaecae5e6d1a890ce133 100644 (file)
@@ -137,7 +137,7 @@ char *sound_name[NUM_SOUNDS] =
 };
 
 /* this is used to reduce memory usage of the different animation types */
-int anim_action_mapping[] =
+int graphics_action_mapping[] =
 {
   0,           /* GFX_ACTION_UNKNOWN           (0)  */
   0,           /* GFX_ACTION_DEFAULT           (1)  */
index a6db091175f0cf7a12959d5f1b27f95ad2ffa87d..edac5c489d6bf4a50c78371a773ae59d5c81b332 100644 (file)
@@ -1567,7 +1567,7 @@ struct ElementInfo
   int graphic[NUM_GFX_ACTIONS_MAPPED];
 
                                /* special graphics for left/right/up/down */
-  int direction_graphic[NUM_GFX_ACTIONS_MAPPED][4];
+  int direction_graphic[NUM_GFX_ACTIONS_MAPPED][NUM_MV_DIRECTIONS];
   boolean has_direction_graphic[NUM_GFX_ACTIONS_MAPPED];
 };
 
@@ -1639,6 +1639,8 @@ extern int                SiebCount;
 
 extern boolean         network_player_action_received;
 
+extern int             graphics_action_mapping[];
+
 extern struct LevelInfo                level;
 extern struct PlayerInfo       stored_player[], *local_player;
 extern struct HiScore          highscore[];
index 110837f4f2d59e3a43f76d048b790e0b0bc852d7..74d003cdbf7b2bdc65d71b8b43024ebc00a3824f 100644 (file)
@@ -3314,6 +3314,12 @@ int el2gfx_OLD(int element)
 
 int el2gfx(int element)
 {
+#if 1
+  int graphic_OLD = el2gfx_OLD(element);
+
+  return graphic_OLD;
+#else
+
   int graphic_NEW = element_info[element].graphic[GFX_ACTION_DEFAULT];
 
 #if DEBUG
@@ -3332,10 +3338,17 @@ int el2gfx(int element)
 #endif
 
   return graphic_NEW;
+#endif
 }
 
 int el2img(int element)
 {
+#if 1
+  int graphic_NEW = element_info[element].graphic[GFX_ACTION_DEFAULT];
+
+  return graphic_NEW;
+#else
+
   switch(element)
   {
     case EL_BD_BUTTERFLY:      return IMG_BD_BUTTERFLY;
@@ -3347,16 +3360,31 @@ int el2img(int element)
   }
 
   return IMG_EMPTY_SPACE;
+#endif
 }
 
 int el_dir2img(int element, int direction)
 {
-  if (element_info[element].has_direction_graphic[GFX_ACTION_DEFAULT])
+  int action = GFX_ACTION_DEFAULT;
+
+  if (element_info[element].has_direction_graphic[action])
   {
-    int i = LOG_MV_DIR(direction);
+    int direction = MV_DIR_BIT(direction);
 
-    return element_info[element].direction_graphic[GFX_ACTION_DEFAULT][i];
+    return element_info[element].direction_graphic[action][direction];
   }
   else
     return el2img(element);
 }
+
+int el_dir_act2img(int element, int direction, int action)
+{
+  if (element_info[element].has_direction_graphic[action])
+  {
+    int direction = MV_DIR_BIT(direction);
+
+    return element_info[element].direction_graphic[action][direction];
+  }
+  else
+    return el_dir2img(element, direction);
+}
index abe5a40270660e0fc47f97e6166b13e487f49f4b..eb55e5eee143cf1d1cd8bd0ccee9ae6682e8b879 100644 (file)
@@ -135,5 +135,6 @@ int get_next_element(int);
 int el2gfx(int);
 int el2img(int);
 int el_dir2img(int, int);
+int el_dir_act2img(int, int, int);
 
 #endif /* TOOLS_H */