#include "dialogs.h" #include #include #define BOX_HEIGHT (F_HEIGHT/PXSIZE+8) extern font_t fontRPG; #define FONT_USED fontRPG void showtext(Game *game, bopti_image_t *face, char *text) { dfont(&FONT_USED); unsigned int i, n, y = 1, l = 0; int line_max_chars; unsigned int max_lines_amount = BOX_HEIGHT/FONT_USED.line_height; const char *c; /* Run a little fancy animation. */ for(i=0;iframe_duration < 20) sleep(); game->frame_duration = 0; } /* We should start to drawint the text on the x axis at BOX_HEIGHT to avoid * drawing on the face. */ /* Show a little message that showing text in dialogs is not implemented * yet. */ for(i=0;i0; n--) { /* If we found a space, we can draw this line and do the same for * the next line. */ if(text[i+n] == ' '){ dtext_opt(BOX_HEIGHT, y, C_BLACK, C_NONE, DTEXT_TOP, DTEXT_LEFT, text+i, n); /* Draw everything. */ /* Increment y by the line height. */ y += FONT_USED.line_height; i += n; /* We drew everything to i+n */ l++; /* We drew one more line. */ break; } } if(l>=max_lines_amount-1){ /* We drew one entire screen, reset everything to draw the next one. */ /* Make a little animation :). */ dupdate(); while(game->frame_duration < 20) sleep(); game->frame_duration = 0; /* Ask the user to press EXE to continue. */ dtext(BOX_HEIGHT, y, C_BLACK, "[EXE] to continue ..."); /* Clear the screen. */ drect(0, 0, DWIDTH, BOX_HEIGHT*PXSIZE, C_WHITE); } /* Make a little animation :). */ dupdate(); if(l>=max_lines_amount-1){ while(getkey().key != KEY_EXE) sleep(); /* Reset y and l. */ y = 1; l = 0; } else{ while(game->frame_duration < 20) sleep(); } game->frame_duration = 0; } if(lframe_duration < 20) sleep(); game->frame_duration = 0; /* Ask the user to press EXE to continue. */ dtext(1, y, C_BLACK, "[EXE] To continue ..."); while(getkey().key != KEY_EXE) sleep(); } /* Run another little fancy animation. */ for(i=40;i>0;i--){ draw(game); drect(0, 0, DWIDTH, i*PXSIZE, C_WHITE); drect(0, i*PXSIZE, DWIDTH, (i+1)*PXSIZE, C_BLACK); dsubimage(4*PXSIZE, 2*PXSIZE, face, 0, 0, F_WIDTH, (i-8)*PXSIZE, DIMAGE_NONE); dupdate(); while(game->frame_duration < 20) sleep(); game->frame_duration = 0; } }