示例#1
0
void drawTitle() {
    int i;
    int r, g, b;
    int sx, sy;
    char *stgChr = "STAGE";
    char *quitChr = "QUIT";
    char *mdChr[] = {"NORMAL MODE", "PSY MODE", "IKA MODE", "GW MODE"};
    int mdChrX[] = {270, 330, 330, 350};
    char mdIni[] = {'N', 'P', 'I', 'G'};
    drawTitleBoard();
    for ( i=-MODE_NUM ; i<STAGE_NUM+1 ; i++ ) {
        if ( i < 0 ) {
            if ( 4+i == mode ) {
                r = 100; g = 100; b = 240;
            } else {
                r = 150; g = 150; b = 200;
            }
        } else if ( i < QUIT_STAGE_NUM && hiScore.cleard[mode][i] ) {
            r = 240; g = 180; b = 180;
        } else {
            r = 210; g = 210; b = 240;
        }
        sx = stageX[i+MODE_NUM]; sy = stageY[i+MODE_NUM];
        if ( i == slcStg ) {
            int sz = STG_BOX_SIZE*3/2;
            if ( titleCnt < 16 ) sz = sz*titleCnt/16;
            drawBox(sx, sy, sz, sz, r, g, b);
            sz = sz*3/5;
            if ( i < 0 ) {
                int md = MODE_NUM+i;
                drawString(mdChr[md], mdChrX[md], 133, 12, 0, 150, 150, 200);
                drawLetter(mdIni[md]-'A'+10, sx, sy, sz, 0, 150, 150, 240);
            } else if ( i < QUIT_STAGE_NUM  ) {
                makeStageStr(i);
                drawString(stageStr, sx-sz, sy, sz, 0, 210, 210, 240);
                drawString(stgChr, 330, 133, 12, 0, 210, 210, 240);
                drawString(stageStr, 445, 133, 12, 0, 210, 210, 240);
                drawNumCenter(hiScore.score[mode][i], 466, 168, 12, 210, 210, 240);
            } else {
                drawLetter('Q'-'A'+10, sx, sy, sz, 0, 210, 210, 240);
                drawString(quitChr, 410, 133, 12, 0, 210, 210, 240);
            }
        } else {
            drawBox(sx, sy, STG_BOX_SIZE/2, STG_BOX_SIZE/2, r*2/3, g*2/3, b*2/3);
        }
    }
    drawString(mdChr[mode], mdChrX[mode], 455, 12, 0, 150, 150, 200);
}
//senquack - partial conversion to fixed point
//void drawTitle() {
//  int i;
//  int r, g, b;
//  int sx, sy;
//  char *stgChr = "STAGE";
//  char *quitChr = "QUIT";
//  char *mdChr[] = {"NORMAL MODE", "PSY MODE", "IKA MODE", "GW MODE"};
//  int mdChrX[] = {270, 330, 330, 350};
//  char mdIni[] = {'N', 'P', 'I', 'G'};
//  drawTitleBoard();
//  
//  for ( i=-MODE_NUM ; i<STAGE_NUM+1 ; i++ ) {
//    if ( i < 0 ) {
//      if ( 4+i == mode ) {
//	r = 100; g = 100; b = 240;
//      } else {
//	r = 150; g = 150; b = 200;
//      }
//    } else if ( i < QUIT_STAGE_NUM && hiScore.cleard[mode][i] ) {
//      r = 240; g = 180; b = 180;
//    } else {
//      r = 210; g = 210; b = 240;
//    }
//    sx = stageX[i+MODE_NUM]; sy = stageY[i+MODE_NUM];
//    if ( i == slcStg ) {
//      int sz = STG_BOX_SIZE*3/2;
//      if ( titleCnt < 16 ) sz = sz*titleCnt/16;
//      drawBox(sx, sy, sz, sz, r, g, b);
//      sz = sz*3/5;
//      if ( i < 0 ) {
//	int md = MODE_NUM+i;
//	drawString(mdChr[md], mdChrX[md], 133, 12, 0, 150, 150, 200);
//	drawLetter(mdIni[md]-'A'+10, sx, sy, sz, 0, 150, 150, 240);
//      } else if ( i < QUIT_STAGE_NUM  ) {
//	makeStageStr(i);
//	drawString(stageStr, sx-sz, sy, sz, 0, 210, 210, 240);
//	drawString(stgChr, 330, 133, 12, 0, 210, 210, 240);
//	drawString(stageStr, 445, 133, 12, 0, 210, 210, 240);
//	drawNumCenter(hiScore.score[mode][i], 466, 168, 12, 210, 210, 240);
//      } else {
//	drawLetter('Q'-'A'+10, sx, sy, sz, 0, 210, 210, 240);
//	drawString(quitChr, 410, 133, 12, 0, 210, 210, 240);
//      }
//    } else {
//      drawBox(sx, sy, STG_BOX_SIZE/2, STG_BOX_SIZE/2, r*2/3, g*2/3, b*2/3);
//    }
//  }
//  drawString(mdChr[mode], mdChrX[mode], 455, 12, 0, 150, 150, 200);
//}
void drawTitle() {
   int i;
   int r, g, b;
   int sx, sy;
   char *stgChr = "STAGE";
   char *quitChr = "QUIT";
   char *mdChr[] = {"NORMAL MODE", "PSY MODE", "IKA MODE", "GW MODE"};
   int mdChrX[] = {270, 330, 330, 350};
   char mdIni[] = {'N', 'P', 'I', 'G'};
   drawTitleBoard();

   for ( i=-MODE_NUM ; i<STAGE_NUM+1 ; i++ ) {
      if ( i < 0 ) {
         if ( 4+i == mode ) {
            r = 100; g = 100; b = 240;
         } else {
            r = 150; g = 150; b = 200;
         }
      } else if ( i < QUIT_STAGE_NUM && hiScore.cleard[mode][i] ) {
         r = 240; g = 180; b = 180;
      } else {
         r = 210; g = 210; b = 240;
      }
      sx = stageX[i+MODE_NUM]; sy = stageY[i+MODE_NUM];
      if ( i == slcStg ) {
         int sz = STG_BOX_SIZE*3/2;
         if ( titleCnt < 16 ) sz = sz*titleCnt/16;
#ifdef FIXEDMATH
         drawBox(INT2FNUM(sx), INT2FNUM(sy), INT2FNUM(sz), INT2FNUM(sz), r, g, b);
#else
         drawBox(sx, sy, sz, sz, r, g, b);
#endif //FIXEDMATH
         sz = sz*3/5;
         if ( i < 0 ) {
            int md = MODE_NUM+i;
            drawString(mdChr[md], mdChrX[md], 133, 12, 0, 150, 150, 200);

            // letter at top N/P/G/I
            drawLetter(mdIni[md]-'A'+10, sx, sy, sz, 0, 150, 150, 240);
         } else if ( i < QUIT_STAGE_NUM  ) {
            makeStageStr(i);

            // 2-char stage ID below (1a, 2a, etc)
            drawString(stageStr, sx-sz, sy, sz, 0, 210, 210, 240);

            drawString(stgChr, 330, 133, 12, 0, 210, 210, 240);
            drawString(stageStr, 445, 133, 12, 0, 210, 210, 240);
            drawNumCenter(hiScore.score[mode][i], 466, 168, 12, 210, 210, 240);
         } else {
            // "q" for quit
            drawLetter('Q'-'A'+10, sx, sy, sz, 0, 210, 210, 240);

            drawString(quitChr, 410, 133, 12, 0, 210, 210, 240);
         }
      } else {
#ifdef FIXEDMATH
         drawBox(INT2FNUM(sx), INT2FNUM(sy), INT2FNUM(STG_BOX_SIZE)/2, INT2FNUM(STG_BOX_SIZE)/2, r*2/3, g*2/3, b*2/3);
#else
         drawBox(sx, sy, STG_BOX_SIZE/2, STG_BOX_SIZE/2, r*2/3, g*2/3, b*2/3);
#endif //FIXEDMATH
      }
   }
   drawString(mdChr[mode], mdChrX[mode], 455, 12, 0, 150, 150, 200);

   // senquack - visual indicator for added cheats (they disable saving of high-scores however)
   if (settings.extra_lives > 0 || settings.extra_bombs > 0) {
      char *cheat_str = "CHEAT";
      drawString(cheat_str, 285, 230, 12, 0, 255, 100, 100);
      cheat_str = "MODE";
      drawString(cheat_str, 295, 270, 12, 0, 255, 100, 100);
   }
}