X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.h;h=d698ffdf42bc298a637096e09f35eb47e55bf4d7;hp=ef25edc87996da6e09ab7e8bea0fb3d8067699c1;hb=49dab46aa55cb43233c7f9a310593f8bd8debc29;hpb=c4b26cf489dcc65a00bfcc05f7898700d2f0c9e4 diff --git a/src/main.h b/src/main.h index ef25edc8..d698ffdf 100644 --- a/src/main.h +++ b/src/main.h @@ -35,9 +35,9 @@ #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; @@ -52,10 +52,10 @@ 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) @@ -82,6 +82,7 @@ typedef unsigned char byte; #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) @@ -194,7 +195,7 @@ typedef unsigned char byte; #define MAX_LEVDIR_FILENAME (64+1) #define MAX_LEVDIR_NAME (16+1) #define MAX_LEVDIR_ENTRIES 15 -#define MAX_SCORE_ENTRIES 15 +#define MAX_SCORE_ENTRIES 100 #define MAX_OPTION_LEN 256 #define MAX_FILENAME_LEN 256 @@ -212,6 +213,8 @@ struct OptionInfo char *display_name; char *server_host; int server_port; + char *base_directory; + char *level_directory; boolean serveronly; boolean network; boolean verbose; @@ -219,6 +222,9 @@ struct OptionInfo struct SetupJoystickInfo { + char device_name[MAX_FILENAME_LEN]; + int xleft, xmiddle, xright; + int yupper, ymiddle, ylower; int snap; int bomb; }; @@ -233,26 +239,33 @@ struct SetupKeyboardInfo 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; - struct - { - boolean use_joystick; - int joystick_nr; - struct SetupJoystickInfo joy; - struct SetupKeyboardInfo key; - } input[MAX_PLAYERS]; + boolean team_mode; + + char login_name[MAX_NAMELEN]; + char alias_name[MAX_NAMELEN]; + + struct SetupInputInfo input[MAX_PLAYERS]; }; struct SetupFileList @@ -265,26 +278,17 @@ struct SetupFileList 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; - byte action; - - char login_name[MAX_NAMELEN]; - char alias_name[MAX_NAMELEN]; - - -#if 0 - int handicap; - unsigned int setup; -#endif - + byte action; /* action from local input device */ + byte effective_action; /* action aknowledged from network server + or summarized over all configured input + devices when in single player mode */ - int leveldir_nr; - int level_nr; + int joystick_fd; /* file descriptor of player's joystick */ int jx,jy, last_jx,last_jy; int MovDir, MovPos, GfxPos; @@ -357,12 +361,6 @@ struct RecordingInfo } pos[MAX_TAPELEN]; }; -struct JoystickInfo -{ - int xleft, xright, xmiddle; - int yupper, ylower, ymiddle; -}; - extern Display *display; extern Visual *visual; extern int screen; @@ -382,8 +380,7 @@ extern int sound_pipe[2]; extern int sound_device; extern char *sound_device_name; extern int joystick_device; -extern char *joystick_device_name[2]; -extern char *level_directory; +extern char *joystick_device_name[]; extern int width, height; extern char *program_name; @@ -1072,55 +1069,39 @@ extern int num_bg_loops; #define EMU_BOULDERDASH 1 #define EMU_SOKOBAN 2 - #ifndef GAME_DIR #define GAME_DIR "." #endif -#ifndef GFX_PATH -#define GFX_PATH GAME_DIR "/graphics" -#endif -#ifndef SND_PATH -#define SND_PATH GAME_DIR "/sounds" -#endif -#ifndef LEVEL_PATH -#define LEVEL_PATH GAME_DIR "/levels" -#endif -#ifndef SCORE_PATH -#define SCORE_PATH LEVEL_PATH -#endif -#ifndef NAMES_PATH -#define NAMES_PATH LEVEL_PATH -#endif -#ifndef CONFIG_PATH -#define CONFIG_PATH GAME_DIR -#endif -#ifndef JOYDAT_PATH -#define JOYDAT_PATH GAME_DIR -#endif -#ifndef SETUP_PATH -#define SETUP_PATH GAME_DIR -#endif +#define BASE_PATH GAME_DIR + +#define GRAPHICS_DIRECTORY "graphics" +#define SOUNDS_DIRECTORY "sounds" +#define LEVELS_DIRECTORY "levels" +#define TAPES_DIRECTORY "tapes" +#define SCORES_DIRECTORY "scores" #ifndef MSDOS -#define SCORE_FILENAME "ROCKS.score" -#define NAMES_FILENAME "ROCKS.names" +#define USERDATA_DIRECTORY ".rocksndiamonds" #define LEVDIR_FILENAME "ROCKS.levelinfo" -#define JOYDAT_FILENAME "ROCKS.joystick" -#define SETUP_FILENAME "ROCKS.setup" -#define LEVELSETUP_FILENAME "ROCKS.levelsetup" +#define SETUP_FILENAME "setup" +#define LEVELSETUP_FILENAME "setup.level" +#define TAPEFILE_EXTENSION "tape" +#define SCOREFILE_EXTENSION "score" #else -#define SCORE_FILENAME "ROCKS.sco" -#define NAMES_FILENAME "ROCKS.nam" +#define USERDATA_DIRECTORY "userdata" #define LEVDIR_FILENAME "ROCKS.lev" -#define JOYDAT_FILENAME "ROCKS.joy" -#define SETUP_FILENAME "ROCKS.set" -#define LEVELSETUP_FILENAME "ROCKS.lvs" +#define SETUP_FILENAME "setup" +#define LEVELSETUP_FILENAME "setup.lev" +#define TAPEFILE_EXTENSION "rec" +#define SCOREFILE_EXTENSION "sco" #endif -#define JOYDAT_FILE JOYDAT_PATH "/" JOYDAT_FILENAME - -#define LEVEL_PERMS (S_IRUSR|S_IWUSR | S_IRGRP|S_IWGRP | S_IROTH|S_IWOTH) +#define MODE_R_ALL (S_IRUSR | S_IRGRP | S_IROTH) +#define MODE_W_ALL (S_IWUSR | S_IWGRP | S_IWOTH) +#define MODE_X_ALL (S_IXUSR | S_IXGRP | S_IXOTH) +#define USERDATA_DIR_MODE (MODE_R_ALL | MODE_X_ALL | S_IWUSR) +#define LEVEL_PERMS (MODE_R_ALL | MODE_W_ALL) #define SCORE_PERMS LEVEL_PERMS #define NAMES_PERMS LEVEL_PERMS #define LEVDIR_PERMS LEVEL_PERMS @@ -1129,12 +1110,10 @@ extern int num_bg_loops; #define SETUP_PERMS LEVEL_PERMS /* old cookies */ -#define NAMES_COOKIE_10 "ROCKSNDIAMONDS_NAMES_FILE_VERSION_1.0" #define LEVELREC_COOKIE_10 "ROCKSNDIAMONDS_LEVELREC_FILE_VERSION_1.0" #define LEVEL_COOKIE "ROCKSNDIAMONDS_LEVEL_FILE_VERSION_1.0" -#define SCORE_COOKIE "ROCKSNDIAMONDS_SCORE_FILE_VERSION_1.0" -#define NAMES_COOKIE "ROCKSNDIAMONDS_NAMES_FILE_VERSION_1.1" +#define SCORE_COOKIE "ROCKSNDIAMONDS_SCORE_FILE_VERSION_1.2" #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" @@ -1142,14 +1121,13 @@ extern int num_bg_loops; #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 VERSION_STRING "1.2 preview 1" #define GAMETITLE_STRING "Rocks'n'Diamonds" #define WINDOWTITLE_STRING GAMETITLE_STRING " " VERSION_STRING #define COPYRIGHT_STRING "Copyright ^1995-98 by Holger Schemel" @@ -1243,4 +1221,4 @@ extern int num_bg_loops; #define ANIM_OSCILLATE 1 #define ANIM_REVERSE 2 -#endif +#endif /* MAIN_H */