home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 August / GSSH0804.iso / Rollenspiele / SwordOfFargoal / fargoal20030731b.exe / fargoal / src / scroller.c < prev    next >
C/C++ Source or Header  |  2003-07-31  |  3KB  |  121 lines

  1. #include "main.h"
  2. #include "char.h"
  3. #include "gfx.h"
  4. #include "map.h"
  5. #include "game.h"
  6. #include "scroller.h"
  7.  
  8. int scroller_active;
  9. static int pos;
  10. static int monsters;
  11.  
  12. void
  13. scroller_init (void)
  14. {
  15.     pos = 0;
  16.     monsters = 0;
  17.     scroller_active = 1;
  18. }
  19.  
  20. void
  21. scroller_frame (void)
  22. {
  23.     pos++;
  24.     
  25.     if (!(pos % (FPS / 2)))
  26.     {
  27.         monsters++;
  28.     }
  29.  
  30.     if (monsters < 68)
  31.     {
  32.         int v = 250;
  33.         if (monsters >= 64)
  34.             v = 250 + 250 * (63 - monsters) / 5;
  35.         if (!(pos % (FPS / 2)))
  36.         {
  37.             if (monsters > 16 || (monsters & 1) || monsters == 8 || monsters == 12)
  38.                 play_sample (step, v, 128, 1000, 0);
  39.         }
  40.         if (monsters > 16 && !(pos % FPS))
  41.         {
  42.             play_sample (victory, v, 128, 500 * rnd (1,3), 0);
  43.         }
  44.         if (monsters > 24 && !((pos + FPS / 2) % FPS))
  45.         {
  46.             play_sample (gold, v, 128, 1000 * rnd (1,3), 0);
  47.         }
  48.         if (monsters > 32 && !((pos + FPS / 4) % FPS))
  49.         {
  50.             play_sample (human[rnd (0, 6)], v, 128 + rnd (-50, 50), 1000, 0);
  51.         }
  52.         if (monsters > 32 && !((pos + 3 * FPS / 4) % FPS))
  53.         {
  54.             play_sample (creature[rnd (0, 6)], v, 128  + rnd (-50, 50), 1000, 0);
  55.         }
  56.     }
  57.     else
  58.     {
  59.         if (!(pos % (FPS / 2)) && monsters == 68)
  60.         {
  61.             play_sample (intro, 250, 128 - 50, 1001, 0);
  62.             play_sample (intro, 250, 128 + 50, 999, 0);
  63.         }
  64.         
  65.         if (!(pos % (FPS / 2)) && monsters == 80)
  66.         {
  67.             play_sample (levelup, 250, 128, 2000, 0);
  68.             play_sample (levelup, 250, 128, 1000, 0);
  69.         }
  70.     }
  71. }
  72.  
  73. void
  74. scroller_render (void)
  75. {
  76.     int i;
  77.     int y;
  78.     int c = makecol (255, 255, 255);
  79.     clear_to_color (page, makecol (0, 0, 0));
  80.     text_mode (-1);
  81.     
  82.     y = SCREEN_H / 2 - pos;
  83.     textprintf_centre (page, font, 320, y += FPS / 2, c, "The sword of Fargoal!!");
  84.     textprintf_centre (page, font, 320, y += FPS / 2, c, "created by Jeff McCord");
  85.     textprintf_centre (page, font, 320, y += FPS / 2, c, "released by Epyx in 1983");
  86.             
  87.     draw_sprite (page, tiles[SPOT_SWORD], 320 - 8, SCREEN_H - pos);
  88.     
  89.     y = SCREEN_H + 3 * FPS - pos;
  90.     
  91.     textprintf_centre (page, font, 320, y += FPS / 2, c, "presented by");
  92.     textprintf_centre (page, font, 320, y += FPS / 2, c, "Paul Pridham");
  93.     textprintf_centre (page, font, 320, y += FPS / 2, c, "and");
  94.     textprintf_centre (page, font, 320, y += FPS / 2, c, "Elias Pschernig");
  95.     
  96.     textprintf_centre (page, font, 320, SCREEN_H + 7 * FPS - pos,
  97.         makecol (255, 255, 255), "Starring");
  98.     
  99.     for (i = 1; i <= 20; i++)
  100.     {
  101.         y = SCREEN_H + (8 + i) * FPS - pos;
  102.         draw_sprite (page, anims[i], 160, y);
  103.         textprintf (page, font, 320, y, makecol (255, 255, 255), "%s", char_names[i]);
  104.         textprintf (page, font, 480, y, makecol (255, 0, 0), "%i slain", list[1].slain_foes[i]);
  105.     }
  106.     
  107.     y = SCREEN_H + (8 + 25) * FPS - pos;
  108.     draw_sprite (page, anims[0], 320 - sprite_w / 2, y);
  109.     
  110.     if (monsters > 86)
  111.         textprintf_centre (page, font, 320, SCREEN_H / 2, c, "The End");
  112.     
  113.     blit (page, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
  114. }
  115.  
  116. void
  117. scroller_exit (void)
  118. {
  119.     scroller_active = 0;
  120. }
  121.