InitJoysticks();
}
-static int get_element_from_group_element(int element)
+int GetElementFromGroupElement(int element)
{
if (IS_GROUP_ELEMENT(element))
{
}
else if (IS_GROUP_ELEMENT(element))
{
- Feld[x][y] = get_element_from_group_element(element);
+ Feld[x][y] = GetElementFromGroupElement(element);
InitField(x, y, init_game);
}
struct TextPosInfo *pos = &game.panel.gems;
int font_nr = FONT_TEXT_2;
int font_width = getFontWidth(font_nr);
- int digits = pos->chars;
+ int chars = pos->chars;
if (PANEL_DEACTIVATED(pos))
return;
- pos->width = digits * font_width;
+ pos->width = chars * font_width;
- DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, digits), font_nr);
+ DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, chars), font_nr);
}
void DrawGameValue_Dynamite(int value)
struct TextPosInfo *pos = &game.panel.inventory;
int font_nr = FONT_TEXT_2;
int font_width = getFontWidth(font_nr);
- int digits = pos->chars;
+ int chars = pos->chars;
if (PANEL_DEACTIVATED(pos))
return;
- pos->width = digits * font_width;
+ pos->width = chars * font_width;
- DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, digits), font_nr);
+ DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, chars), font_nr);
}
void DrawGameValue_Score(int value)
struct TextPosInfo *pos = &game.panel.score;
int font_nr = FONT_TEXT_2;
int font_width = getFontWidth(font_nr);
- int digits = pos->chars;
+ int chars = pos->chars;
if (PANEL_DEACTIVATED(pos))
return;
- pos->width = digits * font_width;
+ pos->width = chars * font_width;
- DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, digits), font_nr);
+ DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, chars), font_nr);
}
void DrawGameValue_Time(int value)
{
struct TextPosInfo *pos = &game.panel.time;
static int last_value = -1;
- int digits1 = 3;
- int digits2 = 4;
- int digits = pos->chars;
+ int chars1 = 3;
+ int chars2 = 4;
+ int chars = pos->chars;
int font1_nr = FONT_TEXT_2;
int font2_nr = FONT_TEXT_1;
int font_nr = font1_nr;
- boolean use_dynamic_digits = (digits == -1 ? TRUE : FALSE);
+ boolean use_dynamic_chars = (chars == -1 ? TRUE : FALSE);
if (PANEL_DEACTIVATED(pos))
return;
- if (use_dynamic_digits) /* use dynamic number of digits */
+ if (use_dynamic_chars) /* use dynamic number of chars */
{
- digits = (value < 1000 ? digits1 : digits2);
+ chars = (value < 1000 ? chars1 : chars2);
font_nr = (value < 1000 ? font1_nr : font2_nr);
}
- /* clear background if value just changed its size (dynamic digits only) */
- if (use_dynamic_digits && (last_value < 1000) != (value < 1000))
+ /* clear background if value just changed its size (dynamic chars only) */
+ if (use_dynamic_chars && (last_value < 1000) != (value < 1000))
{
- int width1 = digits1 * getFontWidth(font1_nr);
- int width2 = digits2 * getFontWidth(font2_nr);
+ int width1 = chars1 * getFontWidth(font1_nr);
+ int width2 = chars2 * getFontWidth(font2_nr);
int max_width = MAX(width1, width2);
int max_height = MAX(getFontHeight(font1_nr), getFontHeight(font2_nr));
max_width, max_height);
}
- pos->width = digits * getFontWidth(font_nr);
+ pos->width = chars * getFontWidth(font_nr);
- DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, digits), font_nr);
+ DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, chars), font_nr);
last_value = value;
}
void DrawGameValue_Level(int value)
{
struct TextPosInfo *pos = &game.panel.level;
- int digits1 = 2;
- int digits2 = 3;
- int digits = pos->chars;
+ int chars1 = 2;
+ int chars2 = 3;
+ int chars = pos->chars;
int font1_nr = FONT_TEXT_2;
int font2_nr = FONT_TEXT_1;
int font_nr = font1_nr;
- boolean use_dynamic_digits = (digits == -1 ? TRUE : FALSE);
+ boolean use_dynamic_chars = (chars == -1 ? TRUE : FALSE);
if (PANEL_DEACTIVATED(pos))
return;
- if (use_dynamic_digits) /* use dynamic number of digits */
+ if (use_dynamic_chars) /* use dynamic number of chars */
{
- digits = (level_nr < 100 ? digits1 : digits2);
+ chars = (level_nr < 100 ? chars1 : chars2);
font_nr = (level_nr < 100 ? font1_nr : font2_nr);
}
- pos->width = digits * getFontWidth(font_nr);
+ pos->width = chars * getFontWidth(font_nr);
- DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, digits), font_nr);
+ DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, chars), font_nr);
}
void DrawGameValue_Keys(int key[MAX_NUM_KEYS])
static void CreateFieldExt(int x, int y, int element, boolean is_change)
{
int old_element = Feld[x][y];
- int new_element = get_element_from_group_element(element);
+ int new_element = GetElementFromGroupElement(element);
int previous_move_direction = MovDir[x][y];
#if USE_NEW_CUSTOM_VALUE
int last_ce_value = CustomValue[x][y];
if (change->can_change)
{
-#if 0
+#if 1
/* !!! not clear why graphic animation should be reset at all here !!! */
+ /* !!! UPDATE: but is needed for correct Snake Bite tail animation !!! */
#if USE_GFX_RESET_WHEN_NOT_MOVING
/* when a custom element is about to change (for example by change delay),
do not reset graphic animation when the custom element is moving */
- if (IS_MOVING(x, y))
+ if (!IS_MOVING(x, y))
#endif
{
ResetGfxAnimation(x, y);
int i, x, y;
#endif
+#if 0
+ /* !!! THIS IS APPARENTLY WRONG FOR PLAYER RELOCATION !!! */
/* only horizontal XOR vertical scroll direction allowed */
if ((dx == 0 && dy == 0) || (dx != 0 && dy != 0))
return;
+#endif
#if 1
if (bitmap_db_field2 == NULL)
bitmap_db_field2 = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH);
+ /* needed when blitting directly to same bitmap -- should not be needed with
+ recent SDL libraries, but apparently does not work in 1.2.11 directly */
BlitBitmap(drawto_field, bitmap_db_field2,
FX + TILEX * (dx == -1) - softscroll_offset,
FY + TILEY * (dy == -1) - softscroll_offset,
#else
#if 1
+ /* !!! DOES NOT WORK FOR DIAGONAL PLAYER RELOCATION !!! */
int xsize = (BX2 - BX1 + 1);
int ysize = (BY2 - BY1 + 1);
int start = (dx != 0 ? (dx == -1 ? BX1 : BX2) : (dy == -1 ? BY1 : BY2));