X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=4769e69bb958e48854b6090cb4c5003611d969cb;hb=1101077a226b09854650662759bf12caf7c84f8d;hp=852f04bf09b4788dfce3c04696d99114d0964d3e;hpb=3efd2f9aa751bbadb75b584f64568115a6ede379;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 852f04bf..4769e69b 100644 --- a/src/main.h +++ b/src/main.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -48,8 +49,6 @@ #define MAX_LEV_FIELDX 128 #define MAX_LEV_FIELDY 128 -#define MAX_PLAYERS 4 - #define SCREENX(a) ((a) - scroll_x) #define SCREENY(a) ((a) - scroll_y) #define LEVELX(a) ((a) + scroll_x) @@ -96,7 +95,7 @@ #define EP_BIT_BELT (1 << 0) #define EP_BIT_BELT_SWITCH (1 << 1) #define EP_BIT_TUBE (1 << 2) -#define EP_BIT_SLIPPERY_GEMS (1 << 3) +#define EP_BIT_EM_SLIPPERY_WALL (1 << 3) #define IS_AMOEBALIVE(e) (Elementeigenschaften1[e] & EP_BIT_AMOEBALIVE) #define IS_AMOEBOID(e) (Elementeigenschaften1[e] & EP_BIT_AMOEBOID) @@ -133,7 +132,7 @@ #define IS_BELT(e) (Elementeigenschaften2[e] & EP_BIT_BELT) #define IS_BELT_SWITCH(e) (Elementeigenschaften2[e] & EP_BIT_BELT_SWITCH) #define IS_TUBE(e) (Elementeigenschaften2[e] & EP_BIT_TUBE) -#define IS_SLIPPERY_GEMS(e) (Elementeigenschaften2[e] & EP_BIT_SLIPPERY_GEMS) +#define IS_EM_SLIPPERY_WALL(e) (Elementeigenschaften2[e] & EP_BIT_EM_SLIPPERY_WALL) #define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y])) @@ -157,7 +156,7 @@ #define IS_DRAWABLE(e) ((e) < EL_BLOCKED) #define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED) #define TAPE_IS_EMPTY(x) ((x).length == 0) -#define TAPE_IS_STOPPED(x) (!(x).recording && !(x).playing &&!(x).pausing) +#define TAPE_IS_STOPPED(x) (!(x).recording && !(x).playing) #define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_SPIELER1]) #define SHIELD_ON(p) ((p)->shield_passive_time_left > 0) @@ -184,7 +183,6 @@ #define NUM_BITMAPS 12 /* boundaries of arrays etc. */ -#define MAX_PLAYER_NAME_LEN 10 #define MAX_LEVEL_NAME_LEN 32 #define MAX_LEVEL_AUTHOR_LEN 32 #define MAX_TAPELEN (1000 * 50) /* max. time * framerate */ @@ -212,63 +210,6 @@ struct HiScore int Score; }; -struct SetupJoystickInfo -{ - char *device_name; - int xleft, xmiddle, xright; - int yupper, ymiddle, ylower; - int snap; - int bomb; -}; - -struct SetupKeyboardInfo -{ - Key left; - Key right; - Key up; - Key down; - Key snap; - Key bomb; -}; - -struct SetupInputInfo -{ - boolean use_joystick; - struct SetupJoystickInfo joy; - struct SetupKeyboardInfo key; -}; - -struct SetupInfo -{ - char *player_name; - - 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; - boolean handicap; - boolean time_limit; - boolean fullscreen; - - struct SetupInputInfo input[MAX_PLAYERS]; -}; - -struct SetupFileList -{ - char *token; - char *value; - struct SetupFileList *next; -}; - struct PlayerInfo { boolean present; /* player present in level playfield */ @@ -278,14 +219,12 @@ struct PlayerInfo int index_nr, client_nr, element_nr; byte action; /* action from local input device */ - byte effective_action; /* action aknowledged from network server + byte effective_action; /* action acknowledged from network server or summarized over all configured input devices when in single player mode */ byte programmed_action; /* action forced by game itself (like moving through doors); overrides other actions */ - int joystick_fd; /* file descriptor of player's joystick */ - int jx,jy, last_jx,last_jy; int MovDir, MovPos, GfxPos; int Frame; @@ -295,12 +234,12 @@ struct PlayerInfo boolean LevelSolved, GameOver; boolean snapped; - unsigned long move_delay; - int move_delay_value; - int last_move_dir; int is_moving; + unsigned long move_delay; + int move_delay_value; + unsigned long push_delay; unsigned long push_delay_value; @@ -322,9 +261,11 @@ struct PlayerInfo struct LevelInfo { - int file_version; /* version of file this level was stored with */ - int game_version; /* version of game engine to play this level */ - boolean encoding_16bit; /* level contains 16-bit elements */ + int file_version; /* file format version the level is stored with */ + int game_version; /* game engine version the level was created with */ + boolean encoding_16bit_field; /* level contains 16-bit elements */ + boolean encoding_16bit_yamyam; /* yamyam contains 16-bit elements */ + boolean encoding_16bit_amoeba; /* amoeba contains 16-bit elements */ int fieldx; int fieldy; @@ -343,12 +284,13 @@ struct LevelInfo int time_timegate; boolean double_speed; boolean gravity; + boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */ }; struct TapeInfo { - int file_version; /* version of file this level tape was stored with */ - int game_version; /* version of game engine to play this tapeĀ“s level */ + int file_version; /* file format version the tape is stored with */ + int game_version; /* game engine version the tape was created with */ int version; int level_nr; unsigned long random_seed; @@ -360,8 +302,13 @@ struct TapeInfo boolean pause_before_death; boolean recording, playing, pausing; boolean fast_forward; + boolean index_search; + boolean quick_resume; + boolean single_step; boolean changed; boolean player_participates[MAX_PLAYERS]; + int num_participating_players; + struct { byte action[MAX_PLAYERS]; @@ -398,15 +345,11 @@ extern Pixmap tile_clipmask[]; extern DrawBuffer *fieldbuffer; extern DrawBuffer *drawto_field; -extern int joystick_device; -extern char *joystick_device_name[]; - extern int game_status; extern boolean level_editor_test_game; extern boolean network_playing; extern int key_joystick_mapping; -extern int global_joystick_status, joystick_status; extern boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE]; extern int redraw_x1, redraw_y1; @@ -428,7 +371,6 @@ extern short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern unsigned long Elementeigenschaften1[MAX_ELEMENTS]; extern unsigned long Elementeigenschaften2[MAX_ELEMENTS]; -extern int level_nr; extern int lev_fieldx,lev_fieldy, scroll_x,scroll_y; extern int FX,FY, ScrollStepSize; @@ -452,14 +394,10 @@ extern struct LevelInfo level; extern struct PlayerInfo stored_player[], *local_player; extern struct HiScore highscore[]; extern struct TapeInfo tape; -extern struct JoystickInfo joystick[]; -extern struct SetupInfo setup; extern struct GameInfo game; 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; @@ -1500,23 +1438,6 @@ extern int num_element_info; #define NUM_SOUNDS 55 -/* default input keys */ -#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_LEFT (1 << 0) -#define MV_RIGHT (1 << 1) -#define MV_UP (1 << 2) -#define MV_DOWN (1 << 3) - /* values for game_status */ #define EXITGAME 0 #define MAINMENU 1 @@ -1527,19 +1448,23 @@ extern int num_element_info; #define TYPENAME 6 #define HALLOFFAME 7 #define SETUP 8 -#define SETUPINPUT 9 -#define CALIBRATION 10 -#define PROGRAM_VERSION_STRING "2.0.1" +#define PROGRAM_VERSION_MAJOR 2 +#define PROGRAM_VERSION_MINOR 0 +#define PROGRAM_VERSION_PATCH 2 +#define PROGRAM_VERSION_STRING "2.0.2" + #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" -#define PROGRAM_RIGHTS_STRING "Copyright ^1995-2001 by" +#define PROGRAM_RIGHTS_STRING "Copyright ^1995-2002 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 COOKIE_PREFIX "ROCKSNDIAMONDS" +#define FILENAME_PREFIX "Rocks" #define X11_ICON_FILENAME "rocks_icon.xbm" #define X11_ICONMASK_FILENAME "rocks_iconmask.xbm" @@ -1552,16 +1477,24 @@ extern int num_element_info; ** 1.4 (still in use) ** 2.0 (actual) */ -#define FILE_VERSION_1_0 10 -#define FILE_VERSION_1_2 12 -#define FILE_VERSION_1_4 14 -#define FILE_VERSION_2_0 20 +#define FILE_VERSION_1_0 VERSION_IDENT(1,0,0) +#define FILE_VERSION_1_2 VERSION_IDENT(1,2,0) +#define FILE_VERSION_1_4 VERSION_IDENT(1,4,0) +#define FILE_VERSION_2_0 VERSION_IDENT(2,0,0) + +/* file version does not change for every program version, but is changed + when new features are introduced that are incompatible with older file + versions, so that they can be treated accordingly */ #define FILE_VERSION_ACTUAL FILE_VERSION_2_0 + #define GAME_VERSION_1_0 FILE_VERSION_1_0 #define GAME_VERSION_1_2 FILE_VERSION_1_2 #define GAME_VERSION_1_4 FILE_VERSION_1_4 #define GAME_VERSION_2_0 FILE_VERSION_2_0 -#define GAME_VERSION_ACTUAL GAME_VERSION_2_0 + +#define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_MAJOR, \ + PROGRAM_VERSION_MINOR, \ + PROGRAM_VERSION_PATCH) /* for DrawGraphicAnimation() [tools.c] and AnimateToon() [cartoons.c] */ #define ANIM_NORMAL 0