#define DEFAULT_KEY_OKAY KSYM_Return
#define DEFAULT_KEY_CANCEL KSYM_Escape
+/* default shortcut keys */
+#define DEFAULT_KEY_SAVE_GAME KSYM_F1
+#define DEFAULT_KEY_LOAD_GAME KSYM_F2
+
/* values for move directions */
#define MV_NO_MOVING 0
#define MV_LEFT (1 << 0)
#define MB_MENU_CHOICE FALSE
#define MB_MENU_MARK TRUE
#define MB_MENU_INITIALIZE (-1)
+#define MB_MENU_LEAVE (-2)
#define MB_LEFTBUTTON 1
#define MB_MIDDLEBUTTON 2
#define MB_RIGHTBUTTON 3
#define RW_BASE_PATH RW_GAME_DIR
#define GRAPHICS_DIRECTORY "graphics"
-#define MUSIC_DIRECTORY "music"
#define SOUNDS_DIRECTORY "sounds"
+#define MUSIC_DIRECTORY "music"
#define LEVELS_DIRECTORY "levels"
#define TAPES_DIRECTORY "tapes"
#define SCORES_DIRECTORY "scores"
+#if !defined(PLATFORM_MSDOS)
+#define GRAPHICS_SUBDIR "gfx_classic"
+#define SOUNDS_SUBDIR "snd_classic"
+#define MUSIC_SUBDIR "mus_classic"
+#else
+#define GRAPHICS_SUBDIR "gfx_orig"
+#define SOUNDS_SUBDIR "snd_orig"
+#define MUSIC_SUBDIR "mus_orig"
+#endif
+
/* areas in bitmap PIX_DOOR */
/* meaning in PIX_DB_DOOR: (3 PAGEs)
PAGEX1: 1. buffer for DOOR_1
char *msdos_pointer_filename;
char *cookie_prefix;
+ char *filename_prefix; /* prefix to cut off from DOS filenames */
int version_major;
int version_minor;
int vx, vy;
int vxsize, vysize;
+
+ boolean draw_deactivation_mask;
};
struct JoystickInfo
struct SetupKeyboardInfo key;
};
+struct SetupShortcutInfo
+{
+ Key save_game;
+ Key load_game;
+};
+
struct SetupInfo
{
char *player_name;
boolean handicap;
boolean time_limit;
boolean fullscreen;
+ boolean ask_on_escape;
+ char *graphics_set;
+ char *sounds_set;
+ char *music_set;
+
+ struct SetupShortcutInfo shortcut;
struct SetupInputInfo input[MAX_PLAYERS];
};
-struct LevelDirInfo
+#define TREE_TYPE_GENERIC 0
+#define TREE_TYPE_LEVEL_DIR 1
+#define TREE_TYPE_GRAPHICS_DIR 2
+#define TREE_TYPE_SOUNDS_DIR 3
+#define TREE_TYPE_MUSIC_DIR 4
+
+struct TreeInfo
{
+ struct TreeInfo **node_top; /* topmost node in tree */
+ struct TreeInfo *node_parent; /* parent level directory info */
+ struct TreeInfo *node_group; /* level group sub-directory info */
+ struct TreeInfo *next; /* next level series structure node */
+
+ int cl_first; /* internal control field for setup screen */
+ int cl_cursor; /* internal control field for setup screen */
+
+ int type; /* type of tree content */
+
+ /* fields for "type == TREE_TYPE_LEVEL_DIR" */
+
char *filename; /* level series single directory name */
char *fullpath; /* complete path relative to level directory */
char *basepath; /* absolute base path of level directory */
int color; /* color to use on selection screen for this level */
char *class_desc; /* description of level series class */
int handicap_level; /* number of the lowest unsolved level */
- int cl_first; /* internal control field for "choose level" screen */
- int cl_cursor; /* internal control field for "choose level" screen */
+};
- struct LevelDirInfo *node_parent; /* parent level directory info */
- struct LevelDirInfo *node_group; /* level group sub-directory info */
- struct LevelDirInfo *next; /* next level series structure node */
+typedef struct TreeInfo TreeInfo;
+typedef struct TreeInfo LevelDirTree;
+typedef struct TreeInfo GraphicsDirTree;
+typedef struct TreeInfo SoundsDirTree;
+typedef struct TreeInfo MusicDirTree;
+
+struct ArtworkInfo
+{
+ GraphicsDirTree *gfx_first;
+ GraphicsDirTree *gfx_current;
+ SoundsDirTree *snd_first;
+ SoundsDirTree *snd_current;
+ MusicDirTree *mus_first;
+ MusicDirTree *mus_current;
+
+ char *graphics_set_current;
+ char *sounds_set_current;
+ char *music_set_current;
};
extern struct VideoSystemInfo video;
extern struct AudioSystemInfo audio;
extern struct GfxInfo gfx;
+extern struct ArtworkInfo artwork;
extern struct JoystickInfo joystick;
extern struct SetupInfo setup;
-extern struct LevelDirInfo *leveldir_first;
-extern struct LevelDirInfo *leveldir_current;
+extern LevelDirTree *leveldir_first;
+extern LevelDirTree *leveldir_current;
extern int level_nr;
extern Display *display;
void ClosePlatformDependantStuff(void);
void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *,
- char *, int);
+ char *, char *, int);
void InitGfxFieldInfo(int, int, int, int, int, int, int, int);
void InitGfxDoor1Info(int, int, int, int);
void InitGfxDoor2Info(int, int, int, int);
void InitGfxScrollbufferInfo(int, int);
+void SetDrawDeactivationMask(int );
inline void InitVideoDisplay(void);
inline void CloseVideoDisplay(void);
inline boolean ChangeVideoModeIfNeeded(boolean);
Bitmap *LoadImage(char *);
+Bitmap *LoadCustomImage(char *);
+void ReloadCustomImage(Bitmap *, char *);
inline void OpenAudio(void);
inline void CloseAudio(void);