-Pre-Release Version 2.2.0rc8 [?? ??? ????]
+Pre-Release Version 3.3.0 [?? ??? ????]
------------------------------------------
+ - fixed Supaplex gravity tubes
Pre-Release Version 2.2.0rc7 [17 JUL 2003]
------------------------------------------
SRC_DIR = src
MAKE_CMD = $(MAKE) -C $(SRC_DIR)
-DEFAULT_TARGET = x11
-# DEFAULT_TARGET = sdl
+# DEFAULT_TARGET = x11
+DEFAULT_TARGET = sdl
all:
@$(MAKE_CMD) TARGET=$(DEFAULT_TARGET)
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_chr.c *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_chr.h *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_cus.c *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_cus.h *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_e2g.c *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
EL_SAND, -1, -1, FALSE,
IMG_SAND
},
+ {
+ EL_SAND, -1, -1, TRUE,
+ IMG_SAND_CRUMBLED
+ },
{
EL_SAND, ACTION_DIGGING, MV_BIT_LEFT, FALSE,
IMG_SAND_DIGGING_LEFT
EL_SAND, ACTION_DIGGING, MV_BIT_DOWN, FALSE,
IMG_SAND_DIGGING_DOWN
},
- {
- EL_SAND_CRUMBLED, -1, -1, TRUE,
- IMG_SAND_CRUMBLED
- },
- {
- EL_SAND, -1, -1, TRUE,
- IMG_SAND_CRUMBLED
- },
{
EL_SAND, ACTION_DIGGING, MV_BIT_LEFT, TRUE,
IMG_SAND_DIGGING_LEFT_CRUMBLED
IMG_WALL
},
{
- EL_WALL_CRUMBLED, -1, -1, FALSE,
- IMG_WALL_CRUMBLED
+ EL_WALL_SLIPPERY, -1, -1, FALSE,
+ IMG_WALL_SLIPPERY
},
{
EL_STEELWALL, -1, -1, FALSE,
IMG_LANDMINE
},
{
- EL_STEELWALL_SLANTED, -1, -1, FALSE,
- IMG_STEELWALL_SLANTED
+ EL_STEELWALL_SLIPPERY, -1, -1, FALSE,
+ IMG_STEELWALL_SLIPPERY
},
{
EL_EXTRA_TIME, -1, -1, FALSE,
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_e2s.c *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_esg.c *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_fnt.c *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
{ "sand.xpos", "0" },
{ "sand.ypos", "2" },
{ "sand.frames", "1" },
+ { "sand.CRUMBLED", "RocksMore.pcx" },
+ { "sand.CRUMBLED.xpos", "1" },
+ { "sand.CRUMBLED.ypos", "2" },
+ { "sand.CRUMBLED.frames", "1" },
{ "sand.digging.left", "RocksMore.pcx" },
{ "sand.digging.left.xpos", "6" },
{ "sand.digging.left.ypos", "3" },
{ "sand.digging.down.frames", "3" },
{ "sand.digging.down.delay", "2" },
{ "sand.digging.down.anim_mode", "linear" },
- { "sand.CRUMBLED", "RocksMore.pcx" },
- { "sand.CRUMBLED.xpos", "1" },
- { "sand.CRUMBLED.ypos", "2" },
- { "sand.CRUMBLED.frames", "1" },
{ "sand.digging.left.CRUMBLED", "RocksMore.pcx" },
{ "sand.digging.left.CRUMBLED.xpos", "6" },
{ "sand.digging.left.CRUMBLED.ypos", "0" },
{ "wall.ypos", "0" },
{ "wall.frames", "1" },
- { "wall_crumbled", "RocksElements.pcx" },
- { "wall_crumbled.xpos", "6" },
- { "wall_crumbled.ypos", "0" },
- { "wall_crumbled.frames", "1" },
+ { "wall_slippery", "RocksElements.pcx" },
+ { "wall_slippery.xpos", "6" },
+ { "wall_slippery.ypos", "0" },
+ { "wall_slippery.frames", "1" },
{ "steelwall", "RocksElements.pcx" },
{ "steelwall.xpos", "4" },
{ "landmine.frames", "1" },
{ "landmine.crumbled_like", "sand" },
- { "steelwall_slanted", "RocksDC.pcx" },
- { "steelwall_slanted.xpos", "5" },
- { "steelwall_slanted.ypos", "15" },
- { "steelwall_slanted.frames", "1" },
+ { "steelwall_slippery", "RocksDC.pcx" },
+ { "steelwall_slippery.xpos", "5" },
+ { "steelwall_slippery.ypos", "15" },
+ { "steelwall_slippery.frames", "1" },
{ "extra_time", "RocksDC.pcx" },
{ "extra_time.xpos", "8" },
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_gfx.h *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
#define IMG_SOKOBAN_FIELD_FULL 106
#define IMG_EMPTY_SPACE 107
#define IMG_SAND 108
-#define IMG_SAND_DIGGING_LEFT 109
-#define IMG_SAND_DIGGING_RIGHT 110
-#define IMG_SAND_DIGGING_UP 111
-#define IMG_SAND_DIGGING_DOWN 112
-#define IMG_SAND_CRUMBLED 113
+#define IMG_SAND_CRUMBLED 109
+#define IMG_SAND_DIGGING_LEFT 110
+#define IMG_SAND_DIGGING_RIGHT 111
+#define IMG_SAND_DIGGING_UP 112
+#define IMG_SAND_DIGGING_DOWN 113
#define IMG_SAND_DIGGING_LEFT_CRUMBLED 114
#define IMG_SAND_DIGGING_RIGHT_CRUMBLED 115
#define IMG_SAND_DIGGING_UP_CRUMBLED 116
#define IMG_SAND_DIGGING_DOWN_CRUMBLED 117
#define IMG_WALL 118
-#define IMG_WALL_CRUMBLED 119
+#define IMG_WALL_SLIPPERY 119
#define IMG_STEELWALL 120
#define IMG_ROCK 121
#define IMG_ROCK_MOVING_LEFT 122
#define IMG_SIGN_EXCLAMATION 289
#define IMG_SIGN_STOP 290
#define IMG_LANDMINE 291
-#define IMG_STEELWALL_SLANTED 292
+#define IMG_STEELWALL_SLIPPERY 292
#define IMG_EXTRA_TIME 293
#define IMG_SHIELD_NORMAL 294
#define IMG_SHIELD_NORMAL_ACTIVE 295
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* conf_snd.h *
+***********************************************************/
/* ----- this file was automatically generated -- do not edit by hand ----- */
-#define COMPILE_DATE_STRING "[2003-07-30 20:00]"
+#define COMPILE_DATE_STRING "[2003-07-31 20:49]"
#define ED_SELECTBOX_XSIZE ED_WIN_COUNT_XSIZE
#define ED_SELECTBOX_YSIZE ED_WIN_COUNT_YSIZE
+#define ED_SELECTBOX_BUTTON_XSIZE 14
+
#define ED_TEXTBUTTON_XPOS ED_WIN_COUNT_XPOS
#define ED_TEXTBUTTON_YPOS (ED_WIN_COUNT_YPOS + \
4 * (2 + ED_WIN_COUNT_YSIZE))
EL_STEELWALL,
EL_WALL,
- EL_WALL_CRUMBLED,
+ EL_WALL_SLIPPERY,
EL_MAGIC_WALL,
EL_EMERALD,
EL_LANDMINE,
EL_INVISIBLE_SAND,
- EL_STEELWALL_SLANTED,
+ EL_STEELWALL_SLIPPERY,
EL_EMPTY,
EL_SIGN_EXCLAMATION,
GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y,
GDI_DESIGN_PRESSED, gd_bitmap, gd_x, gd_y,
GDI_BORDER_SIZE, ED_BORDER_SIZE, ED_BORDER_SIZE,
- GDI_BORDER_SIZE_SELECTBUTTON, getFontWidth(FONT_INPUT_1),
+ GDI_BORDER_SIZE_SELECTBUTTON, ED_SELECTBOX_BUTTON_XSIZE,
GDI_DESIGN_WIDTH, ED_WIN_COUNT_XSIZE,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
}
/* map elements which have changed in newer versions */
- if (level->game_version <= VERSION_IDENT(2,2,0))
+ for(y=0; y<level->fieldy; y++)
{
- /* map game font elements */
- for(y=0; y<level->fieldy; y++)
+ for(x=0; x<level->fieldx; x++)
{
- for(x=0; x<level->fieldx; x++)
+ int element = level->field[x][y];
+
+ if (level->game_version <= VERSION_IDENT(2,2,0))
{
- int element = level->field[x][y];
-
- if (element == EL_CHAR('['))
- element = EL_CHAR_AUMLAUT;
- else if (element == EL_CHAR('\\'))
- element = EL_CHAR_OUMLAUT;
- else if (element == EL_CHAR(']'))
- element = EL_CHAR_UUMLAUT;
- else if (element == EL_CHAR('^'))
- element = EL_CHAR_COPYRIGHT;
-
- level->field[x][y] = element;
+ /* map game font elements */
+ element = (element == EL_CHAR('[') ? EL_CHAR_AUMLAUT :
+ element == EL_CHAR('\\') ? EL_CHAR_OUMLAUT :
+ element == EL_CHAR(']') ? EL_CHAR_UUMLAUT :
+ element == EL_CHAR('^') ? EL_CHAR_COPYRIGHT : element);
}
+ else if (level->game_version < VERSION_IDENT(3,0,0))
+ {
+ /* map Supaplex gravity tube elements */
+ element = (element == EL_SP_GRAVITY_PORT_LEFT ? EL_SP_PORT_LEFT :
+ element == EL_SP_GRAVITY_PORT_RIGHT ? EL_SP_PORT_RIGHT :
+ element == EL_SP_GRAVITY_PORT_UP ? EL_SP_PORT_UP :
+ element == EL_SP_GRAVITY_PORT_DOWN ? EL_SP_PORT_DOWN :
+ element);
+ }
+
+ level->field[x][y] = element;
}
}
Explode(x, y, EX_PHASE_START, EX_BORDER);
+ /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
if (element != EL_EMPTY &&
element != EL_SAND &&
element != EL_EXPLOSION &&
{
return (element == EL_INVISIBLE_STEELWALL ? EL_INVISIBLE_STEELWALL_ACTIVE :
element == EL_INVISIBLE_WALL ? EL_INVISIBLE_WALL_ACTIVE :
- EL_INVISIBLE_SAND_ACTIVE);
+ element == EL_INVISIBLE_SAND ? EL_INVISIBLE_SAND_ACTIVE :
+ element);
}
static int getInvisibleFromInvisibleActiveElement(int element)
{
return (element == EL_INVISIBLE_STEELWALL_ACTIVE ? EL_INVISIBLE_STEELWALL :
element == EL_INVISIBLE_WALL_ACTIVE ? EL_INVISIBLE_WALL :
- EL_INVISIBLE_SAND);
+ element == EL_INVISIBLE_SAND_ACTIVE ? EL_INVISIBLE_SAND :
+ element);
}
static void RedrawAllLightSwitchesAndInvisibleElements()
TurnRound(x, y);
#if 1
- if (GFX_ELEMENT(element) != EL_SAND)
+ if (GFX_ELEMENT(element) != EL_SAND) /* !!! FIX THIS (crumble) !!! */
DrawLevelElementAnimation(x, y, element);
#else
if (element == EL_BUG ||
if (!IN_LEV_FIELD(x, y))
return;
+ /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
if (IS_FREE(x, y) ||
Feld[x][y] == EL_SAND || Feld[x][y] == EL_QUICKSAND_EMPTY)
{
if (!IN_LEV_FIELD(x, y))
continue;
+ /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
if (IS_FREE(x, y) ||
Feld[x][y] == EL_SAND || Feld[x][y] == EL_QUICKSAND_EMPTY)
{
changed = TRUE;
}
}
+ /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
else if (IS_FREE(xx, yy) || Feld[xx][yy] == EL_SAND)
{ /* free border field */
if (nachbarn >= life[2] && nachbarn <= life[3])
#endif
element = Feld[x][y];
+ /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
if (!IS_PLAYER(x,y) &&
(element == EL_EMPTY ||
element == EL_SAND ||
(IN_LEV_FIELD(new_jx, new_jy) &&
(Feld[new_jx][new_jy] == EL_SP_BASE ||
Feld[new_jx][new_jy] == EL_SAND));
+ /* !!! extend EL_SAND to anything diggable !!! */
if (field_under_player_is_free &&
!player_is_moving_to_valid_field &&
!IS_FREE(nextx, nexty))
return MF_NO_ACTION;
+ if (element == EL_SP_GRAVITY_PORT_LEFT ||
+ element == EL_SP_GRAVITY_PORT_RIGHT ||
+ element == EL_SP_GRAVITY_PORT_UP ||
+ element == EL_SP_GRAVITY_PORT_DOWN)
+ level.gravity = !level.gravity;
+
/* automatically move to the next field with double speed */
player->programmed_action = move_direction;
DOUBLE_PLAYER_SPEED(player);
EL_SIGN_EXIT,
EL_SIGN_YINYANG,
EL_SIGN_OTHER,
- EL_STEELWALL_SLANTED,
+ EL_STEELWALL_SLIPPERY,
EL_EMC_STEELWALL_1,
EL_EMC_STEELWALL_2,
EL_EMC_STEELWALL_3,
static int ep_slippery[] =
{
- EL_WALL_CRUMBLED,
+ EL_WALL_SLIPPERY,
EL_BD_WALL,
EL_ROCK,
EL_BD_ROCK,
EL_SP_CHIP_TOP,
EL_SP_CHIP_BOTTOM,
EL_SPEED_PILL,
- EL_STEELWALL_SLANTED,
+ EL_STEELWALL_SLIPPERY,
EL_PEARL,
EL_CRYSTAL,
-1
{
EL_EMPTY,
EL_SAND,
- EL_WALL_CRUMBLED,
+ EL_WALL_SLIPPERY,
EL_BD_WALL,
EL_ROCK,
EL_BD_ROCK,
EL_EXIT_OPENING,
EL_EXIT_OPEN,
EL_WALL,
- EL_WALL_CRUMBLED,
+ EL_WALL_SLIPPERY,
EL_EXPANDABLE_WALL,
EL_EXPANDABLE_WALL_HORIZONTAL,
EL_EXPANDABLE_WALL_VERTICAL,
EL_INVISIBLE_STEELWALL_ACTIVE,
EL_INVISIBLE_WALL,
EL_INVISIBLE_WALL_ACTIVE,
- EL_STEELWALL_SLANTED,
+ EL_STEELWALL_SLIPPERY,
EL_EMC_STEELWALL_1,
EL_EMC_STEELWALL_2,
EL_EMC_STEELWALL_3,
EL_EXPANDABLE_WALL_VERTICAL,
EL_EXPANDABLE_WALL_ANY,
EL_BD_WALL,
- EL_WALL_CRUMBLED,
+ EL_WALL_SLIPPERY,
EL_EXIT_CLOSED,
EL_EXIT_OPENING,
EL_EXIT_OPEN,
EL_SIGN_EXIT,
EL_SIGN_YINYANG,
EL_SIGN_OTHER,
- EL_STEELWALL_SLANTED,
+ EL_STEELWALL_SLIPPERY,
EL_EMC_STEELWALL_1,
EL_EMC_STEELWALL_2,
EL_EMC_STEELWALL_3,
EL_SAND,
EL_WALL,
EL_BD_WALL,
- EL_WALL_CRUMBLED,
+ EL_WALL_SLIPPERY,
EL_STEELWALL,
EL_AMOEBA_DEAD,
EL_QUICKSAND_EMPTY,
EL_SIGN_EXIT,
EL_SIGN_YINYANG,
EL_SIGN_OTHER,
- EL_STEELWALL_SLANTED,
+ EL_STEELWALL_SLIPPERY,
EL_EMC_STEELWALL_1,
EL_EMC_STEELWALL_2,
EL_EMC_STEELWALL_3,
#endif
#if 0
- printf("::: InitImages ['%s', '%s'] ['%s', '%s']\n",
+ printf("::: InitImages for '%s' ['%s', '%s'] ['%s', '%s']\n",
+ leveldir_current->identifier,
artwork.gfx_current_identifier,
artwork.gfx_current->identifier,
leveldir_current->graphics_set,
/* if mouse moving inside activated selectbox, select value */
if (my >= gi->selectbox.y && my < gi->selectbox.y + gi->selectbox.height)
gi->selectbox.current_index =
- (my - gi->selectbox.y - gi->border.xsize) / getFontWidth(gi->font);
+ (my - gi->selectbox.y - gi->border.ysize) / getFontHeight(gi->font);
if (gi->selectbox.current_index < 0)
gi->selectbox.current_index = 0;
/* 2nd try: look for special artwork in current level series directory */
filename = getPath3(getCurrentLevelDir(), GRAPHICS_DIRECTORY, basename);
#if 0
+ /*
if (strcmp(basename, "RocksScreen.pcx") == 0)
+ */
printf("::: trying 2 '%s' ...\n", filename);
#endif
if (fileExists(filename))
/* 1st try: look for special artwork configured in level series config */
filename = getPath2(getLevelArtworkDir(TREE_TYPE_GRAPHICS_DIR), basename);
#if 0
+ /*
if (strcmp(basename, "RocksScreen.pcx") == 0)
+ */
printf("::: trying 2.1 '%s' ...\n", filename);
#endif
if (fileExists(filename))
/* 3rd try: look for special artwork in configured artwork directory */
filename = getPath2(getSetupArtworkDir(artwork.gfx_current), basename);
#if 0
+ /*
if (strcmp(basename, "RocksScreen.pcx") == 0)
+ */
printf("::: trying 3 '%s' ...\n", filename);
#endif
if (fileExists(filename))
"normal wall"
},
{
- "wall_crumbled",
+ "wall_slippery",
"wall",
- "round wall"
+ "slippery wall"
},
{
"rock",
{
"sp_gravity_port_right",
"sp_port",
- "port (leading right)"
+ "gravity port (leading right)"
},
{
"sp_gravity_port_down",
"sp_port",
- "port (leading down)"
+ "gravity port (leading down)"
},
{
"sp_gravity_port_left",
"sp_port",
- "port (leading left)"
+ "gravity port (leading left)"
},
{
"sp_gravity_port_up",
"sp_port",
- "port (leading up)"
+ "gravity port (leading up)"
},
{
"sp_sniksnak",
"mole (starts moving down)"
},
{
- "steelwall_slanted",
+ "steelwall_slippery",
"wall",
- "steel wall (slanted)"
+ "slippery steel wall"
},
{
"invisible_sand",
"-",
"-"
},
- {
- "sand_crumbled",
- "-",
- "-"
- },
{
"dynabomb",
"-",
#define EL_EMPTY EL_EMPTY_SPACE
#define EL_SAND 1
#define EL_WALL 2
-#define EL_WALL_CRUMBLED 3
+#define EL_WALL_SLIPPERY 3
#define EL_ROCK 4
#define EL_KEY_OBSOLETE 5 /* obsolete; mapped to EL_KEY_1 */
#define EL_EMERALD 6
#define EL_MOLE_RIGHT 312
#define EL_MOLE_UP 313
#define EL_MOLE_DOWN 314
-#define EL_STEELWALL_SLANTED 315
+#define EL_STEELWALL_SLIPPERY 315
#define EL_INVISIBLE_SAND 316
#define EL_DX_UNKNOWN_15 317
#define EL_DX_UNKNOWN_42 318
#define EL_INVISIBLE_STEELWALL_BOTTOMRIGHT (EL_FIRST_DUMMY + 9)
#define EL_INVISIBLE_STEELWALL_HORIZONTAL (EL_FIRST_DUMMY + 10)
#define EL_INVISIBLE_STEELWALL_VERTICAL (EL_FIRST_DUMMY + 11)
-#define EL_SAND_CRUMBLED (EL_FIRST_DUMMY + 12)
-#define EL_DYNABOMB (EL_FIRST_DUMMY + 13)
-#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 14)
-#define EL_DYNABOMB_PLAYER_1 (EL_FIRST_DUMMY + 15)
-#define EL_DYNABOMB_PLAYER_2 (EL_FIRST_DUMMY + 16)
-#define EL_DYNABOMB_PLAYER_3 (EL_FIRST_DUMMY + 17)
-#define EL_DYNABOMB_PLAYER_4 (EL_FIRST_DUMMY + 18)
-#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 19)
-#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 20)
-#define EL_DEFAULT (EL_FIRST_DUMMY + 21)
-#define EL_BD_DEFAULT (EL_FIRST_DUMMY + 22)
-#define EL_SP_DEFAULT (EL_FIRST_DUMMY + 23)
-#define EL_SB_DEFAULT (EL_FIRST_DUMMY + 24)
-
-#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 25)
+#define EL_DYNABOMB (EL_FIRST_DUMMY + 12)
+#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 13)
+#define EL_DYNABOMB_PLAYER_1 (EL_FIRST_DUMMY + 14)
+#define EL_DYNABOMB_PLAYER_2 (EL_FIRST_DUMMY + 15)
+#define EL_DYNABOMB_PLAYER_3 (EL_FIRST_DUMMY + 16)
+#define EL_DYNABOMB_PLAYER_4 (EL_FIRST_DUMMY + 17)
+#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 18)
+#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 19)
+#define EL_DEFAULT (EL_FIRST_DUMMY + 20)
+#define EL_BD_DEFAULT (EL_FIRST_DUMMY + 21)
+#define EL_SP_DEFAULT (EL_FIRST_DUMMY + 22)
+#define EL_SB_DEFAULT (EL_FIRST_DUMMY + 23)
+
+#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 24)
/* values for graphics/sounds action types */
#define GAME_MODE_PSEUDO_TYPENAME 10
#define GAME_MODE_QUIT 11
-#define PROGRAM_VERSION_MAJOR 2
-#define PROGRAM_VERSION_MINOR 2
+#define PROGRAM_VERSION_MAJOR 3
+#define PROGRAM_VERSION_MINOR 0
#define PROGRAM_VERSION_PATCH 0
-#define PROGRAM_VERSION_RELEASE 8
-#define PROGRAM_VERSION_STRING "2.2.0rc8"
+#define PROGRAM_VERSION_RELEASE 0
+#define PROGRAM_VERSION_STRING "3.0.0"
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
IMG_INVISIBLE_WALL, -1, HA_NEXT,
- IMG_WALL_CRUMBLED, -1, HA_NEXT,
+ IMG_WALL_SLIPPERY, -1, HA_NEXT,
IMG_FONT_GAME_INFO, -1, HA_NEXT,
i++;
}
+#if 1
+ redraw_mask |= REDRAW_FIELD;
+#else
for(i=2; i<16; i++)
{
MarkTileDirty(0, i);
MarkTileDirty(1, i);
}
+#endif
FrameCounter++;
}
return;
DrawGraphicAnimation(sx, sy, graphic);
+
+ if (CAN_BE_CRUMBLED(Feld[x][y]))
+ DrawLevelFieldCrumbledSand(x, y);
}
void DrawLevelElementAnimationIfNeeded(int x, int y, int element)
return;
DrawGraphicAnimation(sx, sy, graphic);
+
+ if (CAN_BE_CRUMBLED(element))
+ DrawLevelFieldCrumbledSand(x, y);
}
void DrawAllPlayers()