X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftape.c;h=4f1239171c65ed91e7aa58b494bedddd9be5a9a8;hp=2cc1571b810ab495f12cca3fd7c3de11e6386cb0;hb=abe44529b439ad39b4d8dbf19cbd67c9b9844279;hpb=61c3da024802ecc0268bab42d7499fc0346e4fd3 diff --git a/src/tape.c b/src/tape.c index 2cc1571b..4f123917 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1,15 +1,13 @@ -/*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * -*----------------------------------------------------------* -* (c) 1995-2006 Artsoft Entertainment * -* Holger Schemel * -* Detmolder Strasse 189 * -* 33604 Bielefeld * -* Germany * -* e-mail: info@artsoft.org * -*----------------------------------------------------------* -* tape.c * -***********************************************************/ +// ============================================================================ +// Rocks'n'Diamonds - McDuffin Strikes Back! +// ---------------------------------------------------------------------------- +// (c) 1995-2014 by Artsoft Entertainment +// Holger Schemel +// info@artsoft.org +// http://www.artsoft.org/ +// ---------------------------------------------------------------------------- +// tape.c +// ============================================================================ #include "libgame/libgame.h" @@ -544,6 +542,52 @@ void DrawCompleteVideoDisplay() tape.date, tape.length); #endif +#if 1 + + struct GraphicInfo *g_tape = &graphic_info[IMG_BACKGROUND_TAPE]; + + /* draw tape background */ + BlitBitmap(g_tape->bitmap, drawto, g_tape->src_x, g_tape->src_y, + gfx.vxsize, gfx.vysize, gfx.vx, gfx.vy); + + /* draw tape buttons (forced) */ + UnmapTapeButtons(); + MapTapeButtons(); + +#else + +#if 1 + struct GraphicInfo *g_tape = &graphic_info[IMG_BACKGROUND_TAPE]; + int tape_button_graphics[] = + { + IMG_TAPE_BUTTON_GFX_EJECT, + IMG_TAPE_BUTTON_GFX_STOP, + IMG_TAPE_BUTTON_GFX_PAUSE, + IMG_TAPE_BUTTON_GFX_RECORD, + IMG_TAPE_BUTTON_GFX_PLAY + }; + struct Rect *tape_button_positions[] = + { + &tape.button.eject, + &tape.button.stop, + &tape.button.pause, + &tape.button.record, + &tape.button.play + }; + int i; + + BlitBitmap(g_tape->bitmap, drawto, g_tape->src_x, g_tape->src_y, + gfx.vxsize, gfx.vysize, gfx.vx, gfx.vy); + + for (i = 0; i < SIZEOF_ARRAY_INT(tape_button_graphics); i++) + { + struct GraphicInfo *g = &graphic_info[tape_button_graphics[i]]; + struct Rect *pos = tape_button_positions[i]; + + BlitBitmap(g->bitmap, drawto, g->src_x, g->src_y, + g->width, g->height, gfx.vx + pos->x, gfx.vy + pos->y); + } +#else BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, DOOR_GFX_PAGEX3, DOOR_GFX_PAGEY2, gfx.vxsize, gfx.vysize, gfx.vx, gfx.vy); @@ -552,6 +596,9 @@ void DrawCompleteVideoDisplay() DOOR_GFX_PAGEY2 + VIDEO_CONTROL_YPOS, VIDEO_CONTROL_XSIZE, VIDEO_CONTROL_YSIZE, gfx.vx + VIDEO_CONTROL_XPOS, gfx.vy + VIDEO_CONTROL_YPOS); +#endif + +#endif DrawVideoDisplay(VIDEO_ALL_OFF, 0); @@ -587,8 +634,13 @@ void DrawCompleteVideoDisplay() } #endif +#if 1 + BlitBitmap(drawto, bitmap_db_door_2, gfx.vx, gfx.vy, gfx.vxsize, gfx.vysize, + 0, 0); +#else BlitBitmap(drawto, bitmap_db_door, gfx.vx, gfx.vy, gfx.vxsize, gfx.vysize, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY2); +#endif } void TapeDeactivateDisplayOn() @@ -1079,7 +1131,7 @@ void TapeQuickSave() { if (game_status == GAME_MODE_MAIN) { - Request("No game that can be saved !", REQ_CONFIRM); + Request("No game that can be saved!", REQ_CONFIRM); return; } @@ -1092,7 +1144,7 @@ void TapeQuickSave() if (TAPE_IS_EMPTY(tape)) { - Request("No tape that can be saved !", REQ_CONFIRM); + Request("No tape that can be saved!", REQ_CONFIRM); return; } @@ -1107,12 +1159,12 @@ void TapeQuickLoad() if (!fileExists(filename)) { - Request("No tape for this level !", REQ_CONFIRM); + Request("No tape for this level!", REQ_CONFIRM); return; } - if (tape.recording && !Request("Stop recording and load tape ?", + if (tape.recording && !Request("Stop recording and load tape?", REQ_ASK | REQ_STAY_CLOSED)) { OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK); @@ -1125,6 +1177,10 @@ void TapeQuickLoad() if (CheckEngineSnapshot()) { +#if 0 + printf("::: MARK 1\n"); +#endif + TapeStartGamePlaying(); LoadEngineSnapshot(); @@ -1141,6 +1197,10 @@ void TapeQuickLoad() return; } +#if 0 + printf("::: MARK 2\n"); +#endif + TapeStop(); TapeErase(); @@ -1157,7 +1217,7 @@ void TapeQuickLoad() { int reopen_door = (game_status == GAME_MODE_PLAYING ? REQ_REOPEN : 0); - Request("No tape for this level !", REQ_CONFIRM | reopen_door); + Request("No tape for this level!", REQ_CONFIRM | reopen_door); } } @@ -1169,7 +1229,7 @@ void InsertSolutionTape() LoadSolutionTape(level_nr); if (TAPE_IS_EMPTY(tape)) - Request("No solution tape for this level !", REQ_CONFIRM); + Request("No solution tape for this level!", REQ_CONFIRM); DrawCompleteVideoDisplay(); } @@ -1188,7 +1248,9 @@ void AutoPlayTape() static int num_levels_solved = 0; static int num_tape_missing = 0; static boolean level_failed[MAX_TAPES_PER_SET]; +#if 0 static boolean tape_missing[MAX_TAPES_PER_SET]; +#endif int i; if (autoplay_initialized) @@ -1237,7 +1299,9 @@ void AutoPlayTape() for (i = 0; i < MAX_TAPES_PER_SET; i++) { level_failed[i] = FALSE; +#if 0 tape_missing[i] = FALSE; +#endif } autoplay_initialized = TRUE; @@ -1272,8 +1336,10 @@ void AutoPlayTape() if (tape.no_valid_file) { num_tape_missing++; +#if 0 if (level_nr >= 0 && level_nr < MAX_TAPES_PER_SET) tape_missing[level_nr] = TRUE; +#endif printf("(no tape)\n"); continue; @@ -1427,6 +1493,9 @@ void MapTapeButtons() if (tape.recording || tape.playing) MapTapeWarpButton(); + + if (tape.show_game_buttons) + MapGameButtons(); } void UnmapTapeButtons() @@ -1452,7 +1521,7 @@ static void HandleTapeButtonsExt(int id) LoadTape(level_nr); if (TAPE_IS_EMPTY(tape)) - Request("No tape for this level !", REQ_CONFIRM); + Request("No tape for this level!", REQ_CONFIRM); } else {