projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20040221-2-src
[rocksndiamonds.git]
/
src
/
tools.c
diff --git
a/src/tools.c
b/src/tools.c
index 6b8ae64696af23dee2a8be92a643ba4a6bae91e0..b69aff20581093b7d74ba9fb09917d2b5a5074ac 100644
(file)
--- a/
src/tools.c
+++ b/
src/tools.c
@@
-633,6
+633,7
@@
void DrawPlayer(struct PlayerInfo *player)
player->is_collecting ? ACTION_COLLECTING :
player->is_moving ? ACTION_MOVING :
player->is_snapping ? ACTION_SNAPPING :
player->is_collecting ? ACTION_COLLECTING :
player->is_moving ? ACTION_MOVING :
player->is_snapping ? ACTION_SNAPPING :
+ player->is_dropping ? ACTION_DROPPING :
player->is_waiting ? player->action_waiting : ACTION_DEFAULT);
InitPlayerGfxAnimation(player, action, move_dir);
player->is_waiting ? player->action_waiting : ACTION_DEFAULT);
InitPlayerGfxAnimation(player, action, move_dir);
@@
-857,7
+858,7
@@
void DrawPlayer(struct PlayerInfo *player)
SetDrawtoField(DRAW_DIRECT);
}
SetDrawtoField(DRAW_DIRECT);
}
- MarkTileDirty(sx,sy);
+ MarkTileDirty(sx,
sy);
}
void getGraphicSource(int graphic, int frame, Bitmap **bitmap, int *x, int *y)
}
void getGraphicSource(int graphic, int frame, Bitmap **bitmap, int *x, int *y)
@@
-981,7
+982,7
@@
void DrawMiniGraphicExt(DrawBuffer *d, int x, int y, int graphic)
BlitBitmap(src_bitmap, d, src_x, src_y, MINI_TILEX, MINI_TILEY, x, y);
}
BlitBitmap(src_bitmap, d, src_x, src_y, MINI_TILEX, MINI_TILEY, x, y);
}
-void DrawGraphicShifted(int x,
int y, int dx,
int dy, int graphic, int frame,
+void DrawGraphicShifted(int x,
int y, int dx,
int dy, int graphic, int frame,
int cut_mode, int mask_mode)
{
Bitmap *src_bitmap;
int cut_mode, int mask_mode)
{
Bitmap *src_bitmap;
@@
-1101,13
+1102,13
@@
void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, int frame,
BlitBitmap(src_bitmap, drawto_field, src_x, src_y, width, height,
dest_x, dest_y);
BlitBitmap(src_bitmap, drawto_field, src_x, src_y, width, height,
dest_x, dest_y);
- MarkTileDirty(x,y);
+ MarkTileDirty(x,
y);
}
void DrawGraphicShiftedThruMask(int x, int y, int dx, int dy, int graphic,
int frame, int cut_mode)
{
}
void DrawGraphicShiftedThruMask(int x, int y, int dx, int dy, int graphic,
int frame, int cut_mode)
{
- DrawGraphicShifted(x,
y, dx,
dy, graphic, frame, cut_mode, USE_MASKING);
+ DrawGraphicShifted(x,
y, dx,
dy, graphic, frame, cut_mode, USE_MASKING);
}
void DrawScreenElementExt(int x, int y, int dx, int dy, int element,
}
void DrawScreenElementExt(int x, int y, int dx, int dy, int element,
@@
-1191,6
+1192,10
@@
void DrawLevelFieldThruMask(int x, int y)
DrawLevelElementExt(x, y, 0, 0, Feld[x][y], NO_CUTTING, USE_MASKING);
}
DrawLevelElementExt(x, y, 0, 0, Feld[x][y], NO_CUTTING, USE_MASKING);
}
+#define TILE_GFX_ELEMENT(x, y) \
+ (GfxElement[x][y] != EL_UNDEFINED && Feld[x][y] != EL_EXPLOSION ? \
+ GfxElement[x][y] : Feld[x][y])
+
static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame)
{
Bitmap *src_bitmap;
static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame)
{
Bitmap *src_bitmap;
@@
-1220,8
+1225,7
@@
static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame)
if (!IN_LEV_FIELD(x, y))
return;
if (!IN_LEV_FIELD(x, y))
return;
- element = (GfxElement[x][y] != EL_UNDEFINED && Feld[x][y] != EL_EXPLOSION ?
- GfxElement[x][y] : Feld[x][y]);
+ element = TILE_GFX_ELEMENT(x, y);
/* crumble field itself */
if (GFX_CRUMBLED(element) && !IS_MOVING(x, y))
/* crumble field itself */
if (GFX_CRUMBLED(element) && !IS_MOVING(x, y))
@@
-1236,7
+1240,12
@@
static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame)
int xx = x + xy[i][0];
int yy = y + xy[i][1];
int xx = x + xy[i][0];
int yy = y + xy[i][1];
+#if 1
+ element = (IN_LEV_FIELD(xx, yy) ? TILE_GFX_ELEMENT(xx, yy) :
+ BorderElement);
+#else
element = (IN_LEV_FIELD(xx, yy) ? Feld[xx][yy] : BorderElement);
element = (IN_LEV_FIELD(xx, yy) ? Feld[xx][yy] : BorderElement);
+#endif
/* check if neighbour field is of same type */
if (GFX_CRUMBLED(element) && !IS_MOVING(xx, yy))
/* check if neighbour field is of same type */
if (GFX_CRUMBLED(element) && !IS_MOVING(xx, yy))
@@
-1283,11
+1292,23
@@
static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame)
int sxx = sx + xy[i][0];
int syy = sy + xy[i][1];
int sxx = sx + xy[i][0];
int syy = sy + xy[i][1];
+#if 1
+ if (!IN_LEV_FIELD(xx, yy) ||
+ !IN_SCR_FIELD(sxx, syy) ||
+ IS_MOVING(xx, yy))
+ continue;
+
+ element = TILE_GFX_ELEMENT(xx, yy);
+
+ if (!GFX_CRUMBLED(element))
+ continue;
+#else
if (!IN_LEV_FIELD(xx, yy) ||
!IN_SCR_FIELD(sxx, syy) ||
!GFX_CRUMBLED(Feld[xx][yy]) ||
IS_MOVING(xx, yy))
continue;
if (!IN_LEV_FIELD(xx, yy) ||
!IN_SCR_FIELD(sxx, syy) ||
!GFX_CRUMBLED(Feld[xx][yy]) ||
IS_MOVING(xx, yy))
continue;
+#endif
#if 1
graphic = el_act2crm(Feld[xx][yy], ACTION_DEFAULT);
#if 1
graphic = el_act2crm(Feld[xx][yy], ACTION_DEFAULT);
@@
-1598,8
+1619,10
@@
void AnimateEnvelope(int envelope_nr, int anim_mode, int action)
boolean draw_masked = graphic_info[graphic].draw_masked;
int mask_mode = (draw_masked ? BLIT_MASKED : BLIT_ON_BACKGROUND);
boolean ffwd_delay = (tape.playing && tape.fast_forward);
boolean draw_masked = graphic_info[graphic].draw_masked;
int mask_mode = (draw_masked ? BLIT_MASKED : BLIT_ON_BACKGROUND);
boolean ffwd_delay = (tape.playing && tape.fast_forward);
+ boolean no_delay = (tape.index_search);
unsigned long anim_delay = 0;
unsigned long anim_delay = 0;
- int anim_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay);
+ int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay);
+ int anim_delay_value = (no_delay ? 0 : frame_delay_value);
int font_nr = FONT_ENVELOPE_1 + envelope_nr;
int font_width = getFontWidth(font_nr);
int font_height = getFontHeight(font_nr);
int font_nr = FONT_ENVELOPE_1 + envelope_nr;
int font_width = getFontWidth(font_nr);
int font_height = getFontHeight(font_nr);
@@
-1648,7
+1671,9
@@
void ShowEnvelope(int envelope_nr)
int sound_opening = element_info[element].sound[ACTION_OPENING];
int sound_closing = element_info[element].sound[ACTION_CLOSING];
boolean ffwd_delay = (tape.playing && tape.fast_forward);
int sound_opening = element_info[element].sound[ACTION_OPENING];
int sound_closing = element_info[element].sound[ACTION_CLOSING];
boolean ffwd_delay = (tape.playing && tape.fast_forward);
- int wait_delay_value = (ffwd_delay ? 500 : 1000);
+ boolean no_delay = (tape.index_search);
+ int normal_delay_value = ONE_SECOND_DELAY / (ffwd_delay ? 2 : 1);
+ int wait_delay_value = (no_delay ? 0 : normal_delay_value);
int anim_mode = graphic_info[graphic].anim_mode;
int main_anim_mode = (anim_mode == ANIM_NONE ? ANIM_VERTICAL|ANIM_HORIZONTAL:
anim_mode == ANIM_DEFAULT ? ANIM_VERTICAL : anim_mode);
int anim_mode = graphic_info[graphic].anim_mode;
int main_anim_mode = (anim_mode == ANIM_NONE ? ANIM_VERTICAL|ANIM_HORIZONTAL:
anim_mode == ANIM_DEFAULT ? ANIM_VERTICAL : anim_mode);
@@
-2331,8
+2356,10
@@
unsigned int MoveDoor(unsigned int door_state)
stepsize = 20; /* must be choosen to always draw last frame */
door_delay_value = 0;
stepsize = 20; /* must be choosen to always draw last frame */
door_delay_value = 0;
+#if 0
StopSound(SND_DOOR_OPENING);
StopSound(SND_DOOR_CLOSING);
StopSound(SND_DOOR_OPENING);
StopSound(SND_DOOR_CLOSING);
+#endif
}
if (global.autoplay_leveldir)
}
if (global.autoplay_leveldir)
@@
-2350,7
+2377,7
@@
unsigned int MoveDoor(unsigned int door_state)
door_1.anim_mode == ANIM_VERTICAL ? DYSIZE : DXSIZE);
int x;
door_1.anim_mode == ANIM_VERTICAL ? DYSIZE : DXSIZE);
int x;
- if (!(door_state & DOOR_NO_DELAY))
+ if (!(door_state & DOOR_NO_DELAY)
&& !setup.quick_doors
)
{
/* opening door sound has priority over simultaneously closing door */
if (door_state & (DOOR_OPEN_1 | DOOR_OPEN_2))
{
/* opening door sound has priority over simultaneously closing door */
if (door_state & (DOOR_OPEN_1 | DOOR_OPEN_2))
@@
-2533,11
+2560,13
@@
unsigned int MoveDoor(unsigned int door_state)
}
}
}
}
+#if 0
if (setup.quick_doors)
{
StopSound(SND_DOOR_OPENING);
StopSound(SND_DOOR_CLOSING);
}
if (setup.quick_doors)
{
StopSound(SND_DOOR_OPENING);
StopSound(SND_DOOR_CLOSING);
}
+#endif
if (door_state & DOOR_ACTION_1)
door1 = door_state & DOOR_ACTION_1;
if (door_state & DOOR_ACTION_1)
door1 = door_state & DOOR_ACTION_1;