fixed drag-and-drop support for SDL older than version 2.0.5
[rocksndiamonds.git] / src / libgame / system.h
index 5249adfcb599df787c497ba9aa6ba153949eedfb..afb90b7a159a37014a35a43e6f7801876bb2ab9e 100644 (file)
 #define SCREEN_KEYBOARD_POS(h)         ((h) / 2)
 #endif
 
+// values for drag-and-drop support (some parts not added before SDL 2.0.5)
+#if !SDL_VERSION_ATLEAST(2,0,5)
+#define SDL_DROPTEXT                   (SDL_DROPFILE + 1)
+#define SDL_DROPBEGIN                  (SDL_DROPFILE + 2)
+#define SDL_DROPCOMPLETE               (SDL_DROPFILE + 3)
+#endif
+
 // default input keys
 #define DEFAULT_KEY_LEFT               KSYM_Left
 #define DEFAULT_KEY_RIGHT              KSYM_Right
                                 &artwork.mus_first :                   \
                                 NULL)
 
+#define TREE_FIRST_NODE(t)     ((t) == TREE_TYPE_LEVEL_DIR ?           \
+                                leveldir_first :                       \
+                                (t) == TREE_TYPE_GRAPHICS_DIR ?        \
+                                artwork.gfx_first :                    \
+                                (t) == TREE_TYPE_SOUNDS_DIR ?          \
+                                artwork.snd_first :                    \
+                                (t) == TREE_TYPE_MUSIC_DIR ?           \
+                                artwork.mus_first :                    \
+                                NULL)
+
 // values for artwork handling
 #define LEVELDIR_ARTWORK_SET_PTR(leveldir, type)                       \
                                ((type) == ARTWORK_TYPE_GRAPHICS ?      \
                                 (type) == ARTWORK_TYPE_MUSIC ?         \
                                 getUserMusicDir() : "")
 
+#define ARTWORK_DEFAULT_SUBDIR(type)                                   \
+                               ((type) == ARTWORK_TYPE_GRAPHICS ?      \
+                                GFX_DEFAULT_SUBDIR :                   \
+                                (type) == ARTWORK_TYPE_SOUNDS ?        \
+                                SND_DEFAULT_SUBDIR :                   \
+                                MUS_DEFAULT_SUBDIR)
+
 #define UPDATE_BUSY_STATE()                    \
 {                                              \
   if (gfx.draw_busy_anim_function != NULL)     \
@@ -1268,6 +1292,17 @@ struct SetupInternalInfo
 
   boolean choose_from_top_leveldir;
   boolean show_scaling_in_title;
+
+  boolean menu_game;
+  boolean menu_editor;
+  boolean menu_graphics;
+  boolean menu_sound;
+  boolean menu_artwork;
+  boolean menu_input;
+  boolean menu_touch;
+  boolean menu_shortcuts;
+  boolean menu_exit;
+  boolean menu_save_and_exit;
 };
 
 struct SetupDebugInfo
@@ -1621,6 +1656,8 @@ struct TextPosInfo
   int tile_size;               // special case for list of network players
   int border_size;             // special case for list of preview players
   int vertical;                        // special case for list of preview players
+
+  boolean redefined;           // redefined by custom artwork
 };
 
 struct MouseActionInfo