X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.h;h=36c0978dbe05f90f23345f68af3de173a49e007e;hp=6cf2bb23891b4c939dbb1b3ba4c6240afad33b8e;hb=b7d31643c9c84104fb3ebef778e545928610ff65;hpb=a5a03e15b395ba1942c180d1cd0d3a4f43b87f56 diff --git a/src/main.h b/src/main.h index 6cf2bb23..36c0978d 100644 --- a/src/main.h +++ b/src/main.h @@ -26,8 +26,6 @@ #ifdef XPM_INCLUDE_FILE #include XPM_INCLUDE_FILE -#else -#include "YOU HAVE TO SET 'XPM_INCLUDE_FILE' IN THE 'Makefile'!!!" #endif #include @@ -75,31 +73,32 @@ typedef int BOOL; #define EP_BIT_AMOEBALIVE (1<<0) #define EP_BIT_AMOEBOID (1<<1) -#define EP_BIT_BADEWANNOID (1<<2) -#define EP_BIT_SCHLUESSEL (1<<3) -#define EP_BIT_PFORTE (1<<4) -#define EP_BIT_SOLID (1<<5) -#define EP_BIT_MASSIV (1<<6) -#define EP_BIT_SLIPPERY (1<<7) -#define EP_BIT_ENEMY (1<<8) -#define EP_BIT_MAUER (1<<9) -#define EP_BIT_CAN_FALL (1<<10) -#define EP_BIT_CAN_SMASH (1<<11) -#define EP_BIT_CAN_CHANGE (1<<12) -#define EP_BIT_CAN_MOVE (1<<13) -#define EP_BIT_COULD_MOVE (1<<14) -#define EP_BIT_DONT_TOUCH (1<<15) -#define EP_BIT_DONT_GO_TO (1<<16) -#define EP_BIT_MAMPF2 (1<<17) -#define EP_BIT_CHAR (1<<18) -#define EP_BIT_BD_ELEMENT (1<<19) -#define EP_BIT_SB_ELEMENT (1<<20) -#define EP_BIT_GEM (1<<21) -#define EP_BIT_INACTIVE (1<<22) +#define EP_BIT_SCHLUESSEL (1<<2) +#define EP_BIT_PFORTE (1<<3) +#define EP_BIT_SOLID (1<<4) +#define EP_BIT_MASSIV (1<<5) +#define EP_BIT_SLIPPERY (1<<6) +#define EP_BIT_ENEMY (1<<7) +#define EP_BIT_MAUER (1<<8) +#define EP_BIT_CAN_FALL (1<<9) +#define EP_BIT_CAN_SMASH (1<<10) +#define EP_BIT_CAN_CHANGE (1<<11) +#define EP_BIT_CAN_MOVE (1<<12) +#define EP_BIT_COULD_MOVE (1<<13) +#define EP_BIT_DONT_TOUCH (1<<14) +#define EP_BIT_DONT_GO_TO (1<<15) +#define EP_BIT_MAMPF2 (1<<16) +#define EP_BIT_CHAR (1<<17) +#define EP_BIT_BD_ELEMENT (1<<18) +#define EP_BIT_SB_ELEMENT (1<<19) +#define EP_BIT_GEM (1<<20) +#define EP_BIT_INACTIVE (1<<21) +#define EP_BIT_EXPLOSIVE (1<<22) +#define EP_BIT_MAMPF3 (1<<23) +#define EP_BIT_PUSHABLE (1<<24) #define IS_AMOEBALIVE(e) (Elementeigenschaften[e] & EP_BIT_AMOEBALIVE) #define IS_AMOEBOID(e) (Elementeigenschaften[e] & EP_BIT_AMOEBOID) -#define IS_BADEWANNOID(e) (Elementeigenschaften[e] & EP_BIT_BADEWANNOID) #define IS_SCHLUESSEL(e) (Elementeigenschaften[e] & EP_BIT_SCHLUESSEL) #define IS_PFORTE(e) (Elementeigenschaften[e] & EP_BIT_PFORTE) #define IS_SOLID(e) (Elementeigenschaften[e] & EP_BIT_SOLID) @@ -120,6 +119,9 @@ typedef int BOOL; #define IS_SB_ELEMENT(e) (Elementeigenschaften[e] & EP_BIT_SB_ELEMENT) #define IS_GEM(e) (Elementeigenschaften[e] & EP_BIT_GEM) #define IS_INACTIVE(e) (Elementeigenschaften[e] & EP_BIT_INACTIVE) +#define IS_EXPLOSIVE(e) (Elementeigenschaften[e] & EP_BIT_EXPLOSIVE) +#define IS_MAMPF3(e) (Elementeigenschaften[e] & EP_BIT_MAMPF3) +#define IS_PUSHABLE(e) (Elementeigenschaften[e] & EP_BIT_PUSHABLE) #define EL_CHANGED(e) ((e)==EL_FELSBROCKEN ? EL_EDELSTEIN : \ (e)==EL_EDELSTEIN ? EL_DIAMANT : \ @@ -138,15 +140,16 @@ typedef int BOOL; /* Pixmaps with Xpm or X11 Bitmap files */ #define PIX_BACK 0 #define PIX_DOOR 1 -#define PIX_TOONS 2 -#define PIX_BIGFONT 3 -#define PIX_SMALLFONT 4 +#define PIX_HEROES 2 +#define PIX_TOONS 3 +#define PIX_BIGFONT 4 +#define PIX_SMALLFONT 5 /* Pixmaps without them */ -#define PIX_DB_BACK 5 -#define PIX_DB_DOOR 6 +#define PIX_DB_BACK 6 +#define PIX_DB_DOOR 7 -#define NUM_PICTURES 5 -#define NUM_PIXMAPS 7 +#define NUM_PICTURES 6 +#define NUM_PIXMAPS 8 /* boundaries of arrays etc. */ #define MAX_NAMELEN (10+1) @@ -165,12 +168,6 @@ typedef int BOOL; #define MAX_NUM_AMOEBA 100 #define MAX_ELEMENTS 512 -struct PictureFile -{ - char *picture_filename; - char *picturemask_filename; -}; - struct HiScore { char Name[MAX_NAMELEN]; @@ -220,9 +217,9 @@ struct RecordingInfo unsigned long length_seconds; unsigned int delay_played; BOOL pause_before_death; - BOOL changed; BOOL recording, playing, pausing; BOOL fast_forward; + BOOL changed; struct { unsigned char joystickdata; @@ -243,7 +240,11 @@ extern GC gc, clip_gc[]; extern XImage *image[]; extern Pixmap clipmask[]; extern Pixmap pix[]; + +#ifdef XPM_INCLUDE_FILE extern XpmAttributes xpm_att[]; +#endif + extern Drawable drawto, drawto_field, backbuffer; extern Colormap cmap; @@ -294,9 +295,12 @@ extern long Elementeigenschaften[MAX_ELEMENTS]; extern int level_nr, leveldir_nr, num_leveldirs; extern int lev_fieldx,lev_fieldy, scroll_x,scroll_y; -extern int LevelSolved,GameOver, JX,JY, ZX,ZY; +extern int JX,JY, ZX,ZY, ExitX,ExitY; +extern int PlayerMovDir, PlayerFrame, PlayerPushing; +extern int PlayerGone,LevelSolved,GameOver; extern int FrameCounter,TimeFrames,TimeLeft,Score; -extern int Gems,SokobanFields,Lights,Dynamite,Key[4],MampferNr; +extern int Gems,SokobanFields,Lights,Friends; +extern int Dynamite,Key[4],MampferNr; extern int DynaBombCount, DynaBombSize, DynaBombsLeft, DynaBombXL; extern int SiebAktiv; @@ -305,8 +309,10 @@ extern struct LevelInfo level; extern struct PlayerInfo player; extern struct HiScore highscore[]; extern struct RecordingInfo tape; +extern struct SoundInfo Sound[]; extern struct JoystickInfo joystick[]; +extern char *sound_name[]; extern int background_loop[]; extern int num_bg_loops; @@ -361,6 +367,7 @@ extern char *progname; #define GFX_PER_LINE 16 #define MINI_GFX_PER_LINE 32 #define MICRO_GFX_PER_LINE 128 +#define HEROES_PER_LINE 16 #define FONT_CHARS_PER_LINE 16 #define FONT_LINES_PER_FONT 4 @@ -381,7 +388,7 @@ extern char *progname; #define EL_KAEFER 9 #define EL_FLIEGER 10 #define EL_MAMPFER 11 -#define EL_ZOMBIE 12 +#define EL_ROBOT 12 #define EL_BETON 13 #define EL_DIAMANT 14 #define EL_AMOEBE_TOT 15 @@ -487,6 +494,17 @@ extern char *progname; #define EL_AUSGANG_AUF 107 #define EL_SIEB2_TOT 108 #define EL_AMOEBA2DIAM 109 +#define EL_MAULWURF 110 +#define EL_PINGUIN 111 +#define EL_SONDE 112 +#define EL_PFEIL_L 113 +#define EL_PFEIL_R 114 +#define EL_PFEIL_O 115 +#define EL_PFEIL_U 116 +#define EL_SCHWEIN 117 +#define EL_DRACHE 118 + +#define EL_UNUSED_119 119 #define EL_CHAR_START 120 #define EL_CHAR_ASCII0 (EL_CHAR_START-32) @@ -519,6 +537,10 @@ 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_UNUSED_255 255 + /* "unreal" runtime elements */ #define EL_BLOCKED 300 #define EL_EXPLODING 301 @@ -527,8 +549,22 @@ extern char *progname; #define EL_BLURB_RIGHT 304 #define EL_AMOEBING 305 #define EL_MAUERND 306 +#define EL_BURNING 307 + +/* game graphics: +** 0 - 255: graphics from "RocksScreen" +** 256 - 511: graphics from "RocksFont" +** 512 - 767: graphics from "RocksHeroes" +*/ -/* names for the graphic objects */ +#define GFX_START_ROCKSSCREEN 0 +#define GFX_END_ROCKSSCREEN 255 +#define GFX_START_ROCKSFONT 256 +#define GFX_END_ROCKSFONT 511 +#define GFX_START_ROCKSHEROES 512 +#define GFX_END_ROCKSHEROES 767 + +/* graphics from "RocksScreen" */ /* Zeile 0 (0) */ #define GFX_LEERRAUM (-1) #define GFX_ERDREICH 0 @@ -560,7 +596,7 @@ extern char *progname; #define GFX_BADEWANNE3 32 #define GFX_BADEWANNE4 33 #define GFX_BADEWANNE5 34 -#define GFX_SPIELFIGUR 35 +#define GFX_SMILEY 35 #define GFX_PFORTE1 36 #define GFX_PFORTE2 37 #define GFX_PFORTE3 38 @@ -586,7 +622,7 @@ extern char *progname; #define GFX_KAEFER_U 75 /* Zeile 5 (80) */ #define GFX_MAMPFER 80 -#define GFX_ZOMBIE 84 +#define GFX_ROBOT 84 #define GFX_PACMAN 88 #define GFX_PACMAN_R 88 #define GFX_PACMAN_O 89 @@ -608,6 +644,10 @@ extern char *progname; #define GFX_BIRNE_EIN 113 #define GFX_ZEIT_VOLL 114 #define GFX_ZEIT_LEER 115 +#define GFX_SPIELER1 116 +#define GFX_SPIELER2 117 +#define GFX_SPIELER3 118 +#define GFX_SPIELER4 119 #define GFX_AMOEBE_VOLL 120 #define GFX_AMOEBE_BD GFX_AMOEBE_VOLL #define GFX_SOKOBAN_OBJEKT 121 @@ -630,11 +670,14 @@ extern char *progname; #define GFX_KUGEL_GELB 142 #define GFX_KUGEL_GRAU 143 /* Zeile 9 (144) */ -#define GFX_BLURB_LEFT 144 -#define GFX_BLURB_RIGHT 148 +#define GFX_PINGUIN 144 +#define GFX_MAULWURF 145 +#define GFX_SCHWEIN 146 +#define GFX_DRACHE 147 #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 @@ -669,15 +712,44 @@ extern char *progname; #define GFX_FIREFLY_L 206 #define GFX_FIREFLY_U 207 -#define GFX_SCHLUESSEL GFX_SCHLUESSEL1 - -#define GFX_SPIELER1 116 -#define GFX_SPIELER2 117 -#define GFX_SPIELER3 118 -#define GFX_SPIELER4 119 - -/* nicht in "RocksScreen" sondern woanders :) */ -#define GFX_CHAR_START 256 +#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_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) +#define GFX_SCHWEIN_RIGHT (GFX_START_ROCKSHEROES + 1*HEROES_PER_LINE +12) +#define GFX_DRACHE_DOWN (GFX_START_ROCKSHEROES + 2*HEROES_PER_LINE + 8) +#define GFX_DRACHE_UP (GFX_START_ROCKSHEROES + 2*HEROES_PER_LINE +12) +#define GFX_DRACHE_LEFT (GFX_START_ROCKSHEROES + 3*HEROES_PER_LINE + 8) +#define GFX_DRACHE_RIGHT (GFX_START_ROCKSHEROES + 3*HEROES_PER_LINE +12) +#define GFX_MAULWURF_DOWN (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE + 8) +#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) + +/* graphics from "RocksFont" */ +#define GFX_CHAR_START (GFX_START_ROCKSFONT) #define GFX_CHAR_ASCII0 (GFX_CHAR_START-32) #define GFX_CHAR_AUSRUF (GFX_CHAR_ASCII0+33) #define GFX_CHAR_ZOLL (GFX_CHAR_ASCII0+34) @@ -714,7 +786,7 @@ extern char *progname; #define SC_KAEFER 2 #define SC_FLIEGER 3 #define SC_MAMPFER 4 -#define SC_ZOMBIE 5 +#define SC_ROBOT 5 #define SC_PACMAN 6 #define SC_KOKOSNUSS 7 #define SC_DYNAMIT 8 @@ -783,10 +855,7 @@ extern char *progname; (s)==SND_NETWORK || (s)==SND_CZARDASZ || \ (s)==SND_TYGER || (s)==SND_VOYAGER || \ (s)==SND_TWILIGHT) -extern char *sound_name[NUM_SOUNDS]; -/* this structure contains the sound data for the sound server */ -extern struct SoundInfo Sound[NUM_SOUNDS]; /* directions for moving */ #define MV_NO_MOVING 0 @@ -822,44 +891,6 @@ extern struct SoundInfo Sound[NUM_SOUNDS]; #define EMU_BOULDERDASH 1 #define EMU_SOKOBAN 2 -/* values for the joystick */ -#define JOYSTICK_OFF 0 -#define JOYSTICK_AVAILABLE 1 -#ifdef __FreeBSD__ -#include -#define DEV_JOYSTICK_0 "/dev/joy0" -#define DEV_JOYSTICK_1 "/dev/joy1" -#else -#define DEV_JOYSTICK_0 "/dev/js0" -#define DEV_JOYSTICK_1 "/dev/js1" -#endif - -/* get these values from the program 'js' from the joystick package, */ -/* set JOYSTICK_PERCENT to a threshold appropriate for your joystick */ -#define JOYSTICK_XLEFT 30 -#define JOYSTICK_XRIGHT 1250 -#define JOYSTICK_XMIDDLE 530 -#define JOYSTICK_YUPPER 40 -#define JOYSTICK_YLOWER 1440 -#define JOYSTICK_YMIDDLE 680 -#define JOYSTICK_PERCENT 25 -#define JOY_LEFT MV_LEFT -#define JOY_RIGHT MV_RIGHT -#define JOY_UP MV_UP -#define JOY_DOWN MV_DOWN -#define JOY_BUTTON_1 16 -#define JOY_BUTTON_2 32 -#define JOY_BUTTON (JOY_BUTTON_1 | JOY_BUTTON_2) -#define JOY_BUTTON_NOT_PRESSED 0 -#define JOY_BUTTON_PRESSED 1 -#define JOY_BUTTON_NEW_PRESSED 2 -#define JOY_BUTTON_NEW_RELEASED 3 - -#ifdef NO_JOYSTICK -#define JOYSTICK_STATUS JOYSTICK_OFF -#else -#define JOYSTICK_STATUS JOYSTICK_AVAILABLE -#endif #ifndef GAME_DIR #define GAME_DIR "." @@ -932,6 +963,7 @@ extern struct SoundInfo Sound[NUM_SOUNDS]; #define MB_PRESSED TRUE #define MB_MENU_CHOICE FALSE #define MB_MENU_MARK TRUE +#define MB_MENU_INITIALIZE (-1) #define MB_LEFT 1 #define MB_MIDDLE 2 #define MB_RIGHT 3 @@ -941,10 +973,6 @@ extern struct SoundInfo Sound[NUM_SOUNDS]; #define KEY_RELEASED FALSE #define KEY_PRESSED TRUE -/* values for focus_status */ -#define FOCUS_OUT FALSE -#define FOCUS_IN TRUE - /* values for redraw_mask */ #define REDRAW_ALL (1L<<0) #define REDRAW_FIELD (1L<<1) @@ -1003,4 +1031,8 @@ extern struct SoundInfo Sound[NUM_SOUNDS]; #define DOOR_GFX_PAGEY1 0 #define DOOR_GFX_PAGEY2 DYSIZE +/* für DrawGraphicAnimation (tools.c) und AnimateToon (cartoons.c) */ +#define ANIM_NORMAL 0 +#define ANIM_OSCILLATE 1 + #endif