-#define COMPILE_DATE_STRING "2010-04-22 01:39"
+#define COMPILE_DATE_STRING "2010-05-21 00:52"
int max_lines_per_screen = (SYSIZE - pad_y) / font_height - 1;
return DrawTextFile(sx, sy, filename, font_nr, max_chars_per_line, -1,
- max_lines_per_screen, -1, TRUE, FALSE, FALSE);
+ max_lines_per_screen, 0, -1, TRUE, FALSE, FALSE);
}
static void DrawPropertiesInfo()
extern void PlayLevelSound_EM(int, int, int, int);
extern void InitGraphicInfo_EM(void);
+extern void CheckSingleStepMode_EM(byte action[], int, boolean);
void SetGfxAnimation_EM(struct GraphicInfo_EM *, int, int, int, int);
void getGraphicSourceObjectExt_EM(struct GraphicInfo_EM *, int, int, int, int);
extern void SetBitmaps_SP(Bitmap **);
#endif
+void CheckSingleStepMode_SP(boolean);
+
void getGraphicSource_SP(struct GraphicInfo_SP *, int, int, int, int);
int getGraphicInfo_Delay(int);
boolean isNextAnimationFrame_SP(int, int);
if (!music_info_listed(music_file_info, music->filename))
{
*new = get_music_file_info(music->filename, i);
+#if 0
+ if (*new != NULL)
+ printf(":1: adding '%s' ['%s'] ...\n", (*new)->title, music->filename);
+#endif
if (*new != NULL)
new = &(*new)->next;
}
if (!music_info_listed(music_file_info, basename))
{
*new = get_music_file_info(basename, MAP_NOCONF_MUSIC(num_music_noconf));
+#if 0
+ if (*new != NULL)
+ printf(":2: adding '%s' ['%s'] ...\n", (*new)->title, basename);
+#endif
if (*new != NULL)
new = &(*new)->next;
}
else
{
#if 1
- boolean half_shifted_x = (EVEN(SCR_FIELDX) && screen_x % TILEX);
- boolean half_shifted_y = (EVEN(SCR_FIELDY) && screen_y % TILEY);
+#if 1
+ boolean half_shifted_x = (screen_x % TILEX != 0);
+ boolean half_shifted_y = (screen_y % TILEY != 0);
+#else
+ boolean half_shifted_x = (EVEN(SCR_FIELDX) && screen_x % TILEX != 0);
+ boolean half_shifted_y = (EVEN(SCR_FIELDY) && screen_y % TILEY != 0);
+#endif
+
+#if 0
+#if 1
+ printf("::: %d, %d\n", EVEN(SCR_FIELDX), screen_x);
+#else
+ half_shifted_x = TRUE;
+ half_shifted_y = FALSE;
+#endif
+#endif
+
int x1 = 0, x2 = SCR_FIELDX - (half_shifted_x ? 0 : 1);
int y1 = 0, y2 = SCR_FIELDY - (half_shifted_y ? 0 : 1);
int scroll_xoffset = (half_shifted_x ? TILEX / 2 : 0);
static void DrawLevelFieldCrumbled_EM(int x, int y, int sx, int sy,
int crm, boolean draw_masked)
{
+#if 1
+ struct GraphicInfo_EM *g;
+#else
struct GraphicInfo_EM *g = getObjectGraphic(x, y);
+#endif
int left = screen_x / TILEX;
int top = screen_y / TILEY;
int i;
if (crm == 0) /* no crumbled edges for this tile */
return;
+#if 1
+ g = getObjectGraphic(x, y);
+#endif
+
#if 0
if (x == 3 && y == 3 && frame == 0)
printf("::: %d, %d\n",
printf("::: %05d: %lu, %d\n", FrameCounter, RandomEM, frame);
#endif
+#if 0
game_animscreen();
#if 1
#endif
blitscreen();
+#endif
#endif
RandomEM = RandomEM * 129 + 1;
if (!warp_mode) /* do not redraw values in warp mode */
DrawGameDoorValues_EM();
}
+
+ CheckSingleStepMode_EM(action, frame, game_em.any_player_moving);
+
+#if 1
+ game_animscreen();
+
+#if 1
+#if 0
+ SyncDisplay();
+#endif
+
+ blitscreen();
+#endif
+#endif
}
/* read input device for players */
if (!warp_mode) /* do not redraw values in warp mode */
DrawGameDoorValues_SP();
+ CheckSingleStepMode_SP(PlayField16[MurphyPosIndex] != fiMurphy);
+
for (x = DisplayMinX; x <= DisplayMaxX; x++)
for (y = DisplayMinY; y <= DisplayMaxY; y++)
GfxFrame[x][y]++;
/* gadget text value */
#if 1
DrawTextBuffer(gi->x + border_x, gi->y + border_y, gi->textarea.value,
- font_nr, gi->textarea.xsize, -1, gi->textarea.ysize,
+ font_nr, gi->textarea.xsize, 0, -1, gi->textarea.ysize,
BLIT_ON_BACKGROUND, FALSE, FALSE, FALSE);
#else
DrawTextToTextArea(gi->x + border_x, gi->y + border_y,
return TRUE;
#if defined(TARGET_SDL)
- if (fileHasPrefix(basename, "mod") ||
+ if ((fileHasPrefix(basename, "mod") && !fileHasSuffix(basename, "txt")) ||
fileHasSuffix(basename, "mod") ||
fileHasSuffix(basename, "s3m") ||
fileHasSuffix(basename, "it") ||
}
+/* ========================================================================= */
+/* text string helper functions */
+/* ========================================================================= */
+
+int maxWordLengthInString(char *text)
+{
+ char *text_ptr;
+ int max_word_len = 0;
+
+ for (text_ptr = text; *text_ptr; text_ptr++)
+ max_word_len = (*text_ptr != ' ' ? max_word_len + 1 : 0);
+
+ return max_word_len;
+}
+
+
/* ========================================================================= */
/* simple text drawing functions */
/* ========================================================================= */
}
static void DrawTextBuffer_Flush(int x, int y, char *buffer, int font_nr,
- int line_length, int cut_length, int mask_mode,
+ int line_length, int cut_length,
+ int line_spacing, int mask_mode,
boolean centered, int current_line)
{
int buffer_len = strlen(buffer);
(centered ? font_width * (line_length - buffer_len) / 2 : 0);
int final_cut_length = MAX(0, cut_length - offset_chars);
int xx = x + offset_xsize;
- int yy = y + current_line * font_height;
+ int yy = y + current_line * (font_height + line_spacing);
buffer[final_cut_length] = '\0';
int DrawTextBuffer(int x, int y, char *text_buffer, int font_nr,
int line_length, int cut_length, int max_lines,
- int mask_mode, boolean autowrap, boolean centered,
- boolean parse_comments)
+ int line_spacing, int mask_mode, boolean autowrap,
+ boolean centered, boolean parse_comments)
{
#if 0
int font_width = getFontWidth(font_nr);
if (buffer_len > 0 && current_line < max_lines)
{
DrawTextBuffer_Flush(x, y, buffer, font_nr, line_length, cut_length,
- mask_mode, centered, current_line);
+ line_spacing, mask_mode, centered, current_line);
current_line++;
{
#if 1
DrawTextBuffer_Flush(x, y, buffer, font_nr, line_length, cut_length,
- mask_mode, centered, current_line);
+ line_spacing, mask_mode, centered, current_line);
#else
int offset_chars = (centered ? (line_length - buffer_len) / 2 : 0);
int offset_xsize =
{
#if 1
DrawTextBuffer_Flush(x, y, buffer, font_nr, line_length, cut_length,
- mask_mode, centered, current_line);
+ line_spacing, mask_mode, centered, current_line);
#else
int offset_chars = (centered ? (line_length - buffer_len) / 2 : 0);
int offset_xsize =
int DrawTextFile(int x, int y, char *filename, int font_nr,
int line_length, int cut_length, int max_lines,
- int mask_mode, boolean autowrap, boolean centered,
- boolean parse_comments)
+ int line_spacing, int mask_mode, boolean autowrap,
+ boolean centered, boolean parse_comments)
{
char *text_buffer = GetTextBufferFromFile(filename, MAX_LINES_FROM_FILE);
int num_lines_printed = DrawTextBuffer(x, y, text_buffer, font_nr,
line_length, cut_length, max_lines,
- mask_mode, autowrap, centered,
- parse_comments);
+ line_spacing, mask_mode, autowrap,
+ centered, parse_comments);
checked_free(text_buffer);
return num_lines_printed;
void getFontCharSource(int, char, Bitmap **, int *, int *);
+int maxWordLengthInString(char *);
+
void DrawInitText(char *, int, int);
void DrawInitTextIfNeeded(char *, int, int);
void DrawInitTextExt(char *, int, int, boolean);
void DrawTextExt(DrawBuffer *, int, int, char *, int, int);
char *GetTextBufferFromFile(char *, int);
-int DrawTextBuffer(int, int, char *, int, int, int, int, int, boolean, boolean,
- boolean);
-int DrawTextFile(int, int, char *, int, int, int, int, int, boolean, boolean,
- boolean);
+int DrawTextBuffer(int, int, char *, int, int, int, int, int, int,
+ boolean, boolean, boolean);
+int DrawTextFile(int, int, char *, int, int, int, int, int, int,
+ boolean, boolean, boolean);
#endif /* TEXT_H */
int DX = 566, DY = 60;
int VX = 566, VY = 400;
int EX = 566, EY = 356;
+int dDX, dDY;
#if 1
int FX, FY;
extern int DX, DY;
extern int VX, VY;
extern int EX, EY;
+extern int dDX, dDY;
extern int FX, FY;
extern int ScrollStepSize;
ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
DrawTextFile(ALIGNED_TEXT_XPOS(tmi), ALIGNED_TEXT_YPOS(tmi),
- filename, tmi->font, tmi->chars, -1, tmi->lines, -1,
+ filename, tmi->font, tmi->chars, -1, tmi->lines, 0, -1,
tmi->autowrap, tmi->centered, tmi->parse_comments);
game_status = last_game_status; /* restore current game status */
sy += getFontHeight(font_nr) / 2;
DrawTextBuffer(sx, sy + ypos * ystep, text, font_nr,
- max_chars_per_line, -1, max_lines_per_text, -1,
+ max_chars_per_line, -1, max_lines_per_text, 0, -1,
TRUE, FALSE, FALSE);
}
if (filename != NULL)
DrawTextFile(mSX + ALIGNED_TEXT_XPOS(tmi), mSY + ALIGNED_TEXT_YPOS(tmi),
- filename, tmi->font, tmi->chars, -1, tmi->lines, -1,
+ filename, tmi->font, tmi->chars, -1, tmi->lines, 0, -1,
tmi->autowrap, tmi->centered, tmi->parse_comments);
else
DrawTextCentered(mSY + ALIGNED_TEXT_YPOS(tmi), FONT_TEXT_2,
#if 1
DrawTextBuffer(SX + sx + font_width, SY + sy + font_height,
level.envelope[envelope_nr].text, font_nr, max_xsize,
- xsize - 2, ysize - 2, mask_mode,
+ xsize - 2, ysize - 2, 0, mask_mode,
level.envelope[envelope_nr].autowrap,
level.envelope[envelope_nr].centered, FALSE);
#else
unsigned long anim_delay = 0;
int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay);
int anim_delay_value = (no_delay ? 0 : frame_delay_value);
+#if 1
+ int max_word_len = maxWordLengthInString(text);
+ int font_nr = (max_word_len > 7 ? FONT_TEXT_1 : FONT_TEXT_2);
+#else
int font_nr = FONT_ENVELOPE_1 + envelope_nr;
+#endif
int font_width = getFontWidth(font_nr);
int font_height = getFontHeight(font_nr);
#if 1
+
+#if 1
+ int max_xsize = DXSIZE / font_width;
+ int max_ysize = DYSIZE / font_height;
+#else
int max_xsize = 7; /* tools.c: MAX_REQUEST_LINE_FONT1_LEN == 7 */
int max_ysize = 13; /* tools.c: MAX_REQUEST_LINES == 13 */
+#endif
+
#else
int max_xsize = level.envelope[envelope_nr].xsize;
int max_ysize = level.envelope[envelope_nr].ysize;
int x, y;
#if 1
+ char *text_ptr;
+ char *text_copy = getStringCopy(text);
+#else
+#if 1
+ font_nr = FONT_TEXT_2;
+
+ if (maxWordLengthInString(text) > 7) /* MAX_REQUEST_LINE_FONT1_LEN == 7 */
+ {
+ max_xsize = 10; /* tools.c: MAX_REQUEST_LINE_FONT2_LEN == 10 */
+ font_nr = FONT_TEXT_1;
+ }
+#else
int max_word_len = 0;
char *text_ptr;
char *text_copy = getStringCopy(text);
break;
}
}
+#endif
+#endif
+#if 1
for (text_ptr = text_copy; *text_ptr; text_ptr++)
if (*text_ptr == ' ')
*text_ptr = '\n';
#endif
+#if 1
+ dDX = SX + (SXSIZE - DXSIZE) / 2 - DX;
+ dDY = SY + (SYSIZE - DYSIZE) / 2 - DY;
+#else
+ dDX = SX + SXSIZE / 2 - max_xsize * font_width / 2 - DX;
+ dDY = SY + SYSIZE / 2 - max_ysize * font_height / 2 - DY;
+#endif
+
for (x = xstart, y = ystart; x <= xend && y <= yend; x += xstep, y += ystep)
{
int xsize = (action == ACTION_CLOSING ? xend - (x - xstart) : x) + 2;
#if 1
#if 1
- DrawTextBuffer(SX + sx + font_width, SY + sy + font_height,
+ DrawTextBuffer(SX + sx + font_width, SY + sy + font_height + 8,
text_copy, font_nr, max_xsize,
- xsize - 2, ysize - 2, mask_mode,
+ xsize - 2, ysize - 2, 2, mask_mode,
FALSE, TRUE, FALSE);
#else
DrawTextBuffer(SX + sx + font_width, SY + sy + font_height,
level.envelope[envelope_nr].text, font_nr, max_xsize,
- xsize - 2, ysize - 2, mask_mode,
+ xsize - 2, ysize - 2, 0, mask_mode,
level.envelope[envelope_nr].autowrap,
level.envelope[envelope_nr].centered, FALSE);
#endif
xsize - 2, ysize - 2, mask_mode);
#endif
+ /* copy request gadgets to door backbuffer */
+#if 1
+ if ((ysize - 2) > 13)
+ BlitBitmap(bitmap_db_door, drawto,
+ DOOR_GFX_PAGEX1 + (DXSIZE - (xsize - 2) * font_width) / 2,
+ DOOR_GFX_PAGEY1 + 13 * font_height,
+ (xsize - 2) * font_width,
+ (ysize - 2 - 13) * font_height,
+ SX + sx + font_width,
+ SY + sy + font_height * (1 + 13));
+#else
+ if ((ysize - 2) > 13)
+ BlitBitmap(bitmap_db_door, drawto,
+ DOOR_GFX_PAGEX1 + (DXSIZE - (xsize - 2) * font_width) / 2,
+ DOOR_GFX_PAGEY1 + 13 * font_height,
+ (xsize - 2) * font_width,
+ (ysize - 2 - 13) * font_height,
+ SX + sx + font_width,
+ SY + sy + font_height * (1 + 13));
+#endif
+
#if 1
- redraw_mask |= REDRAW_ALL | REDRAW_FROM_BACKBUFFER;
+ redraw_mask = REDRAW_FIELD | REDRAW_FROM_BACKBUFFER;
+ // redraw_mask |= REDRAW_ALL | REDRAW_FROM_BACKBUFFER;
#else
redraw_mask |= REDRAW_FIELD | REDRAW_FROM_BACKBUFFER;
#endif
WaitUntilDelayReached(&anim_delay, anim_delay_value / 2);
}
+#if 1
free(text_copy);
+#endif
}
void ShowEnvelope(int envelope_nr)
BackToFront();
}
-void ShowEnvelopeDoor(char *text)
+void ShowEnvelopeDoor(char *text, int action)
{
#if 1
int last_game_status = game_status; /* save current game status */
+ // int last_draw_background_mask = gfx.draw_background_mask;
int envelope_nr = 0;
#endif
int element = EL_ENVELOPE_1 + envelope_nr;
int graphic = IMG_BACKGROUND_ENVELOPE_1 + envelope_nr;
int sound_opening = element_info[element].sound[ACTION_OPENING];
int sound_closing = element_info[element].sound[ACTION_CLOSING];
+#if 0
boolean ffwd_delay = (tape.playing && tape.fast_forward);
boolean no_delay = (tape.warp_forward);
int normal_delay_value = ONE_SECOND_DELAY / (ffwd_delay ? 2 : 1);
int wait_delay_value = (no_delay ? 0 : normal_delay_value);
+#endif
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);
SetDrawtoField(DRAW_BACKBUFFER);
- BlitBitmap(backbuffer, bitmap_db_store, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+ // SetDrawBackgroundMask(REDRAW_NONE);
- if (game_status != GAME_MODE_MAIN)
- InitAnimation();
+ if (action == ACTION_OPENING)
+ {
+ BlitBitmap(backbuffer, bitmap_db_store, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+
+ if (game_status != GAME_MODE_MAIN)
+ InitAnimation();
+ }
/* force DOOR font inside door area */
game_status = GAME_MODE_PSEUDO_DOOR;
game.envelope_active = TRUE; /* needed for RedrawPlayfield() events */
- PlayMenuSoundStereo(sound_opening, SOUND_MIDDLE);
+ if (action == ACTION_OPENING)
+ {
+ PlayMenuSoundStereo(sound_opening, SOUND_MIDDLE);
- if (anim_mode == ANIM_DEFAULT)
- AnimateEnvelopeDoor(text, ANIM_DEFAULT, ACTION_OPENING);
+ if (anim_mode == ANIM_DEFAULT)
+ AnimateEnvelopeDoor(text, ANIM_DEFAULT, ACTION_OPENING);
- AnimateEnvelopeDoor(text, main_anim_mode, ACTION_OPENING);
+ AnimateEnvelopeDoor(text, main_anim_mode, ACTION_OPENING);
- if (tape.playing)
- Delay(wait_delay_value);
+#if 0
+ if (tape.playing)
+ Delay(wait_delay_value);
+ else
+ WaitForEventToContinue();
+#endif
+ }
else
- WaitForEventToContinue();
-
- PlayMenuSoundStereo(sound_closing, SOUND_MIDDLE);
+ {
+ PlayMenuSoundStereo(sound_closing, SOUND_MIDDLE);
- if (anim_mode != ANIM_NONE)
- AnimateEnvelopeDoor(text, main_anim_mode, ACTION_CLOSING);
+ if (anim_mode != ANIM_NONE)
+ AnimateEnvelopeDoor(text, main_anim_mode, ACTION_CLOSING);
- if (anim_mode == ANIM_DEFAULT)
- AnimateEnvelopeDoor(text, ANIM_DEFAULT, ACTION_CLOSING);
+ if (anim_mode == ANIM_DEFAULT)
+ AnimateEnvelopeDoor(text, ANIM_DEFAULT, ACTION_CLOSING);
+ }
game.envelope_active = FALSE;
#if 1
game_status = last_game_status; /* restore current game status */
- if (game_status != GAME_MODE_MAIN)
- StopAnimation();
+ if (action == ACTION_CLOSING)
+ {
+ if (game_status != GAME_MODE_MAIN)
+ StopAnimation();
- BlitBitmap(bitmap_db_store, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+ BlitBitmap(bitmap_db_store, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+ }
#else
SetDrawtoField(DRAW_BUFFERED);
#endif
+ // SetDrawBackgroundMask(last_draw_background_mask);
+
#if 1
- redraw_mask |= REDRAW_ALL;
+ redraw_mask = REDRAW_FIELD;
+ // redraw_mask |= REDRAW_ALL;
#else
redraw_mask |= REDRAW_FIELD;
#endif
int last_game_status = game_status; /* save current game status */
int max_request_line_len = MAX_REQUEST_LINE_FONT1_LEN;
int font_nr = FONT_TEXT_2;
+ boolean use_envelope_request = TRUE * 0;
+#if 0
int max_word_len = 0;
+#endif
char *text_ptr;
+ int i;
#if 1
- ShowEnvelopeDoor(text);
-#endif
-
+ if (maxWordLengthInString(text) > MAX_REQUEST_LINE_FONT1_LEN)
+ {
+ max_request_line_len = MAX_REQUEST_LINE_FONT2_LEN;
+ font_nr = FONT_TEXT_1;
+ }
+#else
for (text_ptr = text; *text_ptr; text_ptr++)
{
max_word_len = (*text_ptr != ' ' ? max_word_len + 1 : 0);
break;
}
}
+#endif
if (game_status == GAME_MODE_PLAYING)
{
UnmapAllGadgets();
+#if 1
+ if (old_door_state & DOOR_OPEN_1 && !use_envelope_request)
+#else
if (old_door_state & DOOR_OPEN_1)
+#endif
{
CloseDoor(DOOR_CLOSE_1);
game_status = GAME_MODE_PSEUDO_DOOR;
/* write text for request */
- for (ty = 0; ty < MAX_REQUEST_LINES; ty++)
+ for (text_ptr = text, ty = 0; ty < MAX_REQUEST_LINES; ty++)
{
char text_line[max_request_line_len + 1];
int tx, tl, tc = 0;
- if (!*text)
+ if (!*text_ptr)
break;
for (tl = 0, tx = 0; tx < max_request_line_len; tl++, tx++)
{
- tc = *(text + tx);
+ tc = *(text_ptr + tx);
if (!tc || tc == ' ')
break;
}
if (!tl)
{
- text++;
+ text_ptr++;
ty--;
continue;
}
- strncpy(text_line, text, tl);
+ strncpy(text_line, text_ptr, tl);
text_line[tl] = 0;
DrawText(DX + (DXSIZE - tl * getFontWidth(font_nr)) / 2,
DY + 8 + ty * (getFontHeight(font_nr) + 2),
text_line, font_nr);
- text += tl + (tc == ' ' ? 1 : 0);
+ text_ptr += tl + (tc == ' ' ? 1 : 0);
}
game_status = last_game_status; /* restore current game status */
+#if 1
+ if (use_envelope_request)
+ {
+ /* !!! TMP !!! */
+ FreeToolButtons();
+ CreateToolButtons();
+ }
+#endif
+
if (req_state & REQ_ASK)
{
MapGadget(tool_gadget[TOOL_CTRL_ID_YES]);
DX, DY, DXSIZE, DYSIZE,
DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
+#if 1
+ if (use_envelope_request)
+ {
+ ShowEnvelopeDoor(text, ACTION_OPENING);
+
+ for (i = 0; i < NUM_TOOL_BUTTONS; i++)
+ {
+ if ((req_state & REQ_ASK && (i == TOOL_CTRL_ID_YES ||
+ i == TOOL_CTRL_ID_NO)) ||
+ (req_state & REQ_CONFIRM && i == TOOL_CTRL_ID_CONFIRM) ||
+ (req_state & REQ_PLAYER && (i == TOOL_CTRL_ID_PLAYER_1 &&
+ i == TOOL_CTRL_ID_PLAYER_2 &&
+ i == TOOL_CTRL_ID_PLAYER_3 &&
+ i == TOOL_CTRL_ID_PLAYER_4)))
+ {
+ int x = tool_gadget[i]->x + dDX;
+ int y = tool_gadget[i]->y + dDY;
+
+ ModifyGadget(tool_gadget[i], GDI_X, x, GDI_Y, y, GDI_END);
+ }
+ }
+ }
+#endif
+
+#if 1
+ if (!use_envelope_request)
+ OpenDoor(DOOR_OPEN_1);
+#else
OpenDoor(DOOR_OPEN_1);
+#endif
if (!(req_state & REQUEST_WAIT_FOR_INPUT))
{
return FALSE;
}
+#if 1
+ if (game_status != GAME_MODE_MAIN && !use_envelope_request)
+ InitAnimation();
+#else
if (game_status != GAME_MODE_MAIN)
InitAnimation();
+#endif
button_status = MB_RELEASED;
UnmapToolButtons();
+#if 1
+ if (use_envelope_request)
+ ShowEnvelopeDoor(text, ACTION_CLOSING);
+#endif
+
+#if 1
+ if (!(req_state & REQ_STAY_OPEN) && !use_envelope_request)
+#else
if (!(req_state & REQ_STAY_OPEN))
+#endif
{
CloseDoor(DOOR_CLOSE_1);
case Yacid_splash_wB:
return (frame_em > 5 ? EL_EMPTY : element);
+#if 0
+ case Ydiamond_stone:
+ // if (!game.use_native_emc_graphics_engine)
+ return EL_ROCK;
+#endif
+
default:
return element;
}
case Ytank_s_e:
case Ytank_w_s:
case Ytank_n_w:
+#if 1
+ case Yacid_splash_eB:
+ case Yacid_splash_wB:
+ case Yemerald_stone:
+#endif
return TRUE;
}
#endif
+#if 1
+ if (tile == Ydiamond_stone)
+ printf("::: stone smashing diamond... %d: %d, %d, %d, %d, %d -> %d [%d, %d, %d, %d, %d, %d] [%d]\n",
+ frame_em,
+ g->anim_frames,
+ g->anim_delay,
+ g->anim_mode,
+ g->anim_start_frame,
+ sync_frame,
+ frame,
+ g_em->src_x, g_em->src_y,
+ g_em->src_offset_x, g_em->src_offset_y,
+ g_em->dst_offset_x, g_em->dst_offset_y,
+ graphic);
+#endif
+
+
#if 0
return;
#endif
#endif
}
+void CheckSingleStepMode_EM(byte action[MAX_PLAYERS], int frame,
+ boolean any_player_moving)
+{
+ int i;
+
+ if (tape.single_step && tape.recording && !tape.pausing)
+ {
+ boolean active_players = FALSE;
+
+ for (i = 0; i < MAX_PLAYERS; i++)
+ if (action[i] != JOY_NO_ACTION)
+ active_players = TRUE;
+
+ if (frame == 0)
+ TapeTogglePause(TAPE_TOGGLE_AUTOMATIC);
+ }
+}
+
+void CheckSingleStepMode_SP(boolean murphy_is_moving)
+{
+ if (tape.single_step && tape.recording && !tape.pausing)
+ {
+ if (!murphy_is_moving)
+ TapeTogglePause(TAPE_TOGGLE_AUTOMATIC);
+ }
+}
+
void getGraphicSource_SP(struct GraphicInfo_SP *g_sp,
int graphic, int sync_frame, int x, int y)
{
void DrawMiniElementOrWall(int, int, int, int);
void ShowEnvelope(int);
-void ShowEnvelopeDoor(char *text);
+void ShowEnvelopeDoor(char *text, int);
void DrawLevel(void);
void DrawMiniLevel(int, int, int, int);