X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=831659b62cb881ac47353c1e37992d3917c8d57b;hb=3413f120c3ff15eeaa855d0efc586514a0b6dcd3;hp=a8ac4cea12a6d9974f541302ac0f85fb3e782abc;hpb=0d02210d139e2e889d91d80015d54c5186dc347b;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index a8ac4cea..831659b6 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1066,13 +1066,23 @@ void TapeQuickLoad() void InsertSolutionTape() { - if (!TAPE_IS_EMPTY(tape)) + boolean level_has_tape = (level.game_engine_type == GAME_ENGINE_TYPE_SP && + level.native_sp_level->demo.is_available); + + if (!fileExists(getSolutionTapeFilename(level_nr)) && !level_has_tape) + { + Request("No solution tape for this level!", REQ_CONFIRM); + return; + } + + // if tape recorder already contains a tape, remove it without asking + TapeErase(); LoadSolutionTape(level_nr); if (TAPE_IS_EMPTY(tape)) - Request("No solution tape for this level!", REQ_CONFIRM); + Request("Loading solution tape for this level failed!", REQ_CONFIRM); DrawCompleteVideoDisplay(); } @@ -1384,7 +1394,7 @@ static void HandleTapeButtonsExt(int id) else { if (tape.changed) - SaveTapeChecked(tape.level_nr); + SaveTapeChecked(level_nr); TapeErase(); }