/*************************************/
/*                                   */
/*   Demo for vector.library V1.6x   */
/*                                   */
/* Programming by Jürgen Koch        */
/*                                   */
/* in Sep-1991                       */
/*                                   */
/*************************************/


#include <stdio.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#define BOB_NUM 1      /* Anzahl der verwendeten VBOBs (muß mind. 1 betragen) */
#include <vector.h>

struct VecBase *VecBase;



struct NewVScreen MyVScreen=
  {
   0,0,     /* Linke obere Ecke des Screen */
   320,256, /* Breite und Höhe */
   3,       /* Tiefe */
   0,0,     /* Screentitel- und -randfarben */
   0,       /* Screenmode */
   NULL,    /* Zeiger auf Font des Screens; hier Standard-Font */
   "vector.library  ©1991 by A.Lippert",
   0,       /* Flags (bisher ungenutzt) */
   0,0,     /* Offset des Vektorfensters im Screen (bisher nicht unterstützt) */
   320,256, /* Breite und Höhe des Vektorfensters (muß bisher identisch sein mit Breite und Höhe des Screens) */
   3        /* von Vektoranimation wirklich genutzte Bitplanes */
  };

struct Joy MyJoy=
 {
  50,-1000,-16000,
  3,3,3
 };


WORD ObjectPoints[]=  /* Punkt-Tabelle */
  {
   8,
  -200,-200, 200,0,
  -200, 200, 200,0,
   200, 200, 200,0,
   200,-200, 200,0,
  -200,-200,-200,0,
  -200, 200,-200,0,
   200, 200,-200,0,
   200,-200,-200,0
   };

WORD ObjectAreas[]= /* Flächen-Tabelle */
  {
   6,
    4,1,0*4,1*4,2*4,3*4,0*4,0,0,0,0,
    4,2,3*4,2*4,6*4,7*4,3*4,0,0,0,0,
    4,3,7*4,6*4,5*4,4*4,7*4,0,0,0,0,
    4,4,0*4,4*4,5*4,1*4,0*4,0,0,0,0,
    4,5,1*4,5*4,6*4,2*4,1*4,0,0,0,0,
    4,6,0*4,3*4,7*4,4*4,0*4,0,0,0,0
  };

WORD ObjectMove[]=
  {
   300, 0,0, 42, 1,1,1,  /* Positionierung und Animationspfad */
   300, 0,0,  0, 1,1,1,
   300, 0,0,-42, 1,1,1,
   END_1
  };

struct Object MyObject=
  {
   ObjectPoints,   /* Zeiger auf zugehörige Punkttabelle */
   ObjectAreas,    /* Zeiger auf zugehörige Flächentabelle */
   ObjectMove,     /* Zeiger auf zugehörige Bewegungstabelle */
   0,              /* Flags */
   0,0,-14300,     /* Start-Position */
   0,0,0           /* Start-Rotation */
  };

WORD MyColTab[]= /* Farbtabelle */
  {
   0,  0, 0, 0,   /* Register, Rot,Grün,Blau */
   1, 12,12,12,
   2, 11,11,11,
   3, 10,10,10,
   4,  9, 9, 9,
   5,  8, 8, 8,
   6,  7, 7, 7,
   7,  6, 6, 6,
   -1
  };

ULONG MyWorld[] = {  /* Welt-Struktur */
   0x00000001L,      /* erstes (High-)Wort: Flags ( = 1 für Drahtgitter); zweites Wort: Anzahl der Objekte */
   &MyObject         /* Zeiger auf Struktur des ersten Objekts */
};


struct ViewStruct *ViewStruct;


main()
  {
   if ((VecBase=(struct VecBase *)OpenLibrary("vector.library",0))==NULL)  /* "vector.library" öffnen */
     {
      printf("Unable to open 'vector.library'.\n");
      exit(0);
     }
   if ((ViewStruct=OpenVScreen(&MyVScreen))==NULL)  /* "Animationsscreen" öffnen */
     {
      printf("Couldn't open VScreen.\n");
      CloseLibrary(VecBase);
      exit(0);
     }
   SetColors(ViewStruct, &MyColTab);   /* Farben setzen */

   AutoScaleOn(MyVScreen.ViewModes);   /* Entzerrung für höhere Auflösung */

   DoAnim(&MyWorld);                   /* Auf zur Animation!! */

   CloseVScreen();                     /* Bildschirm schließen */

   CloseLibrary(VecBase);
  }
