#ifdef XPM_INCLUDE_FILE
#include XPM_INCLUDE_FILE
#endif
-#else
+#else /* MSDOS */
#include "msdos.h"
-#endif /* #ifndef MSDOS */
+#endif /* MSDOS */
typedef unsigned char boolean;
typedef unsigned char byte;
#ifndef MSDOS
#define WIN_XPOS 0
#define WIN_YPOS 0
-#else
+#else /* MSDOS */
#define WIN_XPOS ((XRES - WIN_XSIZE) / 2)
#define WIN_YPOS ((YRES - WIN_YSIZE) / 2)
-#endif
+#endif /* MSDOS */
#define SCR_FIELDX 17
#define SCR_FIELDY 17
#define MAX_BUF_XSIZE (SCR_FIELDX + 2)
#ifndef SIGN
#define SIGN(a) ((a) < 0 ? -1 : ((a)>0 ? 1 : 0))
#endif
+
#define SCREENX(a) ((a) - scroll_x)
#define SCREENY(a) ((a) - scroll_y)
#define LEVELX(a) ((a) + scroll_x)
boolean verbose;
};
+struct SetupJoystickInfo
+{
+ char device_name[MAX_FILENAME_LEN];
+ int xleft, xmiddle, xright;
+ int yupper, ymiddle, ylower;
+ int snap;
+ int bomb;
+};
+
+struct SetupKeyboardInfo
+{
+ KeySym left;
+ KeySym right;
+ KeySym up;
+ KeySym down;
+ KeySym snap;
+ KeySym bomb;
+};
+
+struct SetupInputInfo
+{
+ boolean use_joystick;
+ struct SetupJoystickInfo joy;
+ struct SetupKeyboardInfo key;
+};
+
struct SetupInfo
{
- boolean sound_on;
- boolean sound_loops_on;
- boolean sound_music_on;
- boolean sound_simple_on;
- boolean toons_on;
- boolean direct_draw_on;
- boolean scroll_delay_on;
- boolean soft_scrolling_on;
- boolean fading_on;
- boolean autorecord_on;
+ boolean sound;
+ boolean sound_loops;
+ boolean sound_music;
+ boolean sound_simple;
+ boolean toons;
+ boolean double_buffering;
+ boolean direct_draw; /* !double_buffering (redundant!) */
+ boolean scroll_delay;
+ boolean soft_scrolling;
+ boolean fading;
+ boolean autorecord;
boolean quick_doors;
- int joystick_nr;
+
+ char login_name[MAX_NAMELEN];
+ char alias_name[MAX_NAMELEN];
+
+ struct SetupInputInfo input[MAX_PLAYERS];
+};
+
+struct SetupFileList
+{
+ char *token;
+ char *value;
+ struct SetupFileList *next;
};
struct PlayerInfo
{
boolean present; /* player present in level playfield */
- boolean connected; /* player connected locally or via network */
- boolean local; /* player connected locally */
+ boolean connected; /* player connected (locally or via network) */
boolean active; /* player (present && connected) */
int index_nr, client_nr, element_nr;
- char login_name[MAX_NAMELEN];
- char alias_name[MAX_NAMELEN];
- int handicap;
- unsigned int setup;
- int leveldir_nr;
- int level_nr;
+ byte action; /* action from server or for local playing */
+ byte potential_action; /* must go to network server first */
+
+ int joystick_fd; /* file descriptor of player's joystick */
int jx,jy, last_jx,last_jy;
int MovDir, MovPos, GfxPos;
} pos[MAX_TAPELEN];
};
-struct JoystickInfo
-{
- int xleft, xright, xmiddle;
- int yupper, ylower, ymiddle;
-};
-
extern Display *display;
extern Visual *visual;
extern int screen;
extern int sound_device;
extern char *sound_device_name;
extern int joystick_device;
-extern char *joystick_device_name[2];
+extern char *joystick_device_name[];
extern char *level_directory;
extern int width, height;
extern int FrameCounter, TimeFrames, TimeLeft;
extern int MampferNr, SiebAktiv;
-extern byte network_player_action[];
extern boolean network_player_action_received;
extern int TestPlayer;
extern struct LevelDirInfo leveldir[];
extern struct LevelInfo level;
-extern struct PlayerInfo stored_player[];
-extern struct PlayerInfo *local_player;
+extern struct PlayerInfo stored_player[], *local_player;
extern struct HiScore highscore[];
extern struct RecordingInfo tape;
extern struct SoundInfo Sound[];
extern struct JoystickInfo joystick[];
-struct OptionInfo options;
-struct SetupInfo setup;
+extern struct OptionInfo options;
+extern struct SetupInfo setup;
+extern struct SetupFileList *setup_list;
+extern struct SetupFileList *level_setup_list;
extern char *sound_name[];
extern int background_loop[];
(s)==SND_TYGER || (s)==SND_VOYAGER || \
(s)==SND_TWILIGHT)
+/* default input keys */
+#define KEY_UNDEFINDED XK_VoidSymbol
+#define DEFAULT_KEY_LEFT XK_Left
+#define DEFAULT_KEY_RIGHT XK_Right
+#define DEFAULT_KEY_UP XK_Up
+#define DEFAULT_KEY_DOWN XK_Down
+#define DEFAULT_KEY_SNAP XK_Shift_L
+#define DEFAULT_KEY_BOMB XK_Shift_R
+#define DEFAULT_KEY_OKAY XK_Return
+#define DEFAULT_KEY_CANCEL XK_Escape
/* directions for moving */
#define MV_NO_MOVING 0
#define TYPENAME 5
#define HALLOFFAME 6
#define SETUP 7
-#define EXITGAME 8
+#define SETUPINPUT 8
+#define EXITGAME 9
/* values for game_emulation */
#define EMU_NONE 0
#ifndef JOYDAT_PATH
#define JOYDAT_PATH GAME_DIR
#endif
+#ifndef SETUP_PATH
+#define SETUP_PATH GAME_DIR
+#endif
#ifndef MSDOS
#define SCORE_FILENAME "ROCKS.score"
#define NAMES_FILENAME "ROCKS.names"
#define LEVDIR_FILENAME "ROCKS.levelinfo"
#define JOYDAT_FILENAME "ROCKS.joystick"
+#define SETUP_FILENAME "ROCKS.setup"
+#define LEVELSETUP_FILENAME "ROCKS.levelsetup"
#else
#define SCORE_FILENAME "ROCKS.sco"
#define NAMES_FILENAME "ROCKS.nam"
#define LEVDIR_FILENAME "ROCKS.lev"
#define JOYDAT_FILENAME "ROCKS.joy"
+#define SETUP_FILENAME "ROCKS.set"
+#define LEVELSETUP_FILENAME "ROCKS.lvs"
#endif
#define JOYDAT_FILE JOYDAT_PATH "/" JOYDAT_FILENAME
#define LEVDIR_PERMS LEVEL_PERMS
#define LEVREC_PERMS LEVEL_PERMS
#define JOYDAT_PERMS LEVEL_PERMS
+#define SETUP_PERMS LEVEL_PERMS
/* old cookies */
#define NAMES_COOKIE_10 "ROCKSNDIAMONDS_NAMES_FILE_VERSION_1.0"
#define LEVELDIR_COOKIE "ROCKSNDIAMONDS_LEVELDIR_FILE_VERSION_1.0"
#define LEVELREC_COOKIE "ROCKSNDIAMONDS_LEVELREC_FILE_VERSION_1.2"
#define JOYSTICK_COOKIE "ROCKSNDIAMONDS_JOYSTICK_FILE_VERSION_1.0"
+#define SETUP_COOKIE "ROCKSNDIAMONDS_SETUP_FILE_VERSION_1.2"
+#define LEVELSETUP_COOKIE "ROCKSNDIAMONDS_LEVELSETUP_FILE_VERSION_1.2"
#define LEVEL_COOKIE_LEN (strlen(LEVEL_COOKIE)+1)
#define SCORE_COOKIE_LEN (strlen(SCORE_COOKIE)+1)
#define NAMES_COOKIE_LEN (strlen(NAMES_COOKIE)+1)
#define LEVELDIR_COOKIE_LEN (strlen(LEVELDIR_COOKIE)+1)
#define LEVELREC_COOKIE_LEN (strlen(LEVELREC_COOKIE)+1)
#define JOYSTICK_COOKIE_LEN (strlen(JOYSTICK_COOKIE)+1)
+#define SETUP_COOKIE_LEN (strlen(SETUP_COOKIE)+1)
+#define LEVELSETUP_COOKIE_LEN (strlen(LEVELSETUP_COOKIE)+1)
#define VERSION_STRING "1.2"
#define GAMETITLE_STRING "Rocks'n'Diamonds"
#define ANIM_OSCILLATE 1
#define ANIM_REVERSE 2
-#endif
+#endif /* MAIN_H */