projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20030825-1-src
[rocksndiamonds.git]
/
src
/
tools.c
diff --git
a/src/tools.c
b/src/tools.c
index a20e117759a785dd77bd709c53c3a49b6e998692..9d48e4b3ba1e7f6ee8a1747dd8cea42f56494645 100644
(file)
--- a/
src/tools.c
+++ b/
src/tools.c
@@
-34,6
+34,7
@@
/* forward declaration for internal use */
static void UnmapToolButtons();
static void HandleToolButtons(struct GadgetInfo *);
/* forward declaration for internal use */
static void UnmapToolButtons();
static void HandleToolButtons(struct GadgetInfo *);
+static int el_act_dir2crm(int, int, int);
static struct GadgetInfo *tool_gadget[NUM_TOOL_BUTTONS];
static int request_gadget_id = -1;
static struct GadgetInfo *tool_gadget[NUM_TOOL_BUTTONS];
static int request_gadget_id = -1;
@@
-503,6
+504,9
@@
inline void DrawLevelGraphicAnimationIfNeeded(int x, int y, int graphic)
return;
DrawGraphicAnimation(sx, sy, graphic);
return;
DrawGraphicAnimation(sx, sy, graphic);
+
+ if (CAN_BE_CRUMBLED(Feld[x][y]))
+ DrawLevelFieldCrumbledSand(x, y);
}
void DrawLevelElementAnimationIfNeeded(int x, int y, int element)
}
void DrawLevelElementAnimationIfNeeded(int x, int y, int element)
@@
-519,6
+523,9
@@
void DrawLevelElementAnimationIfNeeded(int x, int y, int element)
return;
DrawGraphicAnimation(sx, sy, graphic);
return;
DrawGraphicAnimation(sx, sy, graphic);
+
+ if (CAN_BE_CRUMBLED(element))
+ DrawLevelFieldCrumbledSand(x, y);
}
void DrawAllPlayers()
}
void DrawAllPlayers()
@@
-592,6
+599,10
@@
void DrawPlayer(struct PlayerInfo *player)
player->is_moving ? ACTION_MOVING :
player->snapped ? ACTION_SNAPPING : ACTION_DEFAULT);
player->is_moving ? ACTION_MOVING :
player->snapped ? ACTION_SNAPPING : ACTION_DEFAULT);
+#if 0
+ printf("::: '%s'\n", element_action_info[action].suffix);
+#endif
+
InitPlayerGfxAnimation(player, action, move_dir);
/* ----------------------------------------------------------------------- */
InitPlayerGfxAnimation(player, action, move_dir);
/* ----------------------------------------------------------------------- */
@@
-658,8
+669,13
@@
void DrawPlayer(struct PlayerInfo *player)
{
if (player_is_moving && GfxElement[jx][jy] != EL_UNDEFINED)
{
{
if (player_is_moving && GfxElement[jx][jy] != EL_UNDEFINED)
{
+#if 1
+ if (CAN_BE_CRUMBLED(GfxElement[jx][jy]))
+ DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame);
+#else
if (GfxElement[jx][jy] == EL_SAND)
DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame);
if (GfxElement[jx][jy] == EL_SAND)
DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame);
+#endif
else
{
int old_element = GfxElement[jx][jy];
else
{
int old_element = GfxElement[jx][jy];
@@
-1298,8
+1314,13
@@
void DrawLevelFieldCrumbledSand(int x, int y)
void DrawLevelFieldCrumbledSandDigging(int x, int y, int direction,
int step_frame)
{
void DrawLevelFieldCrumbledSandDigging(int x, int y, int direction,
int step_frame)
{
+#if 1
+ int graphic1 = el_act_dir2img(GfxElement[x][y], ACTION_DIGGING, direction);
+ int graphic2 = el_act_dir2crm(GfxElement[x][y], ACTION_DIGGING, direction);
+#else
int graphic1 = el_act_dir2img(EL_SAND, ACTION_DIGGING, direction);
int graphic2 = el_act_dir2img(EL_SAND_CRUMBLED, ACTION_DIGGING, direction);
int graphic1 = el_act_dir2img(EL_SAND, ACTION_DIGGING, direction);
int graphic2 = el_act_dir2img(EL_SAND_CRUMBLED, ACTION_DIGGING, direction);
+#endif
int frame1 = getGraphicAnimationFrame(graphic1, step_frame);
int frame2 = getGraphicAnimationFrame(graphic2, step_frame);
int sx = SCREENX(x), sy = SCREENY(y);
int frame1 = getGraphicAnimationFrame(graphic1, step_frame);
int frame2 = getGraphicAnimationFrame(graphic2, step_frame);
int sx = SCREENX(x), sy = SCREENY(y);
@@
-1617,8
+1638,7
@@
static void DrawMicroLevelLabelExt(int mode)
if (strlen(label_text) > 0)
{
if (strlen(label_text) > 0)
{
- int text_width = strlen(label_text) * getFontWidth(font_nr);
- int lxpos = SX + (SXSIZE - text_width) / 2;
+ int lxpos = SX + (SXSIZE - getTextWidth(label_text, font_nr)) / 2;
int lypos = MICROLABEL_YPOS;
DrawText(lxpos, lypos, label_text, font_nr);
int lypos = MICROLABEL_YPOS;
DrawText(lxpos, lypos, label_text, font_nr);
@@
-1654,8
+1674,8
@@
void DrawMicroLevel(int xpos, int ypos, boolean restart)
if (leveldir_current->name)
{
if (leveldir_current->name)
{
- int
len = strlen(leveldir_current->name
);
- int lxpos = SX + (SXSIZE -
len * getFontWidth(FONT_TEXT_1)
) / 2;
+ int
text_width = getTextWidth(leveldir_current->name, FONT_TEXT_1
);
+ int lxpos = SX + (SXSIZE -
text_width
) / 2;
int lypos = SY + 352;
DrawText(lxpos, lypos, leveldir_current->name, FONT_TEXT_1);
int lypos = SY + 352;
DrawText(lxpos, lypos, leveldir_current->name, FONT_TEXT_1);
@@
-1866,6
+1886,8
@@
boolean Request(char *text, unsigned int req_state)
SetDrawBackgroundMask(REDRAW_FIELD | REDRAW_DOOR_1);
SetDrawBackgroundMask(REDRAW_FIELD | REDRAW_DOOR_1);
+ SetMouseCursor(CURSOR_DEFAULT);
+
while(result < 0)
{
if (PendingEvent())
while(result < 0)
{
if (PendingEvent())
@@
-2446,6
+2468,14
@@
int el_act_dir2img(int element, int action, int direction)
return element_info[element].direction_graphic[action][direction];
}
return element_info[element].direction_graphic[action][direction];
}
+static int el_act_dir2crm(int element, int action, int direction)
+{
+ element = GFX_ELEMENT(element);
+ direction = MV_DIR_BIT(direction);
+
+ return element_info[element].direction_crumbled[action][direction];
+}
+
int el_act2img(int element, int action)
{
element = GFX_ELEMENT(element);
int el_act2img(int element, int action)
{
element = GFX_ELEMENT(element);