X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=8b77ddef674f65d232e0c968c5e4c5ef9529870f;hb=9d23eac9de03f91cf0ac094786ab30cdd589ac49;hp=c926738df7c2a3c7f724a83c76d817a14bce78d3;hpb=343ecd1bed93fa862903ff981ede342825f14401;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index c926738d..8b77ddef 100644 --- a/src/game.c +++ b/src/game.c @@ -2147,8 +2147,9 @@ static void InitGameControlValues(void) if (nr != i) { - Error(ERR_INFO, "'game_panel_controls' structure corrupted at %d", i); - Error(ERR_EXIT, "this should not happen -- please debug"); + Error("'game_panel_controls' structure corrupted at %d", i); + + Fail("this should not happen -- please debug"); } // force update of game controls after initialization @@ -2635,7 +2636,10 @@ static void DisplayGameControlValues(void) element = value; graphic = el2panelimg(value); - // printf("::: %d, '%s' [%d]\n", element, EL_NAME(element), size); +#if 0 + Debug("game:DisplayGameControlValues", "%d, '%s' [%d]", + element, EL_NAME(element), size); +#endif if (element >= EL_GRAPHIC_1 && element <= EL_GRAPHIC_8 && size == 0) size = TILESIZE; @@ -11196,6 +11200,15 @@ static void CheckSaveEngineSnapshot(struct PlayerInfo *player) if (!player->is_dropping) player->was_dropping = FALSE; } + + static struct MouseActionInfo mouse_action_last = { 0 }; + struct MouseActionInfo mouse_action = player->effective_mouse_action; + boolean new_released = (!mouse_action.button && mouse_action_last.button); + + if (new_released) + CheckSaveEngineSnapshotToList(); + + mouse_action_last = mouse_action; } static void CheckSingleStepMode(struct PlayerInfo *player) @@ -11206,7 +11219,8 @@ static void CheckSingleStepMode(struct PlayerInfo *player) player stopped moving after one tile (or never starts moving at all) */ if (!player->is_moving && !player->is_pushing && - !player->is_dropping_pressed) + !player->is_dropping_pressed && + !player->effective_mouse_action.button) TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); } @@ -11657,9 +11671,8 @@ static void GameActionsExt(void) byte mapped_action[MAX_PLAYERS]; #if DEBUG_PLAYER_ACTIONS - printf(":::"); for (i = 0; i < MAX_PLAYERS; i++) - printf(" %d, ", stored_player[i].effective_action); + DebugContinued("", "%d, ", stored_player[i].effective_action); #endif for (i = 0; i < MAX_PLAYERS; i++) @@ -11669,19 +11682,18 @@ static void GameActionsExt(void) stored_player[i].effective_action = mapped_action[i]; #if DEBUG_PLAYER_ACTIONS - printf(" =>"); + DebugContinued("", "=> "); for (i = 0; i < MAX_PLAYERS; i++) - printf(" %d, ", stored_player[i].effective_action); - printf("\n"); + DebugContinued("", "%d, ", stored_player[i].effective_action); + DebugContinued("game:playing:player", "\n"); #endif } #if DEBUG_PLAYER_ACTIONS else { - printf(":::"); for (i = 0; i < MAX_PLAYERS; i++) - printf(" %d, ", stored_player[i].effective_action); - printf("\n"); + DebugContinued("", "%d, ", stored_player[i].effective_action); + DebugContinued("game:playing:player", "\n"); } #endif #endif @@ -15421,10 +15433,11 @@ static void LoadEngineSnapshotValues_RND(void) if (game.num_random_calls != num_random_calls) { - Error(ERR_INFO, "number of random calls out of sync"); - Error(ERR_INFO, "number of random calls should be %d", num_random_calls); - Error(ERR_INFO, "number of random calls is %d", game.num_random_calls); - Error(ERR_EXIT, "this should not happen -- please debug"); + Error("number of random calls out of sync"); + Error("number of random calls should be %d", num_random_calls); + Error("number of random calls is %d", game.num_random_calls); + + Fail("this should not happen -- please debug"); } } @@ -15833,7 +15846,7 @@ void CreateGameButtons(void) GDI_END); if (gi == NULL) - Error(ERR_EXIT, "cannot create gadget"); + Fail("cannot create gadget"); game_gadget[id] = gi; }