X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=74917b2141ad0caf5df4a9fa675144b86e5893c6;hb=8e17da8cdff134bfa0e766a50f408a3c06428f54;hp=4901a874c5d918e48224f0ed18a452730fbd96e4;hpb=b640b9d7647df4cbba0e530f6f4bcece384048e4;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 4901a874..74917b21 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -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,13 +187,14 @@ #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_STATIC_PANEL (1 << 12) #define ANIM_DEFAULT ANIM_LOOP @@ -212,6 +223,10 @@ #define REDRAW_FPS (1 << 11) #define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2) +#define FADE_MODE_FADE_IN 0 +#define FADE_MODE_FADE_OUT 1 +#define FADE_MODE_CROSSFADE 2 + #define IN_GFX_SCREEN(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \ y >= gfx.sy && y < gfx.sy + gfx.sysize) #define IN_GFX_DOOR(x, y) (x >= gfx.dx && x < gfx.dx + gfx.dxsize && \ @@ -277,8 +292,6 @@ #define RW_BASE_PATH RW_GAME_DIR /* directory names */ -#define GRAPHICS_ECS_DIRECTORY "graphics.ecs" -#define GRAPHICS_AGA_DIRECTORY "graphics.aga" #define GRAPHICS_DIRECTORY "graphics" #define SOUNDS_DIRECTORY "sounds" #define MUSIC_DIRECTORY "music" @@ -330,6 +343,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) @@ -492,7 +526,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; @@ -505,6 +542,9 @@ struct ProgramInfo 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; @@ -563,9 +603,13 @@ struct AudioSystemInfo struct FontBitmapInfo { Bitmap *bitmap; + int src_x, src_y; /* start position of animation frames */ int width, height; /* width/height of each animation frame */ - int draw_x, draw_y; /* offset for drawing font characters */ + + int draw_xoffset; /* offset for drawing font characters */ + int draw_yoffset; /* offset for drawing font characters */ + int num_chars; int num_chars_per_line; @@ -647,6 +691,11 @@ struct SetupEditorInfo boolean el_dynamic; boolean el_headlines; + + boolean el_by_game; + boolean el_by_type; + + boolean show_element_token; }; struct SetupEditorCascadeInfo @@ -662,6 +711,7 @@ struct SetupEditorCascadeInfo boolean el_chars; boolean el_ce; boolean el_ge; + boolean el_ref; boolean el_user; boolean el_dynamic; }; @@ -697,6 +747,7 @@ struct SetupInfo boolean soft_scrolling; boolean fading; boolean autorecord; + boolean show_titlescreen; boolean quick_doors; boolean team_mode; boolean handicap; @@ -748,8 +799,8 @@ struct TreeInfo char *imported_from; /* optional comment for imported levels or artwork */ char *imported_by; /* optional comment for imported levels or artwork */ - char *graphics_ecs_set; /* special EMC custom graphics set (ECS graphics) */ - char *graphics_aga_set; /* special EMC custom graphics set (AGA graphics) */ + char *graphics_set_ecs; /* special EMC custom graphics set (ECS graphics) */ + char *graphics_set_aga; /* special EMC custom graphics set (AGA graphics) */ char *graphics_set; /* optional custom graphics set (level tree only) */ char *sounds_set; /* optional custom sounds set (level tree only) */ char *music_set; /* optional custom music set (level tree only) */ @@ -942,7 +993,7 @@ extern int FrameCounter; /* function definitions */ void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, - char *, char *, char *, int); + char *, char *, char *, char *, int); void InitExitFunction(void (*exit_function)(int)); void InitPlatformDependentStuff(void); @@ -957,36 +1008,36 @@ void SetDrawBackgroundMask(int); void SetMainBackgroundBitmap(Bitmap *); void SetDoorBackgroundBitmap(Bitmap *); -inline void InitVideoDisplay(void); -inline void CloseVideoDisplay(void); -inline void InitVideoBuffer(DrawBuffer **,DrawWindow **, int,int,int, boolean); -inline Bitmap *CreateBitmapStruct(void); -inline Bitmap *CreateBitmap(int, int, int); -inline void FreeBitmap(Bitmap *); -inline void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int); -inline void FillRectangle(Bitmap *, int, int, int, int, Pixel); -inline void ClearRectangle(Bitmap *, int, int, int, int); -inline void ClearRectangleOnBackground(Bitmap *, int, int, int, int); -inline void SetClipMask(Bitmap *, GC, Pixmap); -inline void SetClipOrigin(Bitmap *, GC, int, int); -inline void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); -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 Pixel GetPixelFromRGB(Bitmap *, unsigned int,unsigned int,unsigned int); -inline Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int); - -inline void FlushDisplay(void); -inline void SyncDisplay(void); -inline void KeyboardAutoRepeatOn(void); -inline void KeyboardAutoRepeatOff(void); -inline boolean PointerInWindow(DrawWindow *); -inline boolean SetVideoMode(boolean); -inline boolean ChangeVideoModeIfNeeded(boolean); +void InitVideoDisplay(void); +void CloseVideoDisplay(void); +void InitVideoBuffer(DrawBuffer **,DrawWindow **, int,int,int, boolean); +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 FillRectangle(Bitmap *, int, int, int, int, Pixel); +void ClearRectangle(Bitmap *, int, int, int, int); +void ClearRectangleOnBackground(Bitmap *, int, int, int, int); +void SetClipMask(Bitmap *, GC, Pixmap); +void SetClipOrigin(Bitmap *, GC, int, int); +void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); +boolean DrawingOnBackground(int, int); +void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, int); +void DrawSimpleBlackLine(Bitmap *, int, int, int, int); +void DrawSimpleWhiteLine(Bitmap *, int, int, int, int); +void DrawLines(Bitmap *, struct XY *, int, Pixel); +Pixel GetPixel(Bitmap *, int, int); +Pixel GetPixelFromRGB(Bitmap *, unsigned int,unsigned int,unsigned int); +Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int); + +void FlushDisplay(void); +void SyncDisplay(void); +void KeyboardAutoRepeatOn(void); +void KeyboardAutoRepeatOff(void); +boolean PointerInWindow(DrawWindow *); +boolean SetVideoMode(boolean); +boolean ChangeVideoModeIfNeeded(boolean); Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); @@ -994,23 +1045,24 @@ void ReloadCustomImage(Bitmap *, char *); Bitmap *ZoomBitmap(Bitmap *, int, int); void CreateBitmapWithSmallBitmaps(Bitmap *, int); +void ScaleBitmap(Bitmap *, int); void SetMouseCursor(int); -inline void OpenAudio(void); -inline void CloseAudio(void); -inline void SetAudioMode(boolean); - -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(); -inline boolean CheckCloseWindowEvent(ClientMessageEvent *); - -inline void InitJoysticks(); -inline boolean ReadJoystick(int, int *, int *, boolean *, boolean *); +void OpenAudio(void); +void CloseAudio(void); +void SetAudioMode(boolean); + +void InitEventFilter(EventFilter); +boolean PendingEvent(void); +void NextEvent(Event *event); +void PeekEvent(Event *event); +Key GetEventKey(KeyEvent *, boolean); +KeyMod HandleKeyModState(Key, int); +KeyMod GetKeyModState(); +boolean CheckCloseWindowEvent(ClientMessageEvent *); + +void InitJoysticks(); +boolean ReadJoystick(int, int *, int *, boolean *, boolean *); #endif /* SYSTEM_H */