#endif
int i, j, x, y;
+#if 1
+ game_status = GAME_MODE_PLAYING;
+#endif
+
+#if 1
+
+ StopAnimation();
+
+ if (!game.restart_level)
+ CloseDoor(DOOR_CLOSE_1);
+
+#if 1
+ if (level_editor_test_game)
+ FadeSkipNextFadeIn();
+ else
+ FadeSetEnterScreen();
+#else
+ if (level_editor_test_game)
+ fading = fading_none;
+ else
+ fading = menu.destination;
+#endif
+
+#if 1
+ FadeOut(REDRAW_FIELD);
+#else
+ if (do_fading)
+ FadeOut(REDRAW_FIELD);
+#endif
+
+#endif
+
+#if 0
+ printf("::: FADING OUT: DONE\n");
+ Delay(1000);
+#endif
+
+#if 0
game_status = GAME_MODE_PLAYING;
+#endif
#if 1
/* needed if different viewport properties defined for playing */
game_status = GAME_MODE_MAIN;
#endif
+#if 0
+
StopAnimation();
if (!game.restart_level)
FadeOut(REDRAW_FIELD);
#endif
+#endif
+
#if 0
game_status = GAME_MODE_PLAYING;
#endif
{
if (skip_request || Request(message, REQ_ASK | REQ_STAY_CLOSED))
{
+#if 1
+ /* closing door required in case of envelope style request dialogs */
+ if (!skip_request)
+ CloseDoor(DOOR_CLOSE_1);
+#endif
+
#if defined(NETWORK_AVALIABLE)
if (options.network)
SendToServer_StopPlaying(NETWORK_STOP_BY_PLAYER);
int button_type;
boolean checked;
unsigned int event_mask;
+ int base_x = (tape.show_game_buttons ? VX : DX);
+ int base_y = (tape.show_game_buttons ? VY : DY);
int gd_x = gfx->src_x;
int gd_y = gfx->src_y;
int gd_xp = gfx->src_x + gfx->pressed_xoffset;
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_INFO_TEXT, gamebutton_info[i].infotext,
- GDI_X, DX + GDI_ACTIVE_POS(pos->x),
- GDI_Y, DY + GDI_ACTIVE_POS(pos->y),
+ GDI_X, base_x + GDI_ACTIVE_POS(pos->x),
+ GDI_Y, base_y + GDI_ACTIVE_POS(pos->y),
GDI_WIDTH, gfx->width,
GDI_HEIGHT, gfx->height,
GDI_TYPE, button_type,
static void HandleGameButtonsExt(int id)
{
- if (game_status != GAME_MODE_PLAYING)
+ boolean handle_game_buttons =
+ (game_status == GAME_MODE_PLAYING ||
+ (game_status == GAME_MODE_MAIN && tape.show_game_buttons));
+
+ if (!handle_game_buttons)
return;
switch (id)
{
case GAME_CTRL_ID_STOP:
+ if (game_status == GAME_MODE_MAIN)
+ break;
+
if (tape.playing)
TapeStop();
else
RequestQuitGame(TRUE);
+
break;
case GAME_CTRL_ID_PAUSE:
- if (options.network)
+ if (options.network && game_status == GAME_MODE_PLAYING)
{
#if defined(NETWORK_AVALIABLE)
if (tape.pausing)
break;
case GAME_CTRL_ID_PLAY:
- if (tape.pausing)
+ if (game_status == GAME_MODE_MAIN)
+ {
+ StartGameActions(options.network, setup.autorecord, level.random_seed);
+ }
+ else if (tape.pausing)
{
#if defined(NETWORK_AVALIABLE)
if (options.network)