rnd-20030929-1-src
[rocksndiamonds.git] / src / main.h
index 9739a87cbb032590ee8ded85d20107f2b36c7a12..4e64205b3a1ec20f734adb703f8148ef885a48aa 100644 (file)
@@ -14,9 +14,6 @@
 #ifndef MAIN_H
 #define MAIN_H
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include <time.h>
 #include <sys/time.h>
 #include <sys/types.h>
 #define EP_CAN_EXPLODE_1X1     23
 #define EP_PUSHABLE            24
 
+/* values for pre-defined properties */
+#define EP_PLAYER              32
+#define EP_CAN_PASS_MAGIC_WALL 33
+#define EP_SWITCHABLE          34
+#define EP_BD_ELEMENT          35
+#define EP_SP_ELEMENT          36
+#define EP_SB_ELEMENT          37
+#define EP_GEM                 38
+#define EP_FOOD_DARK_YAMYAM    39
+#define EP_FOOD_PENGUIN                40
+#define EP_FOOD_PIG            41
+#define EP_HISTORIC_WALL       42
+#define EP_HISTORIC_SOLID      43
+#define EP_CLASSIC_ENEMY       44
+#define EP_BELT                        45
+#define EP_BELT_ACTIVE         46
+#define EP_BELT_SWITCH         47
+#define EP_TUBE                        48
+#define EP_KEYGATE             49
+#define EP_AMOEBOID            50
+#define EP_AMOEBALIVE          51
+#define EP_HAS_CONTENT         52
+#define EP_ACTIVE_BOMB         53
+#define EP_INACTIVE            54
+
 /* values for special configurable properties (depending on level settings) */
-#define EP_EM_SLIPPERY_WALL    32
+#define EP_EM_SLIPPERY_WALL    55
 
 /* values for special graphics properties (no effect on game engine) */
-#define EP_CAN_BE_CRUMBLED     33
-
-/* values for pre-defined properties */
-#define EP_PLAYER              34
-#define EP_CAN_PASS_MAGIC_WALL 35
-#define EP_SWITCHABLE          36
-#define EP_BD_ELEMENT          37
-#define EP_SP_ELEMENT          38
-#define EP_SB_ELEMENT          39
-#define EP_GEM                 40
-#define EP_FOOD_DARK_YAMYAM    41
-#define EP_FOOD_PENGUIN                42
-#define EP_FOOD_PIG            43
-#define EP_HISTORIC_WALL       44
-#define EP_HISTORIC_SOLID      45
-#define EP_CLASSIC_ENEMY       46
-#define EP_BELT                        47
-#define EP_BELT_ACTIVE         48
-#define EP_BELT_SWITCH         49
-#define EP_TUBE                        50
-#define EP_KEYGATE             51
-#define EP_AMOEBOID            52
-#define EP_AMOEBALIVE          53
-#define EP_HAS_CONTENT         54
-#define EP_ACTIVE_BOMB         55
-#define EP_INACTIVE            56
+#define EP_GFX_CRUMBLED                56
 
 /* values for derived properties (determined from properties above) */
 #define EP_ACCESSIBLE_OVER     57
                                  (CH_EVENT_VAR(e) &= ~CH_EVENT_BIT(c))) : 0)
 
 /* values for change sides for custom elements */
+#define CH_SIDE_NONE           MV_NO_MOVING
 #define CH_SIDE_LEFT           MV_LEFT
 #define CH_SIDE_RIGHT          MV_RIGHT
 #define CH_SIDE_TOP            MV_UP
 #define MV_BIT_ALONG_RIGHT_SIDE        7
 #define MV_BIT_TURNING_LEFT    8
 #define MV_BIT_TURNING_RIGHT   9
+#define MV_BIT_WHEN_PUSHED     10
 
 /* values for special move patterns for custom elements */
 #define MV_HORIZONTAL          (MV_LEFT | MV_RIGHT)
 #define MV_ALONG_RIGHT_SIDE    (1 << MV_BIT_ALONG_RIGHT_SIDE)
 #define MV_TURNING_LEFT                (1 << MV_BIT_TURNING_LEFT)
 #define MV_TURNING_RIGHT       (1 << MV_BIT_TURNING_RIGHT)
+#define MV_WHEN_PUSHED         (1 << MV_BIT_WHEN_PUSHED)
 
 /* values for slippery property for custom elements */
 #define SLIPPERY_ANY_RANDOM    0
 #define IS_EM_SLIPPERY_WALL(e) HAS_PROPERTY(e, EP_EM_SLIPPERY_WALL)
 
 /* macros for special graphics properties */
-#define CAN_BE_CRUMBLED(e)     HAS_PROPERTY(GFX_ELEMENT(e),EP_CAN_BE_CRUMBLED)
+#define GFX_CRUMBLED(e)                HAS_PROPERTY(GFX_ELEMENT(e), EP_GFX_CRUMBLED)
 
 /* macros for pre-defined properties */
 #define ELEM_IS_PLAYER(e)      HAS_PROPERTY(e, EP_PLAYER)
 #define FONT_TEXT_2                            13
 #define FONT_TEXT_3                            14
 #define FONT_TEXT_4                            15
-#define FONT_INPUT_1_ACTIVE                    16
-#define FONT_INPUT_2_ACTIVE                    17
-#define FONT_INPUT_1                           18
-#define FONT_INPUT_2                           19
-#define FONT_OPTION_OFF                                20
-#define FONT_OPTION_ON                         21
-#define FONT_VALUE_1                           22
-#define FONT_VALUE_2                           23
-#define FONT_VALUE_OLD                         24
-#define FONT_LEVEL_NUMBER                      25
-#define FONT_TAPE_RECORDER                     26
-#define FONT_GAME_INFO                         27
-
-#define NUM_FONTS                              28
+#define FONT_ENVELOPE_1                                16
+#define FONT_ENVELOPE_2                                17
+#define FONT_ENVELOPE_3                                18
+#define FONT_ENVELOPE_4                                19
+#define FONT_INPUT_1_ACTIVE                    20
+#define FONT_INPUT_2_ACTIVE                    21
+#define FONT_INPUT_1                           22
+#define FONT_INPUT_2                           23
+#define FONT_OPTION_OFF                                24
+#define FONT_OPTION_ON                         25
+#define FONT_VALUE_1                           26
+#define FONT_VALUE_2                           27
+#define FONT_VALUE_OLD                         28
+#define FONT_LEVEL_NUMBER                      29
+#define FONT_TAPE_RECORDER                     30
+#define FONT_GAME_INFO                         31
+
+#define NUM_FONTS                              32
 #define NUM_INITIAL_FONTS                      4
 
 /* values for game_status (must match special image configuration suffixes) */
 
 #define PROGRAM_VERSION_MAJOR  3
 #define PROGRAM_VERSION_MINOR  0
-#define PROGRAM_VERSION_PATCH  5
+#define PROGRAM_VERSION_PATCH  6
 #define PROGRAM_VERSION_RELEASE        0
-#define PROGRAM_VERSION_STRING "3.0.5"
+#define PROGRAM_VERSION_STRING "3.0.6"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
@@ -1100,11 +1104,6 @@ struct DoorInfo
   int anim_mode;
 };
 
-struct EnvelopeInfo
-{
-  int anim_mode;
-};
-
 struct HiScore
 {
   char Name[MAX_PLAYER_NAME_LEN + 1];
@@ -1247,7 +1246,7 @@ struct GameInfo
   int initial_move_delay;
   int initial_move_delay_value;
 
-  struct EnvelopeInfo envelope;
+  boolean envelope_active;
 
   /* variable within running game */
   int yamyam_content_nr;
@@ -1527,7 +1526,7 @@ extern struct TapeInfo            tape;
 extern struct GameInfo         game;
 extern struct GlobalInfo       global;
 extern struct MenuInfo         menu;
-extern struct DoorInfo         door;
+extern struct DoorInfo         door_1, door_2;
 extern struct ElementInfo      element_info[];
 extern struct ElementActionInfo        element_action_info[];
 extern struct ElementDirectionInfo element_direction_info[];