X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=425c35e86f014dfbc4c079166e7bb76c1d7ccdd7;hb=cee436b68cda95e13abc810235a11ce94bc79c95;hp=c4aa62dfb8e1d26538c7668a818a0298c83817ca;hpb=bf1e4db1ffa9a313b8d1b68e55633ace682fef96;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index c4aa62df..425c35e8 100644 --- a/src/screens.c +++ b/src/screens.c @@ -270,7 +270,7 @@ void DrawMainMenu() leveldir_last_valid = leveldir_current; /* needed if last screen (level choice) changed graphics, sounds or music */ - ReloadCustomArtwork(); + ReloadCustomArtwork(0); #ifdef TARGET_SDL SetDrawtoField(DRAW_BACKBUFFER); @@ -495,7 +495,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) if (setup.autorecord) TapeStartRecording(); -#if defined(PLATFORM_UNIX) +#if defined(NETWORK_AVALIABLE) if (options.network) SendToServer_StartPlaying(); else @@ -1869,7 +1869,7 @@ static void execSetupArtwork() setup.music_set = artwork.mus_current->identifier; /* needed if last screen (setup choice) changed graphics, sounds or music */ - ReloadCustomArtwork(); + ReloadCustomArtwork(0); /* needed for displaying artwork name instead of artwork identifier */ graphics_set_name = artwork.gfx_current->name; @@ -2409,6 +2409,8 @@ static void drawPlayerSetupInputInfo(int player_nr) DrawText(mSX+11*32, mSY+2*32, int2str(player_nr +1, 1), FONT_INPUT_1_ACTIVE); #if 1 + ClearRectangleOnBackground(drawto, mSX + 8 * TILEX, mSY + 2 * TILEY, + TILEX, TILEY); DrawGraphicThruMaskExt(drawto, mSX + 8 * TILEX, mSY + 2 * TILEY, PLAYER_NR_GFX(IMG_PLAYER_1, player_nr), 0); #else @@ -2942,17 +2944,35 @@ void HandleGameActions() if (game_status != GAME_MODE_PLAYING) return; - if (local_player->LevelSolved) - GameWon(); + /* !!! FIX THIS (START) !!! */ + if (level.file_info.type == LEVEL_FILE_TYPE_EM) + { + byte summarized_player_action = 0; + int i; - if (AllPlayersGone && !TAPE_IS_STOPPED(tape)) - TapeStop(); + for (i = 0; i < MAX_PLAYERS; i++) + summarized_player_action |= stored_player[i].action; - GameActions(); - BackToFront(); + if (em_main_handle_game(summarized_player_action) != 0) + { + game_status = GAME_MODE_MAIN; + DrawMainMenu(); + } + } + else + { + if (local_player->LevelSolved) + GameWon(); + + if (AllPlayersGone && !TAPE_IS_STOPPED(tape)) + TapeStop(); - if (tape.auto_play && !tape.playing) - AutoPlayTape(); /* continue automatically playing next tape */ + GameActions(); + BackToFront(); + + if (tape.auto_play && !tape.playing) + AutoPlayTape(); /* continue automatically playing next tape */ + } } /* ---------- new screen button stuff -------------------------------------- */