X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=bb7d8766f9146d446bc7d0b3be113c8293074556;hb=f772f882546ab982dc61074f298d6115c9909f32;hp=3fcf5c17f971a05ffbf70a46e85f598ef8cab8a0;hpb=24134e1e4ef7e3d582ac4827eb8740261bf5d1b6;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 3fcf5c17..bb7d8766 100644 --- a/src/main.h +++ b/src/main.h @@ -50,8 +50,8 @@ #define MIN_LEV_FIELDY 3 #define STD_LEV_FIELDX 64 #define STD_LEV_FIELDY 32 -#define MAX_LEV_FIELDX 128 -#define MAX_LEV_FIELDY 128 +#define MAX_LEV_FIELDX MAX_PLAYFIELD_WIDTH +#define MAX_LEV_FIELDY MAX_PLAYFIELD_HEIGHT #define SCREENX(a) ((a) - scroll_x) #define SCREENY(a) ((a) - scroll_y) @@ -667,6 +667,18 @@ #define GFX_ELEMENT(e) (element_info[e].use_gfx_element ? \ element_info[e].gfx_element : e) +#if 1 +#define TILE_GFX_ELEMENT(x, y) \ + (GfxElement[x][y] != EL_UNDEFINED && \ + Feld[x][y] != EL_EXPLOSION ? \ + GfxElement[x][y] : Feld[x][y]) +#else +#define TILE_GFX_ELEMENT(x, y) \ + GFX_ELEMENT(GfxElement[x][y] != EL_UNDEFINED && \ + Feld[x][y] != EL_EXPLOSION ? \ + GfxElement[x][y] : Feld[x][y]) +#endif + /* !!! "use sound" deactivated due to problems with level "bug machine" !!! */ /* (solution: add separate "use sound of element" to level file and editor) */ #if 0 @@ -750,7 +762,7 @@ #define EL_CASCADE_TOGGLE(e) (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 : \ IS_EDITOR_CASCADE_ACTIVE(e) ? (e) - 1 : (e)) -#define EL_NAME(e) (element_info[e].token_name) +#define EL_NAME(e) ((e) >= 0 ? element_info[e].token_name : "(?)") /* fundamental game speed values */ #define ONE_SECOND_DELAY 1000 /* delay value for one second */ @@ -1058,8 +1070,8 @@ #define EL_EM_GATE_3_GRAY 252 #define EL_EM_GATE_4_GRAY 253 -#define EL_UNUSED_254 254 -#define EL_UNUSED_255 255 +#define EL_EM_DYNAMITE 254 +#define EL_EM_DYNAMITE_ACTIVE 255 #define EL_PEARL 256 #define EL_CRYSTAL 257 @@ -1257,7 +1269,12 @@ #define EL_TRIGGER_CE_VALUE 705 -#define NUM_FILE_ELEMENTS 706 +#define EL_YAMYAM_LEFT 706 +#define EL_YAMYAM_RIGHT 707 +#define EL_YAMYAM_UP 708 +#define EL_YAMYAM_DOWN 709 + +#define NUM_FILE_ELEMENTS 710 /* "real" (and therefore drawable) runtime elements */ @@ -1475,7 +1492,7 @@ #define ACTION_TURNING_FROM_DOWN 46 #define ACTION_SMASHED_BY_ROCK 47 #define ACTION_SMASHED_BY_SPRING 48 -#define ACTION_SLURPING 49 +#define ACTION_EATING 49 #define ACTION_TWINKLING 50 #define ACTION_SPLASHING 51 #define ACTION_PAGE_1 52 @@ -1664,7 +1681,7 @@ #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" -#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2005 by Holger Schemel" +#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2006 by Holger Schemel" #define ICON_TITLE_STRING PROGRAM_TITLE_STRING #define COOKIE_PREFIX "ROCKSNDIAMONDS" @@ -1813,6 +1830,7 @@ struct PlayerInfo boolean is_pushing; boolean is_switching; boolean is_dropping; + boolean is_dropping_pressed; boolean is_bored; boolean is_sleeping; @@ -1825,6 +1843,7 @@ struct PlayerInfo int anim_delay_counter; int post_delay_counter; + int dir_waiting; int action_waiting, last_action_waiting; int special_action_bored; int special_action_sleeping; @@ -1848,6 +1867,7 @@ struct PlayerInfo unsigned long actual_frame_counter; int drop_delay; + int drop_pressed_delay; int step_counter; @@ -1977,6 +1997,7 @@ struct LevelInfo boolean can_pass_to_walkable; /* player can pass to empty or walkable tile */ boolean grow_into_diggable; /* amoeba can grow into anything diggable */ + boolean continuous_snapping; /* repeated snapping without releasing key */ boolean block_snap_field; /* snapping blocks field to show animation */ boolean block_last_field; /* player blocks previous field while moving */ boolean sp_block_last_field; /* player blocks previous field while moving */ @@ -2079,6 +2100,11 @@ struct GameInfo /* values for special game initialization control */ boolean restart_level; + + /* values for special game control */ + int centered_player_nr; + int centered_player_nr_next; + boolean set_centered_player; }; struct GlobalInfo