Advertisement
NightFox

Parse TXT file to a buffer

Nov 23rd, 2011
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.74 KB | None | 0 0
  1. // CreditsWriteTextPage();
  2. bool CreditsWriteTextPage(void) {
  3.  
  4.     // Variables
  5.     char text[13][18];              // 13 lineas, 16 letras (16 + \n + seguridad)
  6.     bool endofpage = false;         // Flag de fin de pagina
  7.     u16 row = 0;                    // Fila
  8.     u16 column = 0;                 // Columna
  9.     u16 line = 0;                   // Linea de impresion
  10.     u16 y = 0;                      // Posicion inicial
  11.     bool end = false;               // Final de archivo
  12.  
  13.     // Resetea el buffer de texto
  14.     memset(text, 0, sizeof(text));
  15.  
  16.     // Crea una pagina
  17.     while (!endofpage) {
  18.  
  19.         // Si no es fin de linea...
  20.         if (CREDITS.text_buffer[CREDITS.text_pos] != 0x0D) {
  21.  
  22.             // Segun el caracter leido....
  23.             switch (CREDITS.text_buffer[CREDITS.text_pos]) {
  24.                 case 0x3E:      // >    Siguiente pagina
  25.                     // Muevete mas alla del siguiente salto de linea
  26.                     CREDITS.text_pos += 2;
  27.                     // Marca el final de pagina de texto
  28.                     endofpage = true;
  29.                     break;
  30.                 case 0x3C:      // <    Fin de texto
  31.                     endofpage = true;
  32.                     end = true;
  33.                     break;
  34.                 default:        // Imprime el caracter
  35.                     text[row][column] = CREDITS.text_buffer[CREDITS.text_pos];
  36.                     column ++;
  37.                     if (column > 15) column = 15;   // Limite de la linea (error trap)
  38.                     break;
  39.             }
  40.  
  41.             // Siguiente caracter en el buffer
  42.             CREDITS.text_pos ++;
  43.  
  44.         } else {
  45.  
  46.             // Salta los dos caracteres del retorno de linea
  47.             CREDITS.text_pos += 2;
  48.             // Y salta de linea en el buffer de texto
  49.             row ++;
  50.             column = 0;
  51.             // Verifica los limites de lineas (error trap)
  52.             if (row == 13) endofpage = true;
  53.  
  54.         }
  55.  
  56.     }
  57.  
  58.     // Imprime la pagina de texto las texturas del panel
  59.     y = (112 - ((row << 4) >> 1));
  60.     for (line = 0; line < row; line ++) {
  61.         CreditsWriteTextOnTexture(text[line], y);
  62.         y += 16;
  63.     }
  64.  
  65.     // Devuelve el resultado de si es el final del texto
  66.     return end;
  67.    
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement