X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_main.h;h=7688cca13c79394056f22fd9451d0ea608dd9c7b;hp=98950edc21394fab6dd4c62d5d2122466cee92fa;hb=55961e9ba1fe67292a41fdcca0056b43bf960a93;hpb=8cef7dc31f5b96c492079d59acab2cb1587b3c8c diff --git a/src/game_mm/mm_main.h b/src/game_mm/mm_main.h index 98950edc..7688cca1 100644 --- a/src/game_mm/mm_main.h +++ b/src/game_mm/mm_main.h @@ -21,10 +21,17 @@ #define SCREENY(a) (a) #define LEVELX(a) (a) #define LEVELY(a) (a) -#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)=0 && (x)=0 && (y)= 0 && (x) < (xsize) && \ + (y) >= 0 && (y) < (ysize)) +#define IN_FIELD_MINMAX(x, y, xmin, ymin, xmax, ymax) \ + ((x) >= (xmin) && (x) <= (xmax) && \ + (y) >= (ymin) && (y) <= (ymax)) + +#define IN_PIX_FIELD(x, y) IN_FIELD(x, y, SXSIZE, SYSIZE) +#define IN_VIS_FIELD(x, y) IN_FIELD(x, y, SCR_FIELDX, SCR_FIELDY) +#define IN_LEV_FIELD(x, y) IN_FIELD(x, y, lev_fieldx, lev_fieldy) +#define IN_SCR_FIELD(x, y) IN_FIELD_MINMAX(x, y, BX1, BY1, BX2, BY2) /* values for 'Elementeigenschaften' */ #define EP_BIT_GRID (1 << 0) @@ -154,20 +161,15 @@ #define MICROLEVEL_SCROLL_DELAY 50 /* delay for scrolling micro level */ #define MICROLEVEL_LABEL_DELAY 250 /* delay for micro level label */ -struct HiScore +struct HiScore_MM { char Name[MAX_PLAYER_NAME_LEN + 1]; int Score; }; -struct EditorInfo -{ - boolean draw_walls_masked; -}; - extern Bitmap *pix[]; -extern DrawBuffer *fieldbuffer; -extern DrawBuffer *drawto_field; +extern DrawBuffer *fieldbuffer; +extern DrawBuffer *drawto_field; extern int joystick_device; extern char *joystick_device_name[]; @@ -204,32 +206,31 @@ extern short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA]; extern unsigned int Elementeigenschaften[MAX_ELEMENTS]; extern int level_nr; -extern int lev_fieldx,lev_fieldy, scroll_x,scroll_y; +extern int lev_fieldx, lev_fieldy, scroll_x, scroll_y; -extern int FX,FY, ScrollStepSize; +extern int FX, FY, ScrollStepSize; extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos; extern int GameFrameDelay; extern int FfwdFrameDelay; -extern int BX1,BY1, BX2,BY2; +extern int BX1, BY1, BX2, BY2; extern int SBX_Left, SBX_Right; extern int SBY_Upper, SBY_Lower; -extern int ZX,ZY, ExitX,ExitY; +extern int ZX, ZY, ExitX, ExitY; extern int AllPlayersGone; extern int TimeFrames, TimePlayed, TimeLeft; extern boolean SiebAktiv; extern int SiebCount; extern struct LevelInfo_MM native_mm_level; -extern struct HiScore highscore[]; +extern struct HiScore_MM highscore[]; extern struct TapeInfo tape; extern struct SetupInfo setup; extern struct GameInfo_MM game_mm; extern struct LaserInfo laser; -extern struct EditorInfo editor; extern struct GlobalInfo global; -extern short LX,LY, XS,YS, ELX,ELY; -extern short CT,Ct; +extern short LX, LY, XS, YS, ELX, ELY; +extern short CT, Ct; extern Pixel pen_fg, pen_bg, pen_ray, pen_magicolor[2]; extern int color_status; @@ -237,10 +238,10 @@ extern int color_status; extern struct XY Step[]; extern short Sign[16]; -extern char *sound_name[]; +extern char *sound_name[]; extern int background_loop[]; extern int num_bg_loops; -extern char *element_info[]; +extern char *element_info[]; extern int num_element_info; /* often used screen positions */ @@ -254,6 +255,7 @@ extern int num_element_info; #define EY (DY + 178) #define TILEX TILESIZE #define TILEY TILESIZE +#define MINI_TILESIZE (TILESIZE / 2) #define MINI_TILEX (TILEX / 2) #define MINI_TILEY (TILEY / 2) #define MICRO_TILEX (TILEX / 4) @@ -316,6 +318,9 @@ extern int num_element_info; ** 500 - 699: flag elements, only used at runtime */ /* "real" level elements */ +#define EL_MM_START 0 +#define EL_MM_START_1 EL_MM_START + #define EL_EMPTY 0 #define EL_MIRROR_START 1 #define EL_MIRROR_00 (EL_MIRROR_START + 0) @@ -450,47 +455,51 @@ extern int num_element_info; #define EL_GRID_WOOD_END EL_GRID_WOOD_03 #define EL_FUEL_EMPTY 155 +#define EL_MM_END_1 155 + #define EL_CHAR_START 160 -#define EL_CHAR_ASCII0 (EL_CHAR_START-32) -#define EL_CHAR_AUSRUF (EL_CHAR_ASCII0+33) -#define EL_CHAR_ZOLL (EL_CHAR_ASCII0+34) -#define EL_CHAR_RAUTE (EL_CHAR_ASCII0+35) -#define EL_CHAR_DOLLAR (EL_CHAR_ASCII0+36) -#define EL_CHAR_PROZ (EL_CHAR_ASCII0+37) -#define EL_CHAR_AMPERSAND (EL_CHAR_ASCII0+38) -#define EL_CHAR_APOSTR (EL_CHAR_ASCII0+39) -#define EL_CHAR_KLAMM1 (EL_CHAR_ASCII0+40) -#define EL_CHAR_KLAMM2 (EL_CHAR_ASCII0+41) -#define EL_CHAR_MULT (EL_CHAR_ASCII0+42) -#define EL_CHAR_PLUS (EL_CHAR_ASCII0+43) -#define EL_CHAR_KOMMA (EL_CHAR_ASCII0+44) -#define EL_CHAR_MINUS (EL_CHAR_ASCII0+45) -#define EL_CHAR_PUNKT (EL_CHAR_ASCII0+46) -#define EL_CHAR_SLASH (EL_CHAR_ASCII0+47) -#define EL_CHAR_0 (EL_CHAR_ASCII0+48) -#define EL_CHAR_9 (EL_CHAR_ASCII0+57) -#define EL_CHAR_DOPPEL (EL_CHAR_ASCII0+58) -#define EL_CHAR_SEMIKL (EL_CHAR_ASCII0+59) -#define EL_CHAR_LT (EL_CHAR_ASCII0+60) -#define EL_CHAR_GLEICH (EL_CHAR_ASCII0+61) -#define EL_CHAR_GT (EL_CHAR_ASCII0+62) -#define EL_CHAR_FRAGE (EL_CHAR_ASCII0+63) -#define EL_CHAR_AT (EL_CHAR_ASCII0+64) -#define EL_CHAR_A (EL_CHAR_ASCII0+65) -#define EL_CHAR_Z (EL_CHAR_ASCII0+90) -#define EL_CHAR_AE (EL_CHAR_ASCII0+91) -#define EL_CHAR_OE (EL_CHAR_ASCII0+92) -#define EL_CHAR_UE (EL_CHAR_ASCII0+93) -#define EL_CHAR_COPY (EL_CHAR_ASCII0+94) -#define EL_CHAR_END (EL_CHAR_START+79) +#define EL_CHAR_ASCII0 (EL_CHAR_START - 32) +#define EL_CHAR_AUSRUF (EL_CHAR_ASCII0 + 33) +#define EL_CHAR_ZOLL (EL_CHAR_ASCII0 + 34) +#define EL_CHAR_RAUTE (EL_CHAR_ASCII0 + 35) +#define EL_CHAR_DOLLAR (EL_CHAR_ASCII0 + 36) +#define EL_CHAR_PROZ (EL_CHAR_ASCII0 + 37) +#define EL_CHAR_AMPERSAND (EL_CHAR_ASCII0 + 38) +#define EL_CHAR_APOSTR (EL_CHAR_ASCII0 + 39) +#define EL_CHAR_KLAMM1 (EL_CHAR_ASCII0 + 40) +#define EL_CHAR_KLAMM2 (EL_CHAR_ASCII0 + 41) +#define EL_CHAR_MULT (EL_CHAR_ASCII0 + 42) +#define EL_CHAR_PLUS (EL_CHAR_ASCII0 + 43) +#define EL_CHAR_KOMMA (EL_CHAR_ASCII0 + 44) +#define EL_CHAR_MINUS (EL_CHAR_ASCII0 + 45) +#define EL_CHAR_PUNKT (EL_CHAR_ASCII0 + 46) +#define EL_CHAR_SLASH (EL_CHAR_ASCII0 + 47) +#define EL_CHAR_0 (EL_CHAR_ASCII0 + 48) +#define EL_CHAR_9 (EL_CHAR_ASCII0 + 57) +#define EL_CHAR_DOPPEL (EL_CHAR_ASCII0 + 58) +#define EL_CHAR_SEMIKL (EL_CHAR_ASCII0 + 59) +#define EL_CHAR_LT (EL_CHAR_ASCII0 + 60) +#define EL_CHAR_GLEICH (EL_CHAR_ASCII0 + 61) +#define EL_CHAR_GT (EL_CHAR_ASCII0 + 62) +#define EL_CHAR_FRAGE (EL_CHAR_ASCII0 + 63) +#define EL_CHAR_AT (EL_CHAR_ASCII0 + 64) +#define EL_CHAR_A (EL_CHAR_ASCII0 + 65) +#define EL_CHAR_Z (EL_CHAR_ASCII0 + 90) +#define EL_CHAR_AE (EL_CHAR_ASCII0 + 91) +#define EL_CHAR_OE (EL_CHAR_ASCII0 + 92) +#define EL_CHAR_UE (EL_CHAR_ASCII0 + 93) +#define EL_CHAR_COPY (EL_CHAR_ASCII0 + 94) +#define EL_CHAR_END (EL_CHAR_START + 79) #define EL_CHAR(x) ((x) == CHAR_BYTE_UMLAUT_A ? EL_CHAR_AE : \ (x) == CHAR_BYTE_UMLAUT_O ? EL_CHAR_OE : \ (x) == CHAR_BYTE_UMLAUT_U ? EL_CHAR_UE : \ EL_CHAR_A + (x) - 'A') +#define EL_MM_START_2 240 + /* elements for "Deflektor" style levels */ -#define EL_DF_START 240 +#define EL_DF_START EL_MM_START_2 #define EL_DF_MIRROR_START EL_DF_START #define EL_DF_MIRROR_00 (EL_DF_MIRROR_START + 0) @@ -625,42 +634,52 @@ extern int num_element_info; #define EL_BEAMER_BLUE_START 404 #define EL_BEAMER_BLUE_END (EL_BEAMER_BLUE_START + 15) +/* element definitions partially used for drawing graphics */ +#define EL_MCDUFFIN 420 +#define EL_PACMAN 421 +#define EL_FUSE_OFF 422 +#define EL_STEEL_WALL 423 +#define EL_WOODEN_WALL 424 +#define EL_ICE_WALL 425 +#define EL_AMOEBA_WALL 426 +#define EL_LASER 427 +#define EL_RECEIVER 428 +#define EL_DF_STEEL_WALL 429 +#define EL_DF_WOODEN_WALL 430 + +#define EL_MM_END_2 430 +#define EL_MM_END EL_MM_END_2 + /* "real" (and therefore drawable) runtime elements */ -#define EL_FIRST_RUNTIME_EL 500 -#define EL_FUSE_OFF 501 -#define EL_PACMAN 502 -#define EL_EXIT_OPENING 503 -#define EL_GRAY_BALL_OPENING 504 +#define EL_EXIT_OPENING 500 +#define EL_EXIT_CLOSING 501 +#define EL_GRAY_BALL_OPENING 502 +#define EL_ICE_WALL_SHRINKING 503 +#define EL_AMOEBA_WALL_GROWING 504 #define EL_WALL_CHANGING 512 #define EL_WALL_CHANGING_START (EL_WALL_CHANGING + 0) #define EL_WALL_CHANGING_END (EL_WALL_CHANGING + 15) -#if 0 -#define EL_MIRROR 5 -#define EL_GRID_STEEL 5 -#define EL_MCDUFFIN 5 -#define EL_BEAMER 5 -#define EL_POLAR 5 -#define EL_POLAR_CROSS 5 -#define EL_MIRROR_FIXED 5 -#define EL_GRID_WOOD 5 -#define EL_DF_MIRROR 5 -#define EL_GRID_WOOD_FIXED 5 -#define EL_GRID_STEEL_FIXED 5 -#define EL_LASER 5 -#define EL_RECEIVER 5 -#define EL_FIBRE_OPTIC 5 -#define EL_DF_MIRROR_AUTO 5 -#define EL_GRID_WOOD_AUTO 5 -#define EL_GRID_STEEL_AUTO 5 -#endif +#define EL_FIRST_RUNTIME_EL EL_EXIT_OPENING /* "unreal" (and therefore not drawable) runtime elements */ #define EL_BLOCKED 600 #define EL_EXPLODING_OPAQUE 601 #define EL_EXPLODING_TRANSP 602 +/* dummy elements (never used as game elements, only used as graphics) */ +#define EL_MM_MASK_MCDUFFIN_RIGHT 700 +#define EL_MM_MASK_MCDUFFIN_UP 701 +#define EL_MM_MASK_MCDUFFIN_LEFT 702 +#define EL_MM_MASK_MCDUFFIN_DOWN 703 +#define EL_MM_MASK_GRID_1 704 +#define EL_MM_MASK_GRID_2 705 +#define EL_MM_MASK_GRID_3 706 +#define EL_MM_MASK_GRID_4 707 +#define EL_MM_MASK_RECTANGE 708 +#define EL_MM_MASK_CIRCLE 709 + /* game graphics: ** 0 - 191: graphics from "MirrorScreen" @@ -669,6 +688,8 @@ extern int num_element_info; ** 512 - 767: graphics from "MirrorDF" */ +#define IMG_EMPTY IMG_EMPTY_SPACE + #define GFX_START_MIRRORSCREEN 0 #define GFX_END_MIRRORSCREEN 191 #define GFX_START_PSEUDO 192 @@ -987,6 +1008,61 @@ extern int num_element_info; #define NUM_SOUNDS 20 +/* values for graphics/sounds action types */ +#define MM_ACTION_DEFAULT 0 +#define MM_ACTION_WAITING 1 +#define MM_ACTION_FALLING 2 +#define MM_ACTION_MOVING 3 +#define MM_ACTION_DIGGING 4 +#define MM_ACTION_SNAPPING 5 +#define MM_ACTION_COLLECTING 6 +#define MM_ACTION_DROPPING 7 +#define MM_ACTION_PUSHING 8 +#define MM_ACTION_WALKING 9 +#define MM_ACTION_PASSING 10 +#define MM_ACTION_IMPACT 11 +#define MM_ACTION_BREAKING 12 +#define MM_ACTION_ACTIVATING 13 +#define MM_ACTION_DEACTIVATING 14 +#define MM_ACTION_OPENING 15 +#define MM_ACTION_CLOSING 16 +#define MM_ACTION_ATTACKING 17 +#define MM_ACTION_GROWING 18 +#define MM_ACTION_SHRINKING 19 +#define MM_ACTION_ACTIVE 20 +#define MM_ACTION_FILLING 21 +#define MM_ACTION_EMPTYING 22 +#define MM_ACTION_CHANGING 23 +#define MM_ACTION_EXPLODING 24 +#define MM_ACTION_BORING 25 +#define MM_ACTION_BORING_1 26 +#define MM_ACTION_BORING_2 27 +#define MM_ACTION_BORING_3 28 +#define MM_ACTION_BORING_4 29 +#define MM_ACTION_BORING_5 30 +#define MM_ACTION_BORING_6 31 +#define MM_ACTION_BORING_7 32 +#define MM_ACTION_BORING_8 33 +#define MM_ACTION_BORING_9 34 +#define MM_ACTION_BORING_10 35 +#define MM_ACTION_SLEEPING 36 +#define MM_ACTION_SLEEPING_1 37 +#define MM_ACTION_SLEEPING_2 38 +#define MM_ACTION_SLEEPING_3 39 +#define MM_ACTION_AWAKENING 40 +#define MM_ACTION_DYING 41 +#define MM_ACTION_TURNING 42 +#define MM_ACTION_TURNING_FROM_LEFT 43 +#define MM_ACTION_TURNING_FROM_RIGHT 44 +#define MM_ACTION_TURNING_FROM_UP 45 +#define MM_ACTION_TURNING_FROM_DOWN 46 +#define MM_ACTION_SMASHED_BY_ROCK 47 +#define MM_ACTION_SMASHED_BY_SPRING 48 +#define MM_ACTION_EATING 49 +#define MM_ACTION_TWINKLING 50 +#define MM_ACTION_SPLASHING 51 +#define MM_ACTION_HITTING 52 + /* laser angles (directions) */ #define ANG_RAY_RIGHT 0 #define ANG_RAY_UP 4 @@ -1051,13 +1127,13 @@ extern int num_element_info; #define SETUP 8 /* return values for GameActions */ -#define ACT_GO_ON 0 -#define ACT_GAME_OVER 1 -#define ACT_NEW_GAME 2 +#define ACT_GO_ON 0 +#define ACT_GAME_OVER 1 +#define ACT_NEW_GAME 2 /* values for color_status */ -#define STATIC_COLORS 0 -#define DYNAMIC_COLORS 1 +#define STATIC_COLORS 0 +#define DYNAMIC_COLORS 1 #define PROGRAM_VERSION_MAJOR 2 #define PROGRAM_VERSION_MINOR 0 @@ -1079,10 +1155,10 @@ extern int num_element_info; #define MSDOS_POINTER_FILENAME "mouse.pcx" /* functions for version handling */ -#define MM_VERSION_IDENT(x,y,z) ((x) * 10000 + (y) * 100 + (z)) -#define MM_VERSION_MAJOR(x) ((x) / 10000) -#define MM_VERSION_MINOR(x) (((x) % 10000) / 100) -#define MM_VERSION_PATCH(x) ((x) % 100) +#define MM_VERSION_IDENT(x,y,z) VERSION_IDENT(x,y,z,0) +#define MM_VERSION_MAJOR(x) VERSION_MAJOR(x) +#define MM_VERSION_MINOR(x) VERSION_MINOR(x) +#define MM_VERSION_PATCH(x) VERSION_PATCH(x) /* file version numbers for resource files (levels, score, setup, etc.) ** currently supported/known file version numbers: @@ -1103,6 +1179,6 @@ extern int num_element_info; /* sound control */ -#define ST(x) (((x)-8)*16) +#define ST(x) (((x) - 8) * 16) #endif /* MM_MAIN_H */