added support for MOD and MP3 music for Emscripten platform
[rocksndiamonds.git] / src / main.h
index 0a2ff1f6a8f1238f80a12358af7ae833d26e4b23..4f48f30bf6eb09277de195c4b4092fa44a51dd63 100644 (file)
 
 #define IS_OBSOLETE(e)         HAS_PROPERTY(e, EP_OBSOLETE)
 
+#define IS_EMPTY(e)            IS_EMPTY_SPACE(e)
+#define IS_EMPTY_ELEMENT(e)    IS_EMPTY_SPACE(e)
+
 // special macros used in game engine
 #define IS_FILE_ELEMENT(e)     ((e) >= 0 &&                            \
                                 (e) <= NUM_FILE_ELEMENTS)
 
 #define GET_PLAYER_NR(e)       (GET_PLAYER_ELEMENT(e) - EL_PLAYER_1)
 
+#define GET_EMPTY_ELEMENT(i)   ((i) == 0 ? EL_EMPTY_SPACE :            \
+                                EL_EMPTY_SPACE_1 + (i) - 1)
+
 #define ANIM_FRAMES(g)         (graphic_info[g].anim_frames)
 #define ANIM_DELAY(g)          (graphic_info[g].anim_delay)
 #define ANIM_MODE(g)           (graphic_info[g].anim_mode)
 #define IS_NEW_FRAME(f, g)     (IS_ANIMATED(g) && IS_NEW_DELAY(f, g))
 #define IS_NEXT_FRAME(f, g)    (IS_NEW_FRAME(f, g) && (f) > 0)
 
-#define IS_LOOP_SOUND(s)       (sound_info[s].loop)
-#define IS_LOOP_MUSIC(s)       (music_info[s].loop)
+#define IS_LOOP_SOUND(s)       ((s) >= 0 && sound_info[s].loop)
+#define IS_LOOP_MUSIC(s)       ((s) <  0 || music_info[s].loop)
 
 #define IS_SPECIAL_GFX_ARG(a)  ((a) >= 0 && (a) < NUM_SPECIAL_GFX_ARGS)
 
 #include "conf_emp.h"  // include auto-generated data structure definitions
 
 #define NUM_EMPTY_SPACE_ELEMENTS       16
+#define NUM_EMPTY_ELEMENTS_ALL         (NUM_EMPTY_SPACE_ELEMENTS + 1)
 #define EL_EMPTY_SPACE_END             1232
 // ---------- end of empty space elements section -----------------------------
 
@@ -2591,7 +2598,7 @@ enum
 // program information and versioning definitions
 #define PROGRAM_VERSION_SUPER          4
 #define PROGRAM_VERSION_MAJOR          3
-#define PROGRAM_VERSION_MINOR          1
+#define PROGRAM_VERSION_MINOR          2
 #define PROGRAM_VERSION_PATCH          0
 #define PROGRAM_VERSION_EXTRA          ""
 
@@ -2599,7 +2606,7 @@ enum
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
 #define PROGRAM_EMAIL_STRING           "info@artsoft.org"
 #define PROGRAM_WEBSITE_STRING         "https://www.artsoft.org/"
-#define PROGRAM_COPYRIGHT_STRING       "Copyright \xa9""1995-2021 by Holger Schemel"
+#define PROGRAM_COPYRIGHT_STRING       "Copyright \xa9""1995-2022 by Holger Schemel"
 #define PROGRAM_COMPANY_STRING         "A Game by Artsoft Entertainment"
 
 #define PROGRAM_ICON_FILENAME          "RocksIcon32x32.png"
@@ -3753,6 +3760,7 @@ extern int                        GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxRandomStatic[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int                     GfxElementEmpty[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxRedraw[MAX_LEV_FIELDX][MAX_LEV_FIELDY];