X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=17411f8d0464a4d685bcccfbc557ebdac97a5b9d;hb=69e8efac8d856859c55237e085ff8b514ae1aa3c;hp=801fb44bdbe31a55e9fce93a4cdd8fc10fcc9294;hpb=b59a0eedca464cba38e8a6bcfae54db32ac6b15e;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 801fb44b..17411f8d 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -125,12 +125,22 @@ #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 @@ -219,6 +229,8 @@ struct AudioSystemInfo boolean mods_available; boolean sound_enabled; + boolean sound_deactivated; /* for temporarily disabling sound */ + int soundserver_pipe[2]; int soundserver_pid; char *device_name; @@ -246,14 +258,6 @@ struct GfxInfo boolean draw_deactivation_mask; }; -struct ArtworkInfo -{ - char *custom_artwork; - char *custom_graphics; - char *custom_sounds; - char *custom_music; -}; - struct JoystickInfo { int status; @@ -313,13 +317,36 @@ struct SetupInfo 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 */ @@ -339,12 +366,26 @@ struct LevelDirInfo 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 */ +}; + +typedef struct TreeInfo TreeInfo; +typedef struct TreeInfo LevelDirTree; +typedef struct TreeInfo GraphicsDirTree; +typedef struct TreeInfo SoundsDirTree; +typedef struct TreeInfo MusicDirTree; - 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 */ +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; }; @@ -361,8 +402,8 @@ 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; @@ -426,6 +467,7 @@ inline boolean ChangeVideoModeIfNeeded(boolean); Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); +void ReloadCustomImage(Bitmap *, char *); inline void OpenAudio(void); inline void CloseAudio(void);