X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.h;h=d698ffdf42bc298a637096e09f35eb47e55bf4d7;hp=928489ab42ec0077c0e82732acea54935952abbb;hb=49dab46aa55cb43233c7f9a310593f8bd8debc29;hpb=34b9fd6b89ffe8fa0637840118b43e4d36bb1798 diff --git a/src/main.h b/src/main.h index 928489ab..d698ffdf 100644 --- a/src/main.h +++ b/src/main.h @@ -1,13 +1,12 @@ /*********************************************************** * Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* ©1995 Artsoft Development * -* Holger Schemel * -* 33659 Bielefeld-Senne * -* Telefon: (0521) 493245 * -* eMail: aeglos@valinor.owl.de * -* aeglos@uni-paderborn.de * -* q99492@pbhrzx.uni-paderborn.de * +* (c) 1995-98 Artsoft Entertainment * +* Holger Schemel * +* Oststrasse 11a * +* 33604 Bielefeld * +* phone: ++49 +521 290471 * +* email: aeglos@valinor.owl.de * *----------------------------------------------------------* * main.h * ***********************************************************/ @@ -15,6 +14,13 @@ #ifndef MAIN_H #define MAIN_H +#include +#include +#include +#include +#include +#include + #ifndef MSDOS #define XK_MISCELLANY #define XK_LATIN1 @@ -29,18 +35,12 @@ #ifdef XPM_INCLUDE_FILE #include XPM_INCLUDE_FILE #endif -#else +#else /* MSDOS */ #include "msdos.h" -#endif // von #ifndef MSDOS - -#include -#include -#include -#include -#include -#include +#endif /* MSDOS */ -typedef int BOOL; +typedef unsigned char boolean; +typedef unsigned char byte; #ifndef FALSE #define FALSE 0 @@ -52,17 +52,17 @@ typedef int BOOL; #ifndef MSDOS #define WIN_XPOS 0 #define WIN_YPOS 0 -#else -#define WIN_XPOS (XRES-WIN_XSIZE)/2 -#define WIN_YPOS (YRES-WIN_YSIZE)/2 -#endif +#else /* MSDOS */ +#define WIN_XPOS ((XRES - WIN_XSIZE) / 2) +#define WIN_YPOS ((YRES - WIN_YSIZE) / 2) +#endif /* MSDOS */ #define SCR_FIELDX 17 #define SCR_FIELDY 17 #define MAX_BUF_XSIZE (SCR_FIELDX + 2) #define MAX_BUF_YSIZE (SCR_FIELDY + 2) -#define MIN_LEV_FIELDX (SCR_FIELDX-2) -#define MIN_LEV_FIELDY (SCR_FIELDY-2) +#define MIN_LEV_FIELDX (SCR_FIELDX - 2) +#define MIN_LEV_FIELDY (SCR_FIELDY - 2) #define STD_LEV_FIELDX 64 #define STD_LEV_FIELDY 32 #define MAX_LEV_FIELDX 128 @@ -71,36 +71,26 @@ typedef int BOOL; #define MAX_PLAYERS 4 #ifndef MIN -#define MIN(a,b) ((a)<(b) ? (a) : (b)) +#define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif #ifndef MAX -#define MAX(a,b) ((a)>(b) ? (a) : (b)) +#define MAX(a,b) ((a) > (b) ? (a) : (b)) #endif #ifndef ABS -#define ABS(a) ((a)<0 ? -(a) : (a)) +#define ABS(a) ((a) < 0 ? -(a) : (a)) #endif #ifndef SIGN -#define SIGN(a) ((a)<0 ? -1 : ((a)>0 ? 1 : 0)) +#define SIGN(a) ((a) < 0 ? -1 : ((a)>0 ? 1 : 0)) #endif -#define SCROLLX(a) ((a)-scroll_x) -#define SCROLLY(a) ((a)-scroll_y) -#define UNSCROLLX(a) ((a)+scroll_x) -#define UNSCROLLY(a) ((a)+scroll_y) + +#define SCREENX(a) ((a) - scroll_x) +#define SCREENY(a) ((a) - scroll_y) +#define LEVELX(a) ((a) + scroll_x) +#define LEVELY(a) ((a) + scroll_y) +#define IN_VIS_FIELD(x,y) ((x)>=0 && (x)=0 &&(y)=BX1 && (x)<=BX2 && (y)>=BY1 &&(y)<=BY2) #define IN_LEV_FIELD(x,y) ((x)>=0 && (x)=0 &&(y)=EL_BLOCKED) -#define TIMESIZE (TimeLeft*100/level.time) +#define IS_DRAWABLE(e) ((e) < EL_BLOCKED) +#define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED) +#define TIMESIZE (TimeLeft * 100 / level.time) #define TAPE_IS_EMPTY(x) ((x).length == 0) #define TAPE_IS_STOPPED(x) (!(x).recording && !(x).playing &&!(x).pausing) +#define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_SPIELER1]) + /* Pixmaps with Xpm or X11 Bitmap files */ #define PIX_BACK 0 #define PIX_DOOR 1 @@ -193,9 +195,10 @@ typedef int BOOL; #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_FILENAME 256 +#define MAX_OPTION_LEN 256 +#define MAX_FILENAME_LEN 256 #define MAX_NUM_AMOEBA 100 #define MAX_ELEMENTS 512 @@ -205,21 +208,105 @@ struct HiScore int Score; }; -struct PlayerInfo +struct OptionInfo { - BOOL active, local; + char *display_name; + char *server_host; + int server_port; + char *base_directory; + char *level_directory; + boolean serveronly; + boolean network; + 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; + 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; + boolean team_mode; char login_name[MAX_NAMELEN]; char alias_name[MAX_NAMELEN]; - int handicap; - unsigned int setup; - int leveldir_nr; - int level_nr; - int JX,JY, lastJX,lastJY, ZX,ZY, ExitX,ExitY; - int PlayerMovDir, PlayerMovPos, PlayerPushing; - int PlayerFrame, PlayerGfxPos; - int PlayerGone, LevelSolved, GameOver; + 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 active; /* player (present && connected) */ + + int index_nr, client_nr, element_nr; + + 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 joystick_fd; /* file descriptor of player's joystick */ + + int jx,jy, last_jx,last_jy; + int MovDir, MovPos, GfxPos; + int Frame; + + boolean Pushing; + boolean gone, LevelSolved, GameOver; + boolean snapped; + + long move_delay; + int last_move_dir; + + long push_delay; + int push_delay_value; + + int frame_reset_delay; + + long actual_frame_counter; int score; int gems_still_needed; @@ -257,29 +344,23 @@ struct LevelDirInfo struct RecordingInfo { int level_nr; - unsigned int random_seed; + unsigned long random_seed; unsigned long date; unsigned long counter; unsigned long length; unsigned long length_seconds; unsigned int delay_played; - BOOL pause_before_death; - BOOL recording, playing, pausing; - BOOL fast_forward; - BOOL changed; + boolean pause_before_death; + boolean recording, playing, pausing; + boolean fast_forward; + boolean changed; struct { - unsigned char joystickdata; - unsigned char delay; + byte action[MAX_PLAYERS]; + byte delay; } pos[MAX_TAPELEN]; }; -struct JoystickInfo -{ - int xleft, xright, xmiddle; - int yupper, ylower, ymiddle; -}; - extern Display *display; extern Visual *visual; extern int screen; @@ -299,75 +380,74 @@ 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; + extern int game_status; extern int game_emulation; -extern int button_status, motion_status; +extern boolean network_playing; +extern int button_status; +extern boolean motion_status; extern int key_joystick_mapping; extern int global_joystick_status, joystick_status; -extern int sound_status, sound_on; -extern int sound_loops_allowed, sound_loops_on; -extern int sound_music_on; -extern int sound_simple_on; -extern int toons_on; -extern int direct_draw_on; -extern int scroll_delay_on; -extern int soft_scrolling_on; -extern int fading_on; -extern int autorecord_on; -extern int joystick_nr; -extern int quick_doors; - -extern BOOL redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE]; +extern int sound_status; +extern boolean sound_loops_allowed; + +extern boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE]; extern int redraw_x1, redraw_y1; extern int redraw_mask; extern int redraw_tiles; -extern int Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int JustHit[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern int AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA]; -extern long Elementeigenschaften[MAX_ELEMENTS]; +extern short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short JustHit[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA]; +extern unsigned long Elementeigenschaften[MAX_ELEMENTS]; extern int level_nr, leveldir_nr, num_leveldirs; extern int lev_fieldx,lev_fieldy, scroll_x,scroll_y; -extern int FX,FY, ScreenMovPos, ScrollStepSize; -extern int GameFrameDelay, MoveSpeed; +extern int FX,FY, ScrollStepSize; +extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos; +extern int GameFrameDelay; +extern int FfwdFrameDelay; +extern int MoveSpeed; extern int BX1,BY1, BX2,BY2; -extern int JX,JY, lastJX,lastJY, ZX,ZY, ExitX,ExitY; -extern int PlayerMovDir, PlayerMovPos, PlayerPushing; -extern int PlayerFrame, PlayerGfxPos; -extern int PlayerGone,LevelSolved,GameOver; -extern int FrameCounter,TimeFrames,TimeLeft; +extern int ZX,ZY, ExitX,ExitY; +extern int AllPlayersGone; +extern int FrameCounter, TimeFrames, TimeLeft; extern int MampferNr, SiebAktiv; +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, *actual_player; +extern struct PlayerInfo stored_player[], *local_player; extern struct HiScore highscore[]; extern struct RecordingInfo tape; extern struct SoundInfo Sound[]; extern struct JoystickInfo joystick[]; +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[]; extern int num_bg_loops; -extern char *progname; - /* often used screen positions */ #define SX 8 @@ -589,7 +669,11 @@ extern char *progname; #define EL_CHAR_COPY (EL_CHAR_ASCII0+94) #define EL_CHAR_END (EL_CHAR_START+79) -#define EL_UNUSED_200 200 +#define EL_MAUER_X 200 +#define EL_MAUER_Y 201 +#define EL_MAUER_XY 202 + +#define EL_UNUSED_200 203 /* ... */ #define EL_UNUSED_255 255 @@ -729,15 +813,20 @@ extern char *progname; #define GFX_MAULWURF 145 #define GFX_SCHWEIN 146 #define GFX_DRACHE 147 +#define GFX_MAUER_XY 148 +#define GFX_MAUER_X 149 +#define GFX_MAUER_Y 150 #define GFX_EDELSTEIN_ROT 152 #define GFX_EDELSTEIN_LILA 154 #define GFX_DYNABOMB_XL 156 #define GFX_SONDE 159 /* Zeile 10 (160) */ #define GFX_EDELSTEIN_BD 163 -#define GFX_MAUER_R1 165 +#define GFX_MAUER_RIGHT 165 +#define GFX_MAUER_R1 GFX_MAUER_RIGHT #define GFX_MAUER_R 167 -#define GFX_MAUER_L1 168 +#define GFX_MAUER_LEFT 168 +#define GFX_MAUER_L1 GFX_MAUER_LEFT #define GFX_MAUER_L 170 #define GFX_MAUER_LEBT 171 #define GFX_SIEB2_LEER 172 @@ -767,23 +856,40 @@ extern char *progname; #define GFX_FIREFLY_L 206 #define GFX_FIREFLY_U 207 -/* CHANGE THIS!!!! (NO REGULAR POSITIONS...) */ -#define GFX_MASK_SPARKLING 210 -/* CHANGE THIS!!!! (NO REGULAR POSITIONS...) */ - #define GFX_SCHLUESSEL GFX_SCHLUESSEL1 #define GFX_SPIELFIGUR GFX_SPIELER1 /* graphics from "RocksHeroes" */ -#define GFX_SPIELER_DOWN (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE + 0) -#define GFX_SPIELER_UP (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE + 4) -#define GFX_SPIELER_LEFT (GFX_START_ROCKSHEROES + 1*HEROES_PER_LINE + 0) -#define GFX_SPIELER_RIGHT (GFX_START_ROCKSHEROES + 1*HEROES_PER_LINE + 4) -#define GFX_SPIELER_PUSH_RIGHT (GFX_START_ROCKSHEROES + 2*HEROES_PER_LINE + 0) -#define GFX_SPIELER_PUSH_LEFT (GFX_START_ROCKSHEROES + 2*HEROES_PER_LINE + 4) -#define GFX_SONDE_START (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE + 0) +#define GFX_SPIELER1_DOWN (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE + 0) +#define GFX_SPIELER1_UP (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE + 4) +#define GFX_SPIELER1_LEFT (GFX_START_ROCKSHEROES + 1*HEROES_PER_LINE + 0) +#define GFX_SPIELER1_RIGHT (GFX_START_ROCKSHEROES + 1*HEROES_PER_LINE + 4) +#define GFX_SPIELER1_PUSH_RIGHT (GFX_START_ROCKSHEROES + 2*HEROES_PER_LINE + 0) +#define GFX_SPIELER1_PUSH_LEFT (GFX_START_ROCKSHEROES + 2*HEROES_PER_LINE + 4) +#define GFX_SPIELER2_DOWN (GFX_START_ROCKSHEROES + 3*HEROES_PER_LINE + 0) +#define GFX_SPIELER2_UP (GFX_START_ROCKSHEROES + 3*HEROES_PER_LINE + 4) +#define GFX_SPIELER2_LEFT (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE + 0) +#define GFX_SPIELER2_RIGHT (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE + 4) +#define GFX_SPIELER2_PUSH_RIGHT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE + 0) +#define GFX_SPIELER2_PUSH_LEFT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE + 4) +#define GFX_SPIELER3_DOWN (GFX_START_ROCKSHEROES + 6*HEROES_PER_LINE + 0) +#define GFX_SPIELER3_UP (GFX_START_ROCKSHEROES + 6*HEROES_PER_LINE + 4) +#define GFX_SPIELER3_LEFT (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE + 0) +#define GFX_SPIELER3_RIGHT (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE + 4) +#define GFX_SPIELER3_PUSH_RIGHT (GFX_START_ROCKSHEROES + 8*HEROES_PER_LINE + 0) +#define GFX_SPIELER3_PUSH_LEFT (GFX_START_ROCKSHEROES + 8*HEROES_PER_LINE + 4) +#define GFX_SPIELER4_DOWN (GFX_START_ROCKSHEROES + 9*HEROES_PER_LINE + 0) +#define GFX_SPIELER4_UP (GFX_START_ROCKSHEROES + 9*HEROES_PER_LINE + 4) +#define GFX_SPIELER4_LEFT (GFX_START_ROCKSHEROES +10*HEROES_PER_LINE + 0) +#define GFX_SPIELER4_RIGHT (GFX_START_ROCKSHEROES +10*HEROES_PER_LINE + 4) +#define GFX_SPIELER4_PUSH_RIGHT (GFX_START_ROCKSHEROES +11*HEROES_PER_LINE + 0) +#define GFX_SPIELER4_PUSH_LEFT (GFX_START_ROCKSHEROES +11*HEROES_PER_LINE + 4) +#define GFX_MAUER_DOWN (GFX_START_ROCKSHEROES +12*HEROES_PER_LINE + 0) +#define GFX_MAUER_UP (GFX_START_ROCKSHEROES +12*HEROES_PER_LINE + 3) + +#define GFX_SONDE_START (GFX_START_ROCKSHEROES + 9*HEROES_PER_LINE + 8) #define GFX_SCHWEIN_DOWN (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE + 8) #define GFX_SCHWEIN_UP (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE +12) #define GFX_SCHWEIN_LEFT (GFX_START_ROCKSHEROES + 1*HEROES_PER_LINE + 8) @@ -796,16 +902,18 @@ extern char *progname; #define GFX_MAULWURF_UP (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE +12) #define GFX_MAULWURF_LEFT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE + 8) #define GFX_MAULWURF_RIGHT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE +12) -#define GFX_PINGUIN_DOWN (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE + 8) -#define GFX_PINGUIN_UP (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE +12) -#define GFX_PINGUIN_LEFT (GFX_START_ROCKSHEROES + 8*HEROES_PER_LINE + 8) -#define GFX_PINGUIN_RIGHT (GFX_START_ROCKSHEROES + 8*HEROES_PER_LINE +12) -#define GFX_BLURB_LEFT (GFX_START_ROCKSHEROES + 9*HEROES_PER_LINE + 8) -#define GFX_BLURB_RIGHT (GFX_START_ROCKSHEROES + 9*HEROES_PER_LINE +12) -#define GFX_FLAMMEN_LEFT (GFX_START_ROCKSHEROES + 8*HEROES_PER_LINE + 0) -#define GFX_FLAMMEN_RIGHT (GFX_START_ROCKSHEROES + 9*HEROES_PER_LINE + 0) -#define GFX_FLAMMEN_UP (GFX_START_ROCKSHEROES +10*HEROES_PER_LINE + 0) -#define GFX_FLAMMEN_DOWN (GFX_START_ROCKSHEROES +11*HEROES_PER_LINE + 0) +#define GFX_PINGUIN_DOWN (GFX_START_ROCKSHEROES + 6*HEROES_PER_LINE + 8) +#define GFX_PINGUIN_UP (GFX_START_ROCKSHEROES + 6*HEROES_PER_LINE +12) +#define GFX_PINGUIN_LEFT (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE + 8) +#define GFX_PINGUIN_RIGHT (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE +12) +#define GFX_BLURB_LEFT (GFX_START_ROCKSHEROES +10*HEROES_PER_LINE + 8) +#define GFX_BLURB_RIGHT (GFX_START_ROCKSHEROES +10*HEROES_PER_LINE +12) +#define GFX_FUNKELN_BLAU (GFX_START_ROCKSHEROES +11*HEROES_PER_LINE + 8) +#define GFX_FUNKELN_WEISS (GFX_START_ROCKSHEROES +11*HEROES_PER_LINE +12) +#define GFX_FLAMMEN_LEFT (GFX_START_ROCKSHEROES +12*HEROES_PER_LINE + 8) +#define GFX_FLAMMEN_RIGHT (GFX_START_ROCKSHEROES +13*HEROES_PER_LINE + 8) +#define GFX_FLAMMEN_UP (GFX_START_ROCKSHEROES +14*HEROES_PER_LINE + 8) +#define GFX_FLAMMEN_DOWN (GFX_START_ROCKSHEROES +15*HEROES_PER_LINE + 8) /* graphics from "RocksFont" */ #define GFX_CHAR_START (GFX_START_ROCKSFONT) @@ -915,13 +1023,23 @@ extern char *progname; (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 MV_LEFT 1 -#define MV_RIGHT 2 -#define MV_UP 4 -#define MV_DOWN 8 +#define MV_LEFT (1<<0) +#define MV_RIGHT (1<<1) +#define MV_UP (1<<2) +#define MV_DOWN (1<<3) /* font types */ #define FS_SMALL 0 @@ -943,78 +1061,73 @@ extern char *progname; #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 #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 +#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 "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 "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 #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 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.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 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" @@ -1108,4 +1221,4 @@ extern char *progname; #define ANIM_OSCILLATE 1 #define ANIM_REVERSE 2 -#endif +#endif /* MAIN_H */