+/***********************************************************
+* 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 ----- */
+/***********************************************************
+* 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 ----- */
{ "player1.moving.right.xpos", "4" },
{ "player1.moving.right.ypos", "1" },
{ "player1.moving.right.frames", "4" },
- { "player1.moving.right.delay", "4" },
{ "player1.moving.right.start_frame", "1" },
+ { "player1.moving.right.delay", "4" },
{ "player1.digging.down", "RocksHeroes.pcx" },
{ "player1.digging.down.xpos", "0" },
{ "player1.digging.down.ypos", "0" },
{ "player1.digging.down.frames", "4" },
+ { "player1.digging.down.start_frame", "1" },
+ { "player1.digging.down.delay", "4" },
{ "player1.digging.up", "RocksHeroes.pcx" },
{ "player1.digging.up.xpos", "4" },
{ "player1.digging.up.ypos", "0" },
{ "player1.digging.up.frames", "4" },
+ { "player1.digging.up.start_frame", "1" },
+ { "player1.digging.up.delay", "4" },
{ "player1.digging.left", "RocksHeroes.pcx" },
{ "player1.digging.left.xpos", "0" },
{ "player1.digging.left.ypos", "1" },
{ "player1.digging.left.frames", "4" },
+ { "player1.digging.left.start_frame", "1" },
+ { "player1.digging.left.delay", "4" },
{ "player1.digging.right", "RocksHeroes.pcx" },
{ "player1.digging.right.xpos", "4" },
{ "player1.digging.right.ypos", "1" },
{ "player1.digging.right.frames", "4" },
+ { "player1.digging.right.start_frame", "1" },
+ { "player1.digging.right.delay", "4" },
{ "player1.pushing.down", "RocksHeroes.pcx" },
{ "player1.pushing.down.xpos", "0" },
{ "player1.pushing.down.ypos", "0" },
+/***********************************************************
+* 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 ----- */
+/***********************************************************
+* 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-02-18 21:01]"
+#define COMPILE_DATE_STRING "[2003-02-20 01:47]"
Feld[x][y] = EL_SP_MURPHY_CLONE;
break;
}
+ else
+ {
+ stored_player[0].use_murphy_graphic = TRUE;
+ }
Feld[x][y] = EL_PLAYER1;
}
player->GfxPos = 0;
player->Frame = 0;
+ player->GfxAction = ACTION_DEFAULT;
+
+ player->use_murphy_graphic = FALSE;
+
player->actual_frame_counter = 0;
player->frame_reset_delay = 0;
player->last_move_dir = MV_NO_MOVING;
player->is_moving = FALSE;
+ player->is_moving = FALSE;
+ player->is_waiting = FALSE;
+
player->move_delay = game.initial_move_delay;
player->move_delay_value = game.initial_move_delay_value;
started_moving = TRUE;
Store[x][y] = EL_ACID;
+#if 0
+ /* !!! TEST !!! better use "_FALLING" etc. !!! */
+ GfxAction[x][y+1] = ACTION_ACTIVE;
+#endif
}
else if (CAN_SMASH(element) && Feld[x][y+1] == EL_BLOCKED &&
JustStopped[x][y])
dy == +1 ? MV_DOWN : MV_NO_MOVING);
int element;
+ player->is_digging = FALSE;
+
if (player->MovPos == 0)
player->Pushing = FALSE;
player->push_delay = 0;
+ if (Feld[x][y] != element) /* really digged something */
+ player->is_digging = TRUE;
+
return MF_MOVING;
}
player->Pushing = FALSE;
player->snapped = FALSE;
+ player->is_digging = FALSE;
return FALSE;
}
return FALSE;
player->snapped = TRUE;
+ player->is_digging = FALSE;
DrawLevelField(x, y);
BackToFront();
int font_type = gi->text.font_type;
int font_width = getFontWidth(font_type);
int border = gi->border.size;
+
strcpy(text, gi->text.value);
strcat(text, " ");
/* left part of gadget */
- BlitBitmap(gd->bitmap, drawto,
- gd->x, gd->y, border, gi->height, gi->x, gi->y);
+ BlitBitmapOnBackground(gd->bitmap, drawto,
+ gd->x, gd->y, border, gi->height, gi->x, gi->y);
/* middle part of gadget */
for (i=0; i<=gi->text.size; i++)
- BlitBitmap(gd->bitmap, drawto,
- gd->x + border, gd->y, font_width, gi->height,
- gi->x + border + i * font_width, gi->y);
+ BlitBitmapOnBackground(gd->bitmap, drawto,
+ gd->x + border, gd->y, font_width, gi->height,
+ gi->x + border + i * font_width, gi->y);
/* right part of gadget */
- BlitBitmap(gd->bitmap, drawto,
- gd->x + gi->border.width - border, gd->y,
- border, gi->height, gi->x + gi->width - border, gi->y);
+ BlitBitmapOnBackground(gd->bitmap, drawto,
+ gd->x + gi->border.width -border, gd->y, border,
+ gi->height, gi->x + gi->width - border, gi->y);
/* gadget text value */
DrawTextExt(drawto,
gi->x + border, gi->y + border, text,
- font_type, FONT_OPAQUE);
+ font_type, FONT_MASKED);
cursor_letter = gi->text.value[gi->text.cursor_position];
cursor_string[0] = '~';
DrawTextExt(drawto,
gi->x + border + gi->text.cursor_position * font_width,
gi->y + border, cursor_string,
- font_type, FONT_OPAQUE);
+ font_type, FONT_MASKED);
}
break;
int width, int height,
int dst_x, int dst_y)
{
- if (DrawingOnBackground(src_x, src_y))
+ if (DrawingOnBackground(dst_x, dst_y))
{
/* draw background */
BlitBitmap(gfx.background_bitmap, dst_bitmap, dst_x, dst_y, width, height,
int MovDir, MovPos, GfxPos;
int Frame;
+ int GfxAction;
+
+ boolean use_murphy_graphic;
+
boolean Pushing;
boolean Switching;
boolean LevelSolved, GameOver;
boolean snapped;
int last_move_dir;
- int is_moving;
+ boolean is_moving;
+
+ boolean is_digging;
+ boolean is_waiting;
unsigned long move_delay;
int move_delay_value;
static int setup_mode = SETUP_MODE_MAIN;
#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
-static Bitmap *scrollbar_bitmap[4];
+#define NUM_SCROLLBAR_BITMAPS 2
+static Bitmap *scrollbar_bitmap[NUM_SCROLLBAR_BITMAPS];
#endif
#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
int i;
- for (i=0; i<2; i++)
+ for (i=0; i < NUM_SCROLLBAR_BITMAPS; i++)
{
scrollbar_bitmap[i] = CreateBitmap(TILEX, TILEY, DEFAULT_DEPTH);
int i;
#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
- for (i=0; i<4; i++)
+ for (i=0; i < NUM_SCROLLBAR_BITMAPS; i++)
{
/* prevent freeing clip mask and GC twice */
scrollbar_bitmap[i]->clip_mask = None;
/* draw player himself */
- if (game.emulation == EMU_SUPAPLEX)
+ if (player->use_murphy_graphic)
{
static int last_dir = MV_LEFT;
int action = (player->programmed_action ? player->programmed_action :
{
if (player->MovDir == MV_LEFT)
graphic = (player->Pushing ? IMG_PLAYER1_PUSHING_LEFT :
+ player->is_digging ? IMG_PLAYER1_DIGGING_LEFT :
player->is_moving ? IMG_PLAYER1_MOVING_LEFT :
+ player->snapped ? IMG_PLAYER1_SNAPPING_LEFT :
IMG_PLAYER1_LEFT);
else if (player->MovDir == MV_RIGHT)
graphic = (player->Pushing ? IMG_PLAYER1_PUSHING_RIGHT :
+ player->is_digging ? IMG_PLAYER1_DIGGING_RIGHT :
player->is_moving ? IMG_PLAYER1_MOVING_RIGHT :
+ player->snapped ? IMG_PLAYER1_SNAPPING_RIGHT :
IMG_PLAYER1_RIGHT);
else if (player->MovDir == MV_UP)
graphic = (player->Pushing ? IMG_PLAYER1_PUSHING_UP :
+ player->is_digging ? IMG_PLAYER1_DIGGING_UP :
player->is_moving ? IMG_PLAYER1_MOVING_UP :
+ player->snapped ? IMG_PLAYER1_SNAPPING_UP :
IMG_PLAYER1_UP);
else /* MV_DOWN || MV_NO_MOVING */
graphic = (player->Pushing ? IMG_PLAYER1_PUSHING_DOWN :
+ player->is_digging ? IMG_PLAYER1_DIGGING_DOWN :
player->is_moving ? IMG_PLAYER1_MOVING_DOWN :
+ player->snapped ? IMG_PLAYER1_SNAPPING_DOWN :
IMG_PLAYER1_DOWN);
graphic = PLAYER_NR_GFX(graphic, player->index_nr);