X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=6fa176b434bcdbbe1f4b76ab5102d555fbc7639d;hb=1786288765edb99711ec0eb06520969879d62cc2;hp=21068dbc417c8a3b2c47fdc94db895e337593957;hpb=b124c56f1cf069a6c77802919b1a9cbbedb77029;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 21068dbc..6fa176b4 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2002 Artsoft Entertainment * +* (c) 1994-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -90,7 +90,17 @@ #define MB_LEFTBUTTON 1 #define MB_MIDDLEBUTTON 2 #define MB_RIGHTBUTTON 3 - +#define MB_WHEEL_UP 4 +#define MB_WHEEL_DOWN 5 +#define MB_WHEEL_LEFT 6 +#define MB_WHEEL_RIGHT 7 +#define IS_WHEEL_BUTTON_VERTICAL(b) ((b) >= MB_WHEEL_UP && \ + (b) <= MB_WHEEL_DOWN) +#define IS_WHEEL_BUTTON_HORIZONTAL(b) ((b) >= MB_WHEEL_LEFT && \ + (b) <= MB_WHEEL_RIGHT) +#define IS_WHEEL_BUTTON(b) ((b) >= MB_WHEEL_UP && \ + (b) <= MB_WHEEL_DOWN) +#define DEFAULT_WHEEL_STEPS 3 /* values for move directions */ #define MV_BIT_LEFT 0 @@ -177,16 +187,28 @@ #define ANIM_RANDOM (1 << 4) #define ANIM_CE_VALUE (1 << 5) #define ANIM_CE_SCORE (1 << 6) -#define ANIM_REVERSE (1 << 7) -#define ANIM_OPAQUE_PLAYER (1 << 8) +#define ANIM_CE_DELAY (1 << 7) +#define ANIM_REVERSE (1 << 8) +#define ANIM_OPAQUE_PLAYER (1 << 9) /* values for special (non game element) animation modes */ -#define ANIM_HORIZONTAL (1 << 9) -#define ANIM_VERTICAL (1 << 10) -#define ANIM_STATIC_PANEL (1 << 11) +#define ANIM_HORIZONTAL (1 << 10) +#define ANIM_VERTICAL (1 << 11) +#define ANIM_CENTERED (1 << 12) +#define ANIM_STATIC_PANEL (1 << 13) #define ANIM_DEFAULT ANIM_LOOP +/* values for text alignment */ +#define ALIGN_LEFT (1 << 0) +#define ALIGN_RIGHT (1 << 1) +#define ALIGN_CENTER (1 << 2) + +#define ALIGN_DEFAULT ALIGN_LEFT + +#define ALIGNED_XPOS(x,w,a) ((a) == ALIGN_CENTER ? (x) - (w) / 2 : \ + (a) == ALIGN_RIGHT ? (x) - (w) : (x)) + /* values for redraw_mask */ #define REDRAW_NONE (0) #define REDRAW_ALL (1 << 0) @@ -332,6 +354,27 @@ #define SCOREFILE_EXTENSION "sco" #endif +#define ERROR_BASENAME "stderr.txt" + +#define CHAR_PATH_SEPARATOR_UNIX '/' +#define CHAR_PATH_SEPARATOR_DOS '\\' + +#define STRING_PATH_SEPARATOR_UNIX "/" +#define STRING_PATH_SEPARATOR_DOS "\\" + +#define STRING_NEWLINE_UNIX "\n" +#define STRING_NEWLINE_DOS "\r\n" + +#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS) +#define CHAR_PATH_SEPARATOR CHAR_PATH_SEPARATOR_DOS +#define STRING_PATH_SEPARATOR STRING_PATH_SEPARATOR_DOS +#define STRING_NEWLINE STRING_NEWLINE_DOS +#else +#define CHAR_PATH_SEPARATOR CHAR_PATH_SEPARATOR_UNIX +#define STRING_PATH_SEPARATOR STRING_PATH_SEPARATOR_UNIX +#define STRING_NEWLINE STRING_NEWLINE_UNIX +#endif + /* areas in bitmap PIX_DOOR */ /* meaning in PIX_DB_DOOR: (3 PAGEs) @@ -394,6 +437,21 @@ #define NUM_TREE_TYPES 4 +#define INFOTEXT_UNDEFINED "" +#define INFOTEXT_GRAPHICS_DIR "Custom Graphics" +#define INFOTEXT_SOUNDS_DIR "Custom Sounds" +#define INFOTEXT_MUSIC_DIR "Custom Music" +#define INFOTEXT_LEVEL_DIR "Level Sets" + +#define TREE_INFOTEXT(t) ((t) == TREE_TYPE_LEVEL_DIR ? \ + INFOTEXT_LEVEL_DIR : \ + (t) == TREE_TYPE_GRAPHICS_DIR ? \ + INFOTEXT_GRAPHICS_DIR : \ + (t) == TREE_TYPE_SOUNDS_DIR ? \ + INFOTEXT_SOUNDS_DIR : \ + (t) == TREE_TYPE_MUSIC_DIR ? \ + INFOTEXT_MUSIC_DIR : \ + INFOTEXT_UNDEFINED) /* values for artwork handling */ #define LEVELDIR_ARTWORK_SET_PTR(leveldir, type) \ @@ -494,7 +552,10 @@ struct ProgramInfo { 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 *userdata_subdir; /* personal user game data directory */ + char *userdata_subdir_unix; /* personal user game data directory (Unix) */ + char *userdata_path; /* resulting full path to game data directory */ char *program_title; char *window_title; @@ -502,11 +563,15 @@ struct ProgramInfo char *x11_icon_filename; char *x11_iconmask_filename; + char *sdl_icon_filename; char *msdos_cursor_filename; char *cookie_prefix; char *filename_prefix; /* prefix to cut off from DOS filenames */ + char *error_filename; /* filename where to write error messages to */ + FILE *error_file; /* (used instead of 'stderr' on some systems) */ + int version_major; int version_minor; int version_patch; @@ -535,12 +600,20 @@ struct OptionInfo boolean debug; }; +struct ScreenModeInfo +{ + int width, height; +}; + struct VideoSystemInfo { int default_depth; int width, height, depth; + boolean fullscreen_available; boolean fullscreen_enabled; + struct ScreenModeInfo *fullscreen_modes; + char *fullscreen_mode_current; }; struct AudioSystemInfo @@ -654,6 +727,9 @@ struct SetupEditorInfo boolean el_headlines; + boolean el_by_game; + boolean el_by_type; + boolean show_element_token; }; @@ -670,6 +746,7 @@ struct SetupEditorCascadeInfo boolean el_chars; boolean el_ce; boolean el_ge; + boolean el_ref; boolean el_user; boolean el_dynamic; }; @@ -703,7 +780,7 @@ struct SetupInfo boolean direct_draw; /* !double_buffering (redundant!) */ boolean scroll_delay; boolean soft_scrolling; - boolean fading; + boolean fade_screens; boolean autorecord; boolean show_titlescreen; boolean quick_doors; @@ -712,6 +789,7 @@ struct SetupInfo boolean skip_levels; boolean time_limit; boolean fullscreen; + char *fullscreen_mode; boolean ask_on_escape; boolean ask_on_escape_editor; boolean quick_switch; @@ -787,6 +865,8 @@ struct TreeInfo 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 */ + + char *infotext; /* optional text to describe the tree type (headline) */ }; typedef struct TreeInfo TreeInfo; @@ -910,6 +990,17 @@ struct ArtworkListInfo void (*free_artwork)(void *); /* destructor function */ }; +struct XY +{ + int x, y; +}; + +struct Rect +{ + int x, y; + int width, height; +}; + /* ========================================================================= */ /* exported variables */ @@ -951,7 +1042,7 @@ extern int FrameCounter; /* function definitions */ void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, - char *, char *, char *, int); + char *, char *, char *, char *, char *, int); void InitExitFunction(void (*exit_function)(int)); void InitPlatformDependentStuff(void); @@ -973,7 +1064,8 @@ Bitmap *CreateBitmapStruct(void); Bitmap *CreateBitmap(int, int, int); void FreeBitmap(Bitmap *); void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int); -void FadeScreen(Bitmap *bitmap, int, int, int); +void FadeRectangle(Bitmap *bitmap, int, int, int, int, int, int, int, + void (*draw_border_function)(void)); void FillRectangle(Bitmap *, int, int, int, int, Pixel); void ClearRectangle(Bitmap *, int, int, int, int); void ClearRectangleOnBackground(Bitmap *, int, int, int, int); @@ -1018,6 +1110,7 @@ void PeekEvent(Event *event); Key GetEventKey(KeyEvent *, boolean); KeyMod HandleKeyModState(Key, int); KeyMod GetKeyModState(); +KeyMod GetKeyModStateFromEvents(); boolean CheckCloseWindowEvent(ClientMessageEvent *); void InitJoysticks();