X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.h;h=f1b8671c7b9b1a5e292fefdade0936b3dc72fba0;hp=d1abeccc52462bd684590a231af72f3dbd16531d;hb=e5c5bf5c4a76a04f9bf64e92227bf2ef969fd25c;hpb=823bddb0d9cc63ddda17a2cd20266aa3b82bde38 diff --git a/src/main.h b/src/main.h index d1abeccc..f1b8671c 100644 --- a/src/main.h +++ b/src/main.h @@ -14,6 +14,13 @@ #ifndef MAIN_H #define MAIN_H +#include +#include +#include +#include +#include +#include + #ifndef MSDOS #define XK_MISCELLANY #define XK_LATIN1 @@ -32,14 +39,8 @@ #include "msdos.h" #endif /* #ifndef MSDOS */ -#include -#include -#include -#include -#include -#include - -typedef int BOOL; +typedef unsigned char boolean; +typedef unsigned char byte; #ifndef FALSE #define FALSE 0 @@ -143,12 +144,7 @@ typedef int BOOL; #define IS_PUSHABLE(e) (Elementeigenschaften[e] & EP_BIT_PUSHABLE) #define ELEM_IS_PLAYER(e) (Elementeigenschaften[e] & EP_BIT_PLAYER) -/* -#define IS_PLAYER(x,y) (JX == (x) && JY == (y)) -*/ - #define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y])) -#define IS_LOCAL_PLAYER(x,y) (StorePlayer[x][y] == EL_SPIELER1) #define IS_FREE(x,y) (Feld[x][y] == EL_LEERRAUM && !IS_PLAYER(x,y)) #define IS_FREE_OR_PLAYER(x,y) (Feld[x][y] == EL_LEERRAUM) @@ -200,7 +196,8 @@ typedef int BOOL; #define MAX_LEVDIR_ENTRIES 15 #define MAX_SCORE_ENTRIES 15 -#define MAX_FILENAME 256 +#define MAX_OPTION_LEN 256 +#define MAX_FILENAME_LEN 256 #define MAX_NUM_AMOEBA 100 #define MAX_ELEMENTS 512 @@ -210,9 +207,40 @@ struct HiScore int Score; }; +struct OptionInfo +{ + char *display_name; + char *server_host; + int server_port; + boolean serveronly; + boolean network; + boolean verbose; +}; + +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 quick_doors; + int joystick_nr; +}; + struct PlayerInfo { - int nr, active, local; + boolean present; /* player present in level playfield */ + boolean connected; /* player connected locally or via network */ + boolean local; /* player connected locally */ + boolean active; /* player (present && connected) */ + + int index_nr, client_nr, element_nr; char login_name[MAX_NAMELEN]; char alias_name[MAX_NAMELEN]; @@ -223,13 +251,11 @@ struct PlayerInfo int jx,jy, last_jx,last_jy; int MovDir, MovPos, GfxPos; - int Pushing, Frame; - - int gone, LevelSolved, GameOver; + int Frame; - long actual_frame_counter; - - int frame_reset_delay; + boolean Pushing; + boolean gone, LevelSolved, GameOver; + boolean snapped; long move_delay; int last_move_dir; @@ -237,7 +263,9 @@ struct PlayerInfo long push_delay; int push_delay_value; - int snapped; + int frame_reset_delay; + + long actual_frame_counter; int score; int gems_still_needed; @@ -275,20 +303,20 @@ 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[MAX_PLAYERS]; - unsigned char delay; + byte action[MAX_PLAYERS]; + byte delay; } pos[MAX_TAPELEN]; }; @@ -321,47 +349,37 @@ extern char *joystick_device_name[2]; extern char *level_directory; extern int width, height; -extern char *server_host; -extern int server_port; +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 int networking; - -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 StorePlayer[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; @@ -375,6 +393,8 @@ extern int AllPlayersGone; 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[]; @@ -385,13 +405,13 @@ extern struct HiScore highscore[]; extern struct RecordingInfo tape; extern struct SoundInfo Sound[]; extern struct JoystickInfo joystick[]; +struct OptionInfo options; +struct SetupInfo setup; extern char *sound_name[]; extern int background_loop[]; extern int num_bg_loops; -extern char *progname; - /* often used screen positions */ #define SX 8 @@ -613,7 +633,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 @@ -753,15 +777,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 @@ -821,6 +850,9 @@ extern char *progname; #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)