X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=743a8b9bfd013d47940fce121c5fe20edd431f97;hb=16f7940a92e1df1d463bd34f7f178395e37e4a27;hp=ac01255a687e6296206cfa2b04b440f0b37b33ae;hpb=335f4db8f7a8bea9b06eeea911b6d1e1d4de4623;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index ac01255a..743a8b9b 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2001 Artsoft Entertainment * +* (c) 1994-2002 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -27,6 +27,14 @@ #include "x11.h" #endif +#if defined(PLATFORM_MACOSX) +/* some symbols are already defined on Mac OS X */ +#define Delay Delay_internal +#define DrawLine DrawLine_internal +#define DrawText DrawText_internal +#define GetPixel GetPixel_internal +#endif + /* the additional 'b' is needed for Win32 to open files in binary mode */ #define MODE_READ "rb" @@ -43,21 +51,32 @@ #define DEFAULT_KEY_RIGHT KSYM_Right #define DEFAULT_KEY_UP KSYM_Up #define DEFAULT_KEY_DOWN KSYM_Down +#if defined(PLATFORM_MACOSX) +#define DEFAULT_KEY_SNAP KSYM_Control_L +#define DEFAULT_KEY_BOMB KSYM_KP_Enter +#else #define DEFAULT_KEY_SNAP KSYM_Shift_L #define DEFAULT_KEY_BOMB KSYM_Shift_R +#endif #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 +#define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space -/* values for move directions */ +/* values for move directions and special "button" keys */ #define MV_NO_MOVING 0 #define MV_LEFT (1 << 0) #define MV_RIGHT (1 << 1) #define MV_UP (1 << 2) #define MV_DOWN (1 << 3) +#define KEY_BUTTON_1 (1 << 4) +#define KEY_BUTTON_2 (1 << 5) +#define KEY_MOTION (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN) +#define KEY_BUTTON (KEY_BUTTON_1 | KEY_BUTTON_2) +#define KEY_ACTION (KEY_MOTION | KEY_BUTTON) /* values for button status */ #define MB_NOT_PRESSED FALSE @@ -109,6 +128,9 @@ /* default name for unknown player names */ #define ANONYMOUS_NAME "anonymous" +/* default text for non-existant artwork */ +#define NOT_AVAILABLE "(not available)" + /* default name for new levels */ #define NAMELESS_LEVEL_NAME "nameless level" @@ -125,12 +147,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 @@ -156,6 +188,10 @@ #define VERSION_MINOR(x) (((x) % 10000) / 100) #define VERSION_PATCH(x) ((x) % 100) +/* functions for parent/child process identification */ +#define IS_PARENT_PROCESS(pid) ((pid) > 0) +#define IS_CHILD_PROCESS(pid) ((pid) == 0) + /* type definitions */ typedef int (*EventFilter)(const Event *); @@ -201,6 +237,7 @@ struct OptionInfo boolean network; boolean verbose; boolean debug; + char *debug_command; }; struct VideoSystemInfo @@ -214,19 +251,20 @@ struct VideoSystemInfo struct AudioSystemInfo { boolean sound_available; - boolean music_available; boolean loops_available; - boolean mods_available; + boolean music_available; + boolean sound_enabled; + boolean sound_deactivated; /* for temporarily disabling sound */ - int soundserver_pipe[2]; - int soundserver_pid; + int mixer_pipe[2]; + int mixer_pid; char *device_name; int device_fd; - int channels; + int num_channels; int music_channel; - int music_nr; + int first_sound_channel; }; struct GfxInfo @@ -283,6 +321,7 @@ struct SetupShortcutInfo { Key save_game; Key load_game; + Key toggle_pause; }; struct SetupInfo @@ -305,6 +344,14 @@ struct SetupInfo boolean handicap; boolean time_limit; boolean fullscreen; + boolean ask_on_escape; + + char *graphics_set; + char *sounds_set; + char *music_set; + boolean override_level_graphics; + boolean override_level_sounds; + boolean override_level_music; struct SetupShortcutInfo shortcut; struct SetupInputInfo input[MAX_PLAYERS]; @@ -353,6 +400,7 @@ struct TreeInfo typedef struct TreeInfo TreeInfo; typedef struct TreeInfo LevelDirTree; +typedef struct TreeInfo ArtworkDirTree; typedef struct TreeInfo GraphicsDirTree; typedef struct TreeInfo SoundsDirTree; typedef struct TreeInfo MusicDirTree; @@ -365,6 +413,10 @@ struct ArtworkInfo SoundsDirTree *snd_current; MusicDirTree *mus_first; MusicDirTree *mus_current; + + char *graphics_set_current_name; + char *sounds_set_current_name; + char *music_set_current_name; }; @@ -446,6 +498,7 @@ inline boolean ChangeVideoModeIfNeeded(boolean); Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); +void ReloadCustomImage(Bitmap *, char *); inline void OpenAudio(void); inline void CloseAudio(void);