#define BUTTON_2 5
/* values for move directions and special "button" key bitmasks */
-#define MV_NO_MOVING 0
+#define MV_NONE 0
#define MV_LEFT (1 << MV_BIT_LEFT)
#define MV_RIGHT (1 << MV_BIT_RIGHT)
#define MV_UP (1 << MV_BIT_UP)
#define MV_VERTICAL (MV_UP | MV_DOWN)
#define MV_ALL_DIRECTIONS (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN)
#define MV_ANY_DIRECTION (MV_ALL_DIRECTIONS)
+#define MV_NO_DIRECTION (MV_NONE)
#define KEY_BUTTON_1 (1 << BUTTON_1)
#define KEY_BUTTON_2 (1 << BUTTON_2)
#define MV_DIR_OPPOSITE(x) ((x) == MV_LEFT ? MV_RIGHT : \
(x) == MV_RIGHT ? MV_LEFT : \
(x) == MV_UP ? MV_DOWN : \
- (x) == MV_DOWN ? MV_UP : MV_NO_MOVING)
+ (x) == MV_DOWN ? MV_UP : MV_NONE)
/* values for animation mode (frame order and direction) */
#define SETUP_FILENAME "setup.conf"
#define LEVELSETUP_FILENAME "levelsetup.conf"
#define EDITORSETUP_FILENAME "editorsetup.conf"
+#define EDITORCASCADE_FILENAME "editorcascade.conf"
#define HELPANIM_FILENAME "helpanim.conf"
#define HELPTEXT_FILENAME "helptext.conf"
#define LEVELINFO_FILENAME "levelinfo.conf"
#define SETUP_FILENAME "setup.cnf"
#define LEVELSETUP_FILENAME "lvlsetup.cnf"
#define EDITORSETUP_FILENAME "edsetup.cnf"
+#define EDITORCASCADE_FILENAME "edcascad.conf"
#define HELPANIM_FILENAME "helpanim.cnf"
#define HELPTEXT_FILENAME "helptext.cnf"
#define LEVELINFO_FILENAME "lvlinfo.cnf"
/* values for artwork handling */
+#define LEVELDIR_ARTWORK_SET_PTR(leveldir, type) \
+ ((type) == ARTWORK_TYPE_GRAPHICS ? \
+ &(leveldir)->graphics_set : \
+ (type) == ARTWORK_TYPE_SOUNDS ? \
+ &(leveldir)->sounds_set : \
+ &(leveldir)->music_set)
+
#define LEVELDIR_ARTWORK_SET(leveldir, type) \
((type) == ARTWORK_TYPE_GRAPHICS ? \
(leveldir)->graphics_set : \
(leveldir)->sounds_set : \
(leveldir)->music_set)
+#define LEVELDIR_ARTWORK_PATH_PTR(leveldir, type) \
+ ((type) == ARTWORK_TYPE_GRAPHICS ? \
+ &(leveldir)->graphics_path : \
+ (type) == ARTWORK_TYPE_SOUNDS ? \
+ &(leveldir)->sounds_path : \
+ &(leveldir)->music_path)
+
#define LEVELDIR_ARTWORK_PATH(leveldir, type) \
((type) == ARTWORK_TYPE_GRAPHICS ? \
(leveldir)->graphics_path : \
(artwork).snd_first : \
(artwork).mus_first)
+#define ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type) \
+ ((type) == ARTWORK_TYPE_GRAPHICS ? \
+ &(artwork).gfx_current_identifier : \
+ (type) == ARTWORK_TYPE_SOUNDS ? \
+ &(artwork).snd_current_identifier : \
+ &(artwork).mus_current_identifier)
+
#define ARTWORK_CURRENT_IDENTIFIER(artwork, type) \
((type) == ARTWORK_TYPE_GRAPHICS ? \
(artwork).gfx_current_identifier : \
struct ProgramInfo
{
- char *command_basename;
- char *userdata_directory;
+ char *command_basepath; /* directory that contains the program */
+ char *command_basename; /* base filename of the program binary */
+ char *userdata_directory; /* personal user data directory */
char *program_title;
char *window_title;
boolean el_dx_boulderdash;
boolean el_chars;
boolean el_custom;
- boolean el_custom_more;
boolean el_user_defined;
+ boolean el_dynamic;
boolean el_headlines;
};
+struct SetupEditorCascadeInfo
+{
+ boolean el_bd;
+ boolean el_em;
+ boolean el_emc;
+ boolean el_rnd;
+ boolean el_sb;
+ boolean el_sp;
+ boolean el_dc;
+ boolean el_dx;
+ boolean el_chars;
+ boolean el_ce;
+ boolean el_ge;
+ boolean el_user;
+ boolean el_generic;
+ boolean el_dynamic;
+};
+
struct SetupShortcutInfo
{
Key save_game;
boolean quick_doors;
boolean team_mode;
boolean handicap;
+ boolean skip_levels;
boolean time_limit;
boolean fullscreen;
boolean ask_on_escape;
boolean override_level_music;
struct SetupEditorInfo editor;
+ struct SetupEditorCascadeInfo editor_cascade;
struct SetupShortcutInfo shortcut;
struct SetupInputInfo input[MAX_PLAYERS];
struct SetupSystemInfo system;
boolean level_group; /* directory contains more level series directories */
boolean parent_link; /* entry links back to parent directory */
- boolean user_defined; /* user defined levels are stored in home directory */
+ boolean in_user_dir; /* user defined levels are stored in home directory */
+ boolean user_defined; /* levels in user directory and marked as "private" */
boolean readonly; /* readonly levels can not be changed with editor */
boolean handicap; /* level set has no handicap when set to "false" */
+ boolean skip_levels; /* levels can be skipped when set to "true" */
int color; /* color to use on selection screen for this level */
char *class_desc; /* description of level series class */
inline boolean DrawingOnBackground(int, int);
inline void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int,
int);
+inline void DrawSimpleBlackLine(Bitmap *, int, int, int, int);
inline void DrawSimpleWhiteLine(Bitmap *, int, int, int, int);
inline void DrawLines(Bitmap *, struct XY *, int, Pixel);
inline Pixel GetPixel(Bitmap *, int, int);
inline void InitEventFilter(EventFilter);
inline boolean PendingEvent(void);
inline void NextEvent(Event *event);
+inline void PeekEvent(Event *event);
inline Key GetEventKey(KeyEvent *, boolean);
inline KeyMod HandleKeyModState(Key, int);
inline KeyMod GetKeyModState();