X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=8273cb71fb796e803a5481e96001a59ce560b30d;hb=00b53c1316174dabc310c5967beee2edb4fa0842;hp=73505d24269569b52cb9927acfbd9a36a62f18a1;hpb=f89a490028c36509216b97a96b779b779c2065c9;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 73505d24..8273cb71 100644 --- a/src/game.c +++ b/src/game.c @@ -3098,33 +3098,20 @@ void InitGame() if (!game.restart_level) CloseDoor(DOOR_CLOSE_1); -#if 1 /* needed if different viewport properties defined for playing */ ChangeViewportPropertiesIfNeeded(); -#endif if (level_editor_test_game) FadeSkipNextFadeIn(); else FadeSetEnterScreen(); - if (CheckIfRedrawGlobalBorderIsNeeded()) + if (CheckIfGlobalBorderHasChanged()) fade_mask = REDRAW_ALL; -#if 0 - printf("::: %d\n", (fade_mask == REDRAW_ALL ? 1 : 0)); -#endif - FadeOut(fade_mask); -#if 0 - /* needed if different viewport properties defined for playing */ - ChangeViewportPropertiesIfNeeded(); -#endif - -#if 1 ClearField(); -#endif DrawCompleteVideoDisplay(); @@ -3967,9 +3954,14 @@ void InitGame() { UnmapGameButtons(); UnmapTapeButtons(); + + FreeGameButtons(); + CreateGameButtons(); + game_gadget[SOUND_CTRL_ID_MUSIC]->checked = setup.sound_music; game_gadget[SOUND_CTRL_ID_LOOPS]->checked = setup.sound_loops; game_gadget[SOUND_CTRL_ID_SIMPLE]->checked = setup.sound_simple; + MapGameButtons(); MapTapeButtons(); @@ -10985,23 +10977,6 @@ void GameActions() byte tape_action[MAX_PLAYERS]; int i; - for (i = 0; i < MAX_PLAYERS; i++) - { - struct PlayerInfo *player = &stored_player[i]; - - // allow engine snapshot if movement attempt was stopped - if ((game.snapshot.last_action[i] & KEY_MOTION) != 0 && - (player->action & KEY_MOTION) == 0) - game.snapshot.changed_action = TRUE; - - // allow engine snapshot in case of snapping/dropping attempt - if ((game.snapshot.last_action[i] & KEY_BUTTON) == 0 && - (player->action & KEY_BUTTON) != 0) - game.snapshot.changed_action = TRUE; - - game.snapshot.last_action[i] = player->action; - } - /* detect endless loops, caused by custom element programming */ if (recursion_loop_detected && recursion_loop_depth == 0) { @@ -11208,6 +11183,21 @@ void GameActions() #endif #endif + for (i = 0; i < MAX_PLAYERS; i++) + { + // allow engine snapshot in case of changed movement attempt + if ((game.snapshot.last_action[i] & KEY_MOTION) != + (stored_player[i].effective_action & KEY_MOTION)) + game.snapshot.changed_action = TRUE; + + // allow engine snapshot in case of snapping/dropping attempt + if ((game.snapshot.last_action[i] & KEY_BUTTON) == 0 && + (stored_player[i].effective_action & KEY_BUTTON) != 0) + game.snapshot.changed_action = TRUE; + + game.snapshot.last_action[i] = stored_player[i].effective_action; + } + if (level.game_engine_type == GAME_ENGINE_TYPE_EM) { GameActions_EM_Main();