X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftools.c;h=695a536223c87d07372d8d55be2a62f7b8dd888a;hp=777a1a08c833bcde707f13a322b04767195a82f3;hb=14801844faf14be284c590b66f030c6bf7cea5c2;hpb=0ac301d6e3c5551a5ff66baaaa8ce867bb1aceb1 diff --git a/src/tools.c b/src/tools.c index 777a1a08..695a5362 100644 --- a/src/tools.c +++ b/src/tools.c @@ -360,30 +360,26 @@ static int getLevelFromScreenY_SP(int sy) static int getLevelFromScreenX_MM(int sx) { -#if 0 int level_xsize = level.native_mm_level->fieldx; int full_xsize = level_xsize * TILESIZE_VAR; sx -= (full_xsize < SXSIZE ? (SXSIZE - full_xsize) / 2 : 0); -#endif int px = sx - SX; - int lx = px / TILESIZE_VAR; + int lx = (px + TILESIZE_VAR) / TILESIZE_VAR - 1; return lx; } static int getLevelFromScreenY_MM(int sy) { -#if 0 int level_ysize = level.native_mm_level->fieldy; int full_ysize = level_ysize * TILESIZE_VAR; sy -= (full_ysize < SYSIZE ? (SYSIZE - full_ysize) / 2 : 0); -#endif int py = sy - SY; - int ly = py / TILESIZE_VAR; + int ly = (py + TILESIZE_VAR) / TILESIZE_VAR - 1; return ly; } @@ -8747,9 +8743,21 @@ void CheckSaveEngineSnapshot_SP(boolean murphy_is_waiting, } } -void CheckSaveEngineSnapshot_MM(boolean button_released) +void CheckSaveEngineSnapshot_MM(boolean element_clicked, + boolean button_released) { - CheckSaveEngineSnapshotToList(); + if (button_released) + { + if (game.snapshot.mode == SNAPSHOT_MODE_EVERY_MOVE) + CheckSaveEngineSnapshotToList(); + } + else if (element_clicked) + { + if (game.snapshot.mode != SNAPSHOT_MODE_EVERY_MOVE) + CheckSaveEngineSnapshotToList(); + + game.snapshot.changed_action = TRUE; + } } void CheckSingleStepMode_EM(byte action[MAX_PLAYERS], int frame, @@ -8782,13 +8790,14 @@ void CheckSingleStepMode_SP(boolean murphy_is_waiting, CheckSaveEngineSnapshot_SP(murphy_is_waiting, murphy_is_dropping); } -void CheckSingleStepMode_MM(boolean button_released) +void CheckSingleStepMode_MM(boolean element_clicked, + boolean button_released) { if (tape.single_step && tape.recording && !tape.pausing) if (button_released) TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); - CheckSaveEngineSnapshot_MM(button_released); + CheckSaveEngineSnapshot_MM(element_clicked, button_released); } void getGraphicSource_SP(struct GraphicInfo_SP *g_sp,