projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20030404-4-src
[rocksndiamonds.git]
/
src
/
libgame
/
system.h
diff --git
a/src/libgame/system.h
b/src/libgame/system.h
index a08edfc63a3719c2d05f6e1093028410e7066f0d..c8afb2de3187d3aed2f8236c1447a1cbbfa6c61e 100644
(file)
--- a/
src/libgame/system.h
+++ b/
src/libgame/system.h
@@
-17,7
+17,12
@@
#include "platform.h"
#include "types.h"
#include "platform.h"
#include "types.h"
-#if defined(PLATFORM_MSDOS)
+
+#if defined(PLATFORM_MACOSX)
+#include "macosx.h"
+#elif defined(PLATFORM_WIN32)
+#include "windows.h"
+#elif defined(PLATFORM_MSDOS)
#include "msdos.h"
#endif
#include "msdos.h"
#endif
@@
-27,14
+32,6
@@
#include "x11.h"
#endif
#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"
/* the additional 'b' is needed for Win32 to open files in binary mode */
#define MODE_READ "rb"
@@
-43,6
+40,9
@@
#define DEFAULT_DEPTH 0
#define DEFAULT_DEPTH 0
+#define BLIT_OPAQUE 0
+#define BLIT_MASKED 1
+
#define FULLSCREEN_NOT_AVAILABLE FALSE
#define FULLSCREEN_AVAILABLE TRUE
#define FULLSCREEN_NOT_AVAILABLE FALSE
#define FULLSCREEN_AVAILABLE TRUE
@@
-66,6
+66,7
@@
#define DEFAULT_KEY_LOAD_GAME KSYM_F2
#define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space
#define DEFAULT_KEY_LOAD_GAME KSYM_F2
#define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space
+
/* values for move directions and special "button" keys */
#define MV_BIT_LEFT 0
#define MV_BIT_RIGHT 1
/* values for move directions and special "button" keys */
#define MV_BIT_LEFT 0
#define MV_BIT_RIGHT 1
@@
-88,6
+89,7
@@
(x) == MV_RIGHT ? MV_BIT_RIGHT : \
(x) == MV_UP ? MV_BIT_UP : MV_BIT_DOWN)
(x) == MV_RIGHT ? MV_BIT_RIGHT : \
(x) == MV_UP ? MV_BIT_UP : MV_BIT_DOWN)
+
/* values for button status */
#define MB_NOT_PRESSED FALSE
#define MB_NOT_RELEASED TRUE
/* values for button status */
#define MB_NOT_PRESSED FALSE
#define MB_NOT_RELEASED TRUE
@@
-101,6
+103,17
@@
#define MB_MIDDLEBUTTON 2
#define MB_RIGHTBUTTON 3
#define MB_MIDDLEBUTTON 2
#define MB_RIGHTBUTTON 3
+
+/* values for animation mode (frame order and direction) */
+#define ANIM_NONE 0
+#define ANIM_LOOP (1 << 0)
+#define ANIM_LINEAR (1 << 1)
+#define ANIM_PINGPONG (1 << 2)
+#define ANIM_PINGPONG2 (1 << 3)
+#define ANIM_RANDOM (1 << 4)
+#define ANIM_REVERSE (1 << 5)
+
+
/* values for redraw_mask */
#define REDRAW_NONE (0)
#define REDRAW_ALL (1 << 0)
/* values for redraw_mask */
#define REDRAW_NONE (0)
#define REDRAW_ALL (1 << 0)
@@
-126,6
+139,15
@@
#define REDRAW_FPS (1 << 11)
#define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2)
#define REDRAW_FPS (1 << 11)
#define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2)
+
+/* values for mouse cursor */
+#define CURSOR_DEFAULT 0
+#define CURSOR_PLAYFIELD 1
+
+#define CURSOR_MAX_WIDTH 32
+#define CURSOR_MAX_HEIGHT 32
+
+
/* maximum number of parallel players supported by libgame functions */
#define MAX_PLAYERS 4
/* maximum number of parallel players supported by libgame functions */
#define MAX_PLAYERS 4
@@
-147,6
+169,9
@@
/* default value for undefined filename */
#define UNDEFINED_FILENAME "[NONE]"
/* default value for undefined filename */
#define UNDEFINED_FILENAME "[NONE]"
+/* default value for undefined parameter */
+#define ARG_DEFAULT "[DEFAULT]"
+
/* default values for undefined configuration file parameters */
#define ARG_UNDEFINED "-1000000"
#define ARG_UNDEFINED_VALUE (atoi(ARG_UNDEFINED))
/* default values for undefined configuration file parameters */
#define ARG_UNDEFINED "-1000000"
#define ARG_UNDEFINED_VALUE (atoi(ARG_UNDEFINED))
@@
-206,9
+231,13
@@
#define VERSION_PATCH(x) ((x) % 100)
/* functions for parent/child process identification */
#define VERSION_PATCH(x) ((x) % 100)
/* functions for parent/child process identification */
-#define IS_PARENT_PROCESS(pid) ((pid) > 0 || (pid) == -1)
-#define IS_CHILD_PROCESS(pid) ((pid) == 0)
-
+#if defined(PLATFORM_UNIX)
+#define IS_PARENT_PROCESS() (audio.mixer_pid != getpid())
+#define IS_CHILD_PROCESS() (audio.mixer_pid == getpid())
+#else
+#define IS_PARENT_PROCESS() TRUE
+#define IS_CHILD_PROCESS() FALSE
+#endif
/* type definitions */
typedef int (*EventFilter)(const Event *);
/* type definitions */
typedef int (*EventFilter)(const Event *);
@@
-227,7
+256,7
@@
struct ProgramInfo
char *x11_icon_filename;
char *x11_iconmask_filename;
char *x11_icon_filename;
char *x11_iconmask_filename;
- char *msdos_
pointe
r_filename;
+ char *msdos_
curso
r_filename;
char *cookie_prefix;
char *filename_prefix; /* prefix to cut off from DOS filenames */
char *cookie_prefix;
char *filename_prefix; /* prefix to cut off from DOS filenames */
@@
-286,6
+315,18
@@
struct AudioSystemInfo
int first_sound_channel;
};
int first_sound_channel;
};
+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 */
+
+#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
+ Pixmap *clip_mask; /* single-char-only clip mask array for X11 */
+#endif
+};
+
struct GfxInfo
{
int sx, sy;
struct GfxInfo
{
int sx, sy;
@@
-303,22
+344,17
@@
struct GfxInfo
int draw_deactivation_mask;
int draw_background_mask;
int draw_deactivation_mask;
int draw_background_mask;
+ Bitmap *field_save_buffer;
+
Bitmap *background_bitmap;
int background_bitmap_mask;
Bitmap *background_bitmap;
int background_bitmap_mask;
-};
-struct FontInfo
-{
- Bitmap *bitmap_initial;
- Bitmap *bitmap_big;
- Bitmap *bitmap_medium;
- Bitmap *bitmap_small;
- Bitmap *bitmap_tile;
-};
+ int num_fonts;
+ struct FontBitmapInfo *font_bitmap_info;
+ int (*select_font_function)(int);
+ Pixel inverse_text_color;
-struct AnimInfo
-{
- int random_frame;
+ int anim_random_frame;
};
struct JoystickInfo
};
struct JoystickInfo
@@
-327,6
+363,15
@@
struct JoystickInfo
int fd[MAX_PLAYERS]; /* file descriptor of player's joystick */
};
int fd[MAX_PLAYERS]; /* file descriptor of player's joystick */
};
+struct MouseCursorInfo
+{
+ int width, height;
+ int hot_x, hot_y;
+
+ char data[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8];
+ char mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8];
+};
+
struct SetupJoystickInfo
{
char *device_name; /* device name of player's joystick */
struct SetupJoystickInfo
{
char *device_name; /* device name of player's joystick */
@@
-374,6
+419,12
@@
struct SetupShortcutInfo
Key toggle_pause;
};
Key toggle_pause;
};
+struct SetupSystemInfo
+{
+ char *sdl_audiodriver;
+ int audio_fragment_size;
+};
+
struct SetupInfo
{
char *player_name;
struct SetupInfo
{
char *player_name;
@@
-406,6
+457,8
@@
struct SetupInfo
struct SetupEditorInfo editor;
struct SetupShortcutInfo shortcut;
struct SetupInputInfo input[MAX_PLAYERS];
struct SetupEditorInfo editor;
struct SetupShortcutInfo shortcut;
struct SetupInputInfo input[MAX_PLAYERS];
+ struct SetupSystemInfo system;
+ struct OptionInfo options;
};
#define TREE_TYPE_GENERIC 0
};
#define TREE_TYPE_GENERIC 0
@@
-498,8
+551,10
@@
struct FileInfo
char *default_filename;
char *filename;
char *default_filename;
char *filename;
- int *default_parameter; /* array of file parameters */
- int *parameter; /* array of file parameters */
+ char **default_parameter; /* array of file parameters */
+ char **parameter; /* array of file parameters */
+
+ boolean redefined;
};
struct SetupFileList
};
struct SetupFileList
@@
-521,6
+576,7
@@
struct PropertyMapping
int base_index;
int ext1_index;
int ext2_index;
int base_index;
int ext1_index;
int ext2_index;
+ int ext3_index;
int artwork_index;
};
int artwork_index;
};
@@
-531,24
+587,25
@@
struct ArtworkListInfo
int num_file_list_entries;
int num_dynamic_file_list_entries;
int num_file_list_entries;
int num_dynamic_file_list_entries;
-
struct FileInfo *file_list; /* static artwork file array */
struct FileInfo *dynamic_file_list; /* dynamic artwrk file array */
int num_suffix_list_entries;
struct FileInfo *file_list; /* static artwork file array */
struct FileInfo *dynamic_file_list; /* dynamic artwrk file array */
int num_suffix_list_entries;
-
struct ConfigInfo *suffix_list; /* parameter suffixes array */
int num_base_prefixes;
int num_ext1_suffixes;
int num_ext2_suffixes;
struct ConfigInfo *suffix_list; /* parameter suffixes array */
int num_base_prefixes;
int num_ext1_suffixes;
int num_ext2_suffixes;
-
+ int num_ext3_suffixes;
char **base_prefixes; /* base token prefixes array */
char **ext1_suffixes; /* property suffixes array 1 */
char **ext2_suffixes; /* property suffixes array 2 */
char **base_prefixes; /* base token prefixes array */
char **ext1_suffixes; /* property suffixes array 1 */
char **ext2_suffixes; /* property suffixes array 2 */
+ char **ext3_suffixes; /* property suffixes array 3 */
- int num_property_mapping_entries;
+ int num_ignore_tokens;
+ char **ignore_tokens; /* file tokens to be ignored */
+ int num_property_mapping_entries;
struct PropertyMapping *property_mapping; /* mapping token -> artwork */
int sizeof_artwork_list_entry;
struct PropertyMapping *property_mapping; /* mapping token -> artwork */
int sizeof_artwork_list_entry;
@@
-571,7
+628,6
@@
extern struct OptionInfo options;
extern struct VideoSystemInfo video;
extern struct AudioSystemInfo audio;
extern struct GfxInfo gfx;
extern struct VideoSystemInfo video;
extern struct AudioSystemInfo audio;
extern struct GfxInfo gfx;
-extern struct FontInfo font;
extern struct AnimInfo anim;
extern struct ArtworkInfo artwork;
extern struct JoystickInfo joystick;
extern struct AnimInfo anim;
extern struct ArtworkInfo artwork;
extern struct JoystickInfo joystick;
@@
-601,15
+657,14
@@
extern int FrameCounter;
/* function definitions */
/* function definitions */
-void InitCommandName(char *);
+void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *,
+ char *, char *, char *, int);
+
void InitExitFunction(void (*exit_function)(int));
void InitPlatformDependantStuff(void);
void ClosePlatformDependantStuff(void);
void InitExitFunction(void (*exit_function)(int));
void InitPlatformDependantStuff(void);
void ClosePlatformDependantStuff(void);
-void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *,
- char *, char *, int);
-
-void InitGfxFieldInfo(int, int, int, int, int, int, int, int);
+void InitGfxFieldInfo(int, int, int, int, int, int, int, int, Bitmap *);
void InitGfxDoor1Info(int, int, int, int);
void InitGfxDoor2Info(int, int, int, int);
void InitGfxScrollbufferInfo(int, int);
void InitGfxDoor1Info(int, int, int, int);
void InitGfxDoor2Info(int, int, int, int);
void InitGfxScrollbufferInfo(int, int);
@@
-625,6
+680,7
@@
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 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 ClearRectangle(Bitmap *, int, int, int, int);
inline void ClearRectangleOnBackground(Bitmap *, int, int, int, int);
inline void SetClipMask(Bitmap *, GC, Pixmap);
@@
-651,6
+707,11
@@
Bitmap *LoadImage(char *);
Bitmap *LoadCustomImage(char *);
void ReloadCustomImage(Bitmap *, char *);
Bitmap *LoadCustomImage(char *);
void ReloadCustomImage(Bitmap *, char *);
+Bitmap *ZoomBitmap(Bitmap *, int, int);
+void CreateBitmapWithSmallBitmaps(Bitmap *);
+
+void SetMouseCursor(int);
+
inline void OpenAudio(void);
inline void CloseAudio(void);
inline void SetAudioMode(boolean);
inline void OpenAudio(void);
inline void CloseAudio(void);
inline void SetAudioMode(boolean);