home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / xgalaga-2_0_tar.gz / xgalaga-2_0_tar / xgalaga-2.0 / title.c < prev    next >
C/C++ Source or Header  |  1998-04-30  |  4KB  |  149 lines

  1. /* $Id: title.c,v 1.3 1998/04/30 05:11:58 mrogre Exp $ */
  2. /* Copyright (c) 1998 Joe Rumsey (mrogre@mediaone.net) */
  3. #include "copyright.h"
  4. #include <config.h>
  5.  
  6. #include <stdio.h>
  7. #include "Wlib.h"
  8. #include "defs.h"
  9. #include "images.h"
  10. #include "data.h"
  11. #include "struct.h"
  12. #include "proto.h"
  13.  
  14. W_Image *pauseImage, *titleImage;
  15. int pausex, pausey, pauseyspeed=1;
  16.  
  17. void undo_pause()
  18. {
  19.     W_CacheClearArea(baseWin, pausex-(pauseImage->width/2), pausey-(pauseImage->height/2), 
  20.              pauseImage->width, pauseImage->height);
  21. }
  22.  
  23. void do_pause()
  24. {
  25.     if((pausey < pauseImage->height/2) || ((pausey+(pauseImage->height/2)) >= WINHEIGHT))
  26.     pauseyspeed = -pauseyspeed;
  27.     pausey+=pauseyspeed;
  28.  
  29.     W_DrawImage(baseWin, pausex-(pauseImage->width/2), pausey-(pauseImage->height/2), 0, pauseImage, W_White);
  30. }
  31.  
  32. void 
  33. center_text(char *text, int y, W_Color color)
  34. {
  35. /*
  36.     W_MaskText(baseWin, WINWIDTH/2 - ((strlen(text)*W_Textwidth)/2)-1, y+1, W_Black,
  37.            text, strlen(text), W_RegularFont);
  38. */
  39.     W_MaskText(baseWin, WINWIDTH/2 - ((strlen(text)*W_Textwidth)/2), y, color,
  40.            text, strlen(text), W_RegularFont);
  41. }
  42.  
  43. #if 0 /* ships vary from level to level now */
  44. static void show_points()
  45. {
  46.     int i, ty;
  47.     int a_images[6] = {
  48.     I_ALIEN1,
  49.     I_ALIEN2,
  50.     I_ALIEN3,
  51.     I_ALIEN4,
  52.     I_ALIEN5,
  53.     I_ALIEN6
  54.     };
  55.  
  56.     char buf[40];
  57.  
  58.     for (i=0;i<6;i++) {
  59.     W_DrawImage(baseWin, WINWIDTH/2 - 30, 220+i*21,
  60.             0, getImage(a_images[5-i]), W_Red);
  61.     if(i < 5)
  62.         sprintf(buf, "- %d", (i+1)*100);
  63.     else
  64.         sprintf(buf, "- ???");
  65.     W_MaskText(baseWin, WINWIDTH/2, 225+i*21,
  66.            W_Yellow, buf, strlen(buf), W_RegularFont);
  67.     }
  68.     ty = 220+i*21;
  69.     center_text("Ships in convoy are worth 50 points", ty, W_Green); ty += W_Textheight;
  70.     center_text("Bonus ships at 20,000, 50,000, then every 50,000.", ty, W_Green);
  71. }
  72. #endif
  73.  
  74. static void show_help()
  75. {
  76.     int top = 220;
  77.  
  78.     center_text("         Keyboard controls           ", top, W_Red);
  79.     center_text("  left/right arrow   move            ", top+10, W_Yellow);
  80.     center_text("  space bar          fire            ", top+20, W_Yellow);
  81.     center_text("  p                  pause           ", top+30, W_Cyan);
  82.     center_text("  q                  end game        ", top+40, W_Cyan);
  83.     center_text("  Q                  quick quit      ", top+50, W_Cyan);
  84.     center_text("  k                  keyboard control", top+60, W_Cyan);
  85.     center_text("  m                  mouse control   ", top+70, W_Cyan);
  86. #ifdef SOUND
  87.     center_text("  s                  toggle sound    ", top+80, W_Cyan);
  88. #endif
  89.       
  90.     center_text("Bonus ships at 20,000, 50,000, then every 50,000.", top+100, W_Green);
  91.     center_text("XGalaga Home page: http://ogresoft.dyn.ml.org/xgalaga.html",
  92.         top+150, W_Cyan);
  93. }
  94. void do_title()
  95. {
  96.     int ty;
  97.     char vbuf[10];
  98.     W_DrawImage(baseWin, WINWIDTH/2 - titleImage->width/2, 50, 0, titleImage, W_Red);
  99.     sprintf(vbuf, "v%s", VERSION);
  100.     center_text(vbuf, 40+titleImage->height, W_Yellow);
  101.  
  102.     ty = 60 + titleImage->height;
  103.     if(getting_name)
  104.     title_page = 0;
  105.  
  106.     switch(title_page) {
  107.       case 0:
  108.     center_text("Copyright (c) 1995-1998   Joe Rumsey", ty, W_Green); ty+= W_Textheight;
  109.     center_text("<mrogre@mediaone.net>", ty, W_Green); ty+= 2*W_Textheight;
  110.  
  111.     center_text("This game is free software, covered by the GPL", ty, W_Yellow); ty += W_Textheight;
  112.     center_text("If you enjoy it, visit http://www.gnu.org and help", ty, W_Yellow); ty+= 2*W_Textheight;
  113.     center_text("support the Free Software Foundation", ty, W_White);ty+= W_Textheight;
  114.  
  115.     if(!getting_name) {
  116.         show_help();
  117.     }
  118.     break;
  119.       case 1:
  120.       default:
  121.     show_scores();
  122.     break;
  123.     }
  124.  
  125.     center_text("Press k for keyboard control, m for mouse", WINHEIGHT - 2*W_Textheight, W_Yellow);
  126.     center_text("Or q to quit", WINHEIGHT - W_Textheight, W_Yellow);
  127.     pagetimer--;
  128.     if(!pagetimer) {
  129.     W_ClearWindow(baseWin);
  130.     title_page++;
  131.     if(title_page > 1)
  132.         title_page = 0;
  133.     pagetimer = 300;
  134.     }
  135. }
  136.  
  137. void init_titles()
  138. {
  139.     titleImage = getImage(I_TITLE);
  140.  
  141.     pauseImage = getImage(I_PAUSE);
  142.     pausex = WINWIDTH/2;
  143.     pausey = WINHEIGHT/2;
  144.     pauseyspeed = 3;
  145. }
  146.  
  147.  
  148.  
  149.