#define DEBUG_TIMING 0
#endif
-typedef unsigned char boolean;
-typedef unsigned char byte;
-
-#include "system.h"
+#if 0
+#include "libgame/libgame.h"
+#endif
#ifndef FALSE
#define FALSE 0
#define WIN_XSIZE 672
#define WIN_YSIZE 560
#define WIN_SDL_DEPTH 16 /* !!! change this !!! */
-#ifndef MSDOS
+
+#if !defined(PLATFORM_MSDOS)
#define WIN_XPOS 0
#define WIN_YPOS 0
-#else /* MSDOS */
+#else
#define WIN_XPOS ((XRES - WIN_XSIZE) / 2)
#define WIN_YPOS ((YRES - WIN_YSIZE) / 2)
-#endif /* MSDOS */
+#endif
+
#define SCR_FIELDX 17
#define SCR_FIELDY 17
#define MAX_BUF_XSIZE (SCR_FIELDX + 2)
#define MAX_PLAYERS 4
+#if 0
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef SIGN
#define SIGN(a) ((a) < 0 ? -1 : ((a)>0 ? 1 : 0))
#endif
+#endif
#define SCREENX(a) ((a) - scroll_x)
#define SCREENY(a) ((a) - scroll_y)
#define PIX_SMALLFONT 8
#define PIX_MEDIUMFONT 9
/* Bitmaps without graphic file */
-#define PIX_DB_BACK 10
-#define PIX_DB_DOOR 11
-#define PIX_DB_FIELD 12
+#define PIX_DB_DOOR 10
+#define PIX_DB_FIELD 11
#define NUM_PICTURES 10
-#define NUM_BITMAPS 13
+#define NUM_BITMAPS 12
/* boundaries of arrays etc. */
#define MAX_PLAYER_NAME_LEN 10
#define GAME_FRAME_DELAY 20 /* frame delay in milliseconds */
#define FFWD_FRAME_DELAY 10 /* 200% speed for fast forward */
#define FRAMES_PER_SECOND (1000 / GAME_FRAME_DELAY)
+#if 0
#define GADGET_FRAME_DELAY 150 /* delay between gadget actions */
+#endif
#define MICROLEVEL_SCROLL_DELAY 50 /* delay for scrolling micro level */
#define MICROLEVEL_LABEL_DELAY 250 /* delay for micro level label */
int Score;
};
-struct OptionInfo
-{
- char *display_name;
- char *server_host;
- int server_port;
- char *ro_base_directory;
- char *rw_base_directory;
- char *level_directory;
- boolean serveronly;
- boolean network;
- boolean verbose;
-};
-
struct SetupJoystickInfo
{
char *device_name;
boolean team_mode;
boolean handicap;
boolean time_limit;
+ boolean fullscreen;
struct SetupInputInfo input[MAX_PLAYERS];
};
boolean gravity;
};
-struct LevelDirInfo
-{
- char *filename; /* level series single directory name */
- char *fullpath; /* complete path relative to level directory */
- char *basepath; /* absolute base path of level directory */
- char *name; /* level series name, as displayed on main screen */
- char *name_short; /* optional short name for level selection screen */
- char *name_sorting; /* optional sorting name for correct level sorting */
- char *author; /* level series author name levels without author */
- char *imported_from; /* optional comment for imported level series */
- int levels; /* number of levels in level series */
- int first_level; /* first level number (to allow start with 0 or 1) */
- int last_level; /* last level number (automatically calculated) */
- int sort_priority; /* sort levels by 'sort_priority' and then by name */
- boolean level_group; /* directory contains more level series directories */
- boolean parent_link; /* entry links back to parent directory */
- boolean user_defined; /* user defined levels are stored in home directory */
- boolean readonly; /* readonly levels can not be changed with editor */
- 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 */
-
- 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 TapeInfo
{
int level_nr;
struct GlobalInfo
{
- int dummy;
+ float frames_per_second;
+ boolean fps_slowdown;
+ int fps_slowdown_factor;
};
-extern Display *display;
-extern Visual *visual;
-extern int screen;
+#if 0
extern DrawWindow window;
-extern GC gc, clip_gc[], tile_clip_gc;
+extern DrawBuffer backbuffer;
+extern GC gc;
+#endif
+
+#if 0
+extern GC clip_gc[];
+#endif
+extern GC tile_clip_gc;
extern Bitmap pix[];
-extern Bitmap pix_masked[], tile_masked[];
-extern Pixmap clipmask[], tile_clipmask[];
+#if 0
+extern Bitmap pix_masked[];
+
+extern Bitmap tile_masked[];
-#ifdef USE_XPM_LIBRARY
-extern XpmAttributes xpm_att[];
+extern Pixmap clipmask[];
#endif
+extern Pixmap tile_clipmask[];
-extern DrawBuffer drawto, drawto_field, backbuffer, fieldbuffer;
+#if 0
+extern DrawBuffer drawto;
+#endif
+extern DrawBuffer drawto_field, fieldbuffer;
+#if 0
extern Colormap cmap;
+#endif
-extern int sound_pipe[2];
-extern int sound_device;
+#if 0
extern char *sound_device_name;
+#endif
+
extern int joystick_device;
extern char *joystick_device_name[];
+#if 0
extern char *program_name;
+#endif
extern int game_status;
extern boolean level_editor_test_game;
extern boolean network_playing;
+
+#if 0
extern int button_status;
extern boolean motion_status;
+#endif
+
extern int key_joystick_mapping;
extern int global_joystick_status, joystick_status;
-extern int sound_status;
-extern boolean sound_loops_allowed;
+
+#if 0
+extern boolean fullscreen_available;
+extern boolean fullscreen_enabled;
+#endif
extern boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
extern int redraw_x1, redraw_y1;
+
+#if 0
extern int redraw_mask;
extern int redraw_tiles;
+#endif
extern short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern int SBY_Upper, SBY_Lower;
extern int ZX,ZY, ExitX,ExitY;
extern int AllPlayersGone;
-extern int FrameCounter, TimeFrames, TimePlayed, TimeLeft;
+
+#if 0
+extern int FrameCounter;
+#endif
+
+extern int TimeFrames, TimePlayed, TimeLeft;
extern boolean SiebAktiv;
extern int SiebCount;
extern boolean network_player_action_received;
+#if 0
extern struct LevelDirInfo *leveldir_first, *leveldir_current;
+#endif
extern struct LevelInfo level;
extern struct PlayerInfo stored_player[], *local_player;
extern struct HiScore highscore[];
extern struct TapeInfo tape;
-extern struct SoundInfo Sound[];
+extern struct SampleInfo Sound[];
extern struct JoystickInfo joystick[];
+
+#if 0
extern struct OptionInfo options;
+#endif
+
extern struct SetupInfo setup;
extern struct GameInfo game;
+
+#if 0
+extern struct VideoSystemInfo video;
+extern struct AudioSystemInfo audio;
+#endif
+
extern struct GlobalInfo global;
extern char *sound_name[];
extern int background_loop[];
extern int num_bg_loops;
extern char *element_info[];
-
+extern int num_element_info;
/* often used screen positions */
#define SX 8
#define MICROLEV_XPOS (SX + (SXSIZE - MICROLEV_XSIZE) / 2)
#define MICROLEV_YPOS (SX + 12 * TILEY - MICRO_TILEY)
#define MICROLABEL_YPOS (MICROLEV_YPOS + MICROLEV_YSIZE + 7)
+
+#if 0
#define FONT1_XSIZE 32
#define FONT1_YSIZE 32
#define FONT2_XSIZE 14
#define FONT5_YSIZE 14
#define FONT6_XSIZE 16
#define FONT6_YSIZE 32
+#endif
#define GFX_STARTX SX
#define GFX_STARTY SY
#define MINI_MORE_PER_LINE 16
#define MICRO_MORE_PER_LINE 16
+#if 0
#define FONT_CHARS_PER_LINE 16
#define FONT_LINES_PER_FONT 4
+#endif
/* game elements:
** 0 - 499: real elements, stored in level file
#define NUM_SOUNDS 62
/* default input keys */
-#define DEFAULT_KEY_LEFT KEY_Left
-#define DEFAULT_KEY_RIGHT KEY_Right
-#define DEFAULT_KEY_UP KEY_Up
-#define DEFAULT_KEY_DOWN KEY_Down
-#define DEFAULT_KEY_SNAP KEY_Shift_L
-#define DEFAULT_KEY_BOMB KEY_Shift_R
-#define DEFAULT_KEY_OKAY KEY_Return
-#define DEFAULT_KEY_CANCEL KEY_Escape
+#define DEFAULT_KEY_LEFT KSYM_Left
+#define DEFAULT_KEY_RIGHT KSYM_Right
+#define DEFAULT_KEY_UP KSYM_Up
+#define DEFAULT_KEY_DOWN KSYM_Down
+#define DEFAULT_KEY_SNAP KSYM_Shift_L
+#define DEFAULT_KEY_BOMB KSYM_Shift_R
+#define DEFAULT_KEY_OKAY KSYM_Return
+#define DEFAULT_KEY_CANCEL KSYM_Escape
/* directions for moving */
#define MV_NO_MOVING 0
#define MV_UP (1 << 2)
#define MV_DOWN (1 << 3)
+#if 0
/* font types */
#define FS_SMALL 0
#define FS_BIG 1
#define FC_SPECIAL1 4
#define FC_SPECIAL2 5
#define FC_SPECIAL3 6
+#endif
/* values for game_status */
#define EXITGAME 0
#define SETUPINPUT 9
#define CALIBRATION 10
+#if 0
#ifndef RO_GAME_DIR
#define RO_GAME_DIR "."
#endif
#define LEVELS_DIRECTORY "levels"
#define TAPES_DIRECTORY "tapes"
#define SCORES_DIRECTORY "scores"
-
-#ifdef USE_SDL_LIBRARY
-#define PROGRAM_VERSION_STRING "1.4.0 SDL"
-#else
-#define PROGRAM_VERSION_STRING "1.4.0"
#endif
+
+#define PROGRAM_VERSION_STRING "1.5.0"
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
-#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_VERSION_STRING
-#define COPYRIGHT_STRING "Copyright ^1995-2000 by " PROGRAM_AUTHOR_STRING
-
+#define PROGRAM_RIGHTS_STRING "Copyright ^1995-2000 by"
+#define PROGRAM_DOS_PORT_STRING "DOS port done by Guido Schulz"
+#define PROGRAM_IDENT_STRING PROGRAM_VERSION_STRING " " TARGET_STRING
+#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_IDENT_STRING
+#define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
+#define ICON_TITLE_STRING PROGRAM_TITLE_STRING
+#define UNIX_USERDATA_DIRECTORY ".rocksndiamonds"
+
+#define X11_ICON_FILENAME "rocks_icon.xbm"
+#define X11_ICONMASK_FILENAME "rocks_iconmask.xbm"
+#define MSDOS_POINTER_FILENAME "mouse.pcx"
+
+#if 0
/* default name for empty highscore entry */
#define EMPTY_PLAYER_NAME "no name"
/* default name for new levels */
#define NAMELESS_LEVEL_NAME "nameless level"
+#endif
+#if 0
/* values for button_status */
#define MB_NOT_PRESSED FALSE
#define MB_RELEASED FALSE
#define MB_LEFTBUTTON 1
#define MB_MIDDLEBUTTON 2
#define MB_RIGHTBUTTON 3
+#endif
+#if 0
/* values for redraw_mask */
#define REDRAW_ALL (1 << 0)
#define REDRAW_FIELD (1 << 1)
#define REDRAW_MAIN (REDRAW_FIELD | \
REDRAW_TILES | \
REDRAW_MICROLEVEL)
+#define REDRAW_FPS (1 << 10)
#define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2)
+#endif
+#if 0
/* areas in bitmap PIX_DOOR */
/* meaning in PIX_DB_DOOR: (3 PAGEs)
PAGEX1: 1. buffer for DOOR_1
#define DOOR_GFX_PAGEX8 (7 * DOOR_GFX_PAGESIZE)
#define DOOR_GFX_PAGEY1 0
#define DOOR_GFX_PAGEY2 DYSIZE
+#endif
/* for DrawGraphicAnimation() [tools.c] and AnimateToon() [cartoons.c] */
#define ANIM_NORMAL 0