home *** CD-ROM | disk | FTP | other *** search
/ HOT Scene Stuff / hotscenestuffzyklop1996.iso / demos / sunknown / surface.cpp < prev    next >
C/C++ Source or Header  |  1994-04-06  |  2KB  |  105 lines

  1. // SURFACE.CPP //////////////////////////////////////////////////////////////
  2.  
  3. // Thomas H.
  4.  
  5. // INCLUDES /////////////////////////////////////////////////////////////////
  6.  
  7. #include <math.h>
  8. #include <dos.h>
  9. #include <stdio.h>
  10.  
  11. #include "global.h"
  12. #include "rcglobal.h"
  13. #include "xgraf.h"
  14. #include "surface.h"
  15. #include "model.h"
  16. #include "timer.h"
  17. #include "template.h"
  18.  
  19. // INCLUDES /////////////////////////////////////////////////////////////////
  20.  
  21. #define MAXX 440000
  22. #define MINX   7000
  23. #define CENTY 78500
  24.  
  25. // EXTERNALS ////////////////////////////////////////////////////////////////
  26.  
  27. extern timer_C timer;
  28. extern byte *pressed;
  29. extern word modelx,modely,modelv;
  30. extern ulong musicstart;
  31.  
  32. // FUNCTIONS ////////////////////////////////////////////////////////////////
  33.  
  34. // SURFACE
  35.  
  36. void surface(void)
  37. {
  38.     model_C model;
  39.     model.camangle(OVERVIEW);
  40.     model.load(SURFACEFILE);
  41.  
  42.     float x,y,v,dv=0,dx=0,dy=0;
  43.  
  44.     x=70000;
  45.     y=78500;
  46.     v=-2048;
  47.  
  48.     dv=0;
  49.  
  50.     model.setpos(0,x,y);
  51.  
  52.     setpalette(SURFACEPAL);
  53.  
  54.     long frames=0;
  55.     int done=0;
  56.  
  57.     ulong estart=timer.readtimer();
  58.     ulong left=END_SURFA-timer.elapsed(musicstart,timer.readtimer());
  59.   float ddv=0;
  60.  
  61.     do
  62.     {
  63.         long now=timer.elapsed(estart,timer.readtimer());
  64.         float pro=pow((float)now/left,1.4);
  65.         pro=0.17+pro*0.83;
  66.         float vpro=pro*4;
  67.         v=-2048+3048*(vpro)+dv;
  68.         float maxf=pro*3000;
  69.         x=MINX+(MAXX-MINX)*pro+cos(M_PI*2*vpro)*maxf;
  70.         y=CENTY+sin(M_PI*2*vpro)*maxf;
  71.  
  72.         frames++;
  73.         modelx=x;
  74.         modely=y;
  75.         modelv=v;
  76.  
  77.         model.player[0].rc->x=x;
  78.         model.player[1].rc->x=x;
  79.         model.player[0].rc->y=y;
  80.         model.player[1].rc->y=y;
  81.         model.cam[0].angle=v;
  82.         model.cam[1].angle=v+ANGLES/2;
  83.  
  84.         model.draw();
  85.         model.newpage();
  86.  
  87.         if (pressed[75])
  88.             ddv-=0.5;
  89.         if (pressed[77])
  90.             ddv+=0.5;
  91.  
  92.     dv+=ddv;
  93.  
  94.         x+=dx;
  95.     y+=dy;
  96.  
  97.         fit((float)32768.0,x,(float)((2048*256.0)-32768.0));
  98.         fit((float)32768.0,y,(float)((1536*256.0)-32768.0));
  99.  
  100.         ulong gaatt=timer.elapsed(musicstart,timer.readtimer());
  101.         done|=(gaatt>=END_SURFA);
  102.     }while (!done);
  103.     long p1=timer.readtimer();
  104.     while (timer.elapsed(p1,timer.readtimer())<1000);
  105. }