X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=43c97f5ce7d2938175ddf1aad4e858e1e8f75762;hb=91afd13180ad610e2a6cbef32b85677cf8148864;hp=3a96d18312479c7785fafa2e4195d733dceec8a5;hpb=994cb017022c658f115e3c9fc927d8a0cc83832c;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index 3a96d183..43c97f5c 100644 --- a/src/tape.c +++ b/src/tape.c @@ -168,7 +168,7 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) { int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2; - BlitBitmap(new_graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, + BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, cx + VIDEO_REC_LABEL_XPOS, cy + VIDEO_REC_LABEL_YPOS, VIDEO_PBEND_LABEL_XSIZE, @@ -189,7 +189,7 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) cx = DOOR_GFX_PAGEX3; /* i gerade => STATE_OFF / PRESS_ON */ if (video_pos[pos][part_label][0] && value != VIDEO_DISPLAY_SYMBOL_ONLY) - BlitBitmap(new_graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, + BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, cx + video_pos[pos][part_label][xpos], cy + video_pos[pos][part_label][ypos], video_pos[pos][part_label][xsize], @@ -197,7 +197,7 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) VX + video_pos[pos][part_label][xpos], VY + video_pos[pos][part_label][ypos]); if (video_pos[pos][part_symbol][0] && value != VIDEO_DISPLAY_LABEL_ONLY) - BlitBitmap(new_graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, + BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, cx + video_pos[pos][part_symbol][xpos], cy + video_pos[pos][part_symbol][ypos], video_pos[pos][part_symbol][xsize], @@ -211,7 +211,7 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) { int cx = DOOR_GFX_PAGEX4, cy = DOOR_GFX_PAGEY2; - BlitBitmap(new_graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, + BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, cx + VIDEO_PLAY_SYMBOL_XPOS, cy + VIDEO_PLAY_SYMBOL_YPOS, VIDEO_PLAY_SYMBOL_XSIZE - 2, @@ -224,7 +224,7 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) { int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1; - BlitBitmap(new_graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, + BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, cx + VIDEO_PBEND_LABEL_XPOS, cy + VIDEO_PBEND_LABEL_YPOS, VIDEO_PBEND_LABEL_XSIZE, @@ -239,12 +239,12 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) int monat = (value/100) % 100; int jahr = (value/10000); - DrawText(VX+VIDEO_DATE_XPOS,VY+VIDEO_DATE_YPOS, - int2str(tag,2),FS_SMALL,FC_SPECIAL1); - DrawText(VX+VIDEO_DATE_XPOS+27,VY+VIDEO_DATE_YPOS, - monatsname[monat],FS_SMALL,FC_SPECIAL1); - DrawText(VX+VIDEO_DATE_XPOS+64,VY+VIDEO_DATE_YPOS, - int2str(jahr,2),FS_SMALL,FC_SPECIAL1); + DrawText(VX + VIDEO_DATE_XPOS, VY + VIDEO_DATE_YPOS, + int2str(tag, 2), FONT_TAPE_RECORDER); + DrawText(VX + VIDEO_DATE_XPOS + 27, VY + VIDEO_DATE_YPOS, + monatsname[monat], FONT_TAPE_RECORDER); + DrawText(VX + VIDEO_DATE_XPOS + 64, VY + VIDEO_DATE_YPOS, + int2str(jahr, 2), FONT_TAPE_RECORDER); } if (state & VIDEO_STATE_TIME_ON) @@ -252,10 +252,10 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) int min = value / 60; int sec = value % 60; - DrawText(VX+VIDEO_TIME_XPOS,VY+VIDEO_TIME_YPOS, - int2str(min,2),FS_SMALL,FC_SPECIAL1); - DrawText(VX+VIDEO_TIME_XPOS+27,VY+VIDEO_TIME_YPOS, - int2str(sec,2),FS_SMALL,FC_SPECIAL1); + DrawText(VX + VIDEO_TIME_XPOS, VY + VIDEO_TIME_YPOS, + int2str(min, 2), FONT_TAPE_RECORDER); + DrawText(VX + VIDEO_TIME_XPOS + 27, VY + VIDEO_TIME_YPOS, + int2str(sec, 2), FONT_TAPE_RECORDER); } if (state & VIDEO_STATE_DATE) @@ -268,10 +268,10 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) void DrawCompleteVideoDisplay() { - BlitBitmap(new_graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, + BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, DOOR_GFX_PAGEX3, DOOR_GFX_PAGEY2, gfx.vxsize, gfx.vysize, gfx.vx, gfx.vy); - BlitBitmap(new_graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, + BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, DOOR_GFX_PAGEX4 + VIDEO_CONTROL_XPOS, DOOR_GFX_PAGEY2 + VIDEO_CONTROL_YPOS, VIDEO_CONTROL_XSIZE, VIDEO_CONTROL_YSIZE, @@ -302,6 +302,9 @@ void TapeErase() tape.length = 0; tape.counter = 0; + if (leveldir_current) + setString(&tape.level_identifier, leveldir_current->identifier); + tape.level_nr = level_nr; tape.pos[tape.counter].delay = 0; tape.changed = TRUE; @@ -682,22 +685,28 @@ void TapeQuickLoad() * tape autoplay functions * ------------------------------------------------------------------------- */ +#define MAX_NUM_AUTOPLAY_LEVELS 1000 + void AutoPlayTape() { static LevelDirTree *autoplay_leveldir = NULL; static boolean autoplay_initialized = FALSE; static int autoplay_level_nr = -1; - static int levels_played = 0; - static int levels_solved = 0; + static int num_levels_played = 0; + static int num_levels_solved = 0; + static boolean levels_failed[MAX_NUM_AUTOPLAY_LEVELS]; + int i; if (autoplay_initialized) { /* just finished auto-playing tape */ printf("%s.\n", tape.auto_play_level_solved ? "solved" : "NOT SOLVED"); - levels_played++; + num_levels_played++; if (tape.auto_play_level_solved) - levels_solved++; + num_levels_solved++; + else if (level_nr >= 0 && level_nr < MAX_NUM_AUTOPLAY_LEVELS) + levels_failed[level_nr] = TRUE; } else { @@ -721,16 +730,19 @@ void AutoPlayTape() autoplay_level_nr = autoplay_leveldir->first_level; - printf_line('=', 79); + printf_line("=", 79); printf("Automatically playing level tapes\n"); - printf_line('-', 79); + printf_line("-", 79); printf("Level series identifier: '%s'\n", autoplay_leveldir->identifier); printf("Level series name: '%s'\n", autoplay_leveldir->name); printf("Level series author: '%s'\n", autoplay_leveldir->author); printf("Number of levels: %d\n", autoplay_leveldir->levels); - printf_line('=', 79); + printf_line("=", 79); printf("\n"); + for (i=0; iidentifier, levels_solved, levels_played, - levels_solved * 100 / levels_played); - printf_line('=', 79); + printf("LEVELDIR '%s', SOLVED %d/%d (%d%%)", + autoplay_leveldir->identifier, num_levels_solved, num_levels_played, + (num_levels_played ? num_levels_solved * 100 / num_levels_played :0)); + if (num_levels_played != num_levels_solved) + { + printf(", FAILED:"); + for (i=0; i