#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <graphics/gfxmacros.h>
#include <exec/memory.h>
#include <libraries/dos.h>
#include <stdio.h>

struct TextFont *tf[2];
struct TextAttr ta;

struct DiskfontBase *DiskfontBase;
struct GfxBase *GfxBase;
struct IntuitionBase *IntuitionBase;
struct IntuiMessage *nachricht;
struct RastPort *rp;
struct Screen *Screen;
struct Window *Window;

ULONG klasse=0;
USHORT code;

char *kommentar[20][3]={
                   {"Kann man diese","Leistung(?)","bewerten ?"},
                   {"Dreijährige","machen das","BESSER !"},
                   {"Schlechter","spielen nur","wenige !"},
                   {"Vom Zuschauen","bekommt man","Magenkrämpfe !"},
                   {"Sie spielten","immerhin wie","ein Anfänger !"},
                   {"Das war fast","eine halbwegs","gute Partie !"},
                   {"Sie hätten","schlechter","spielen können!"},
         {"Das PRINZIP","dieses Spieles","ist verstanden!"},
         {"Das war","eine mittel-","mäßige Leistung"},
         {"Tausende","sind schlechter","als SIE !"},
         {"Schon","ganz","gut !"},
         {"Nicht übel !","Nicht übel !","Wirklich nicht!"},
         {"Eine sehr","respektable","Leistung !"},
         {"Donnerwetter !","sehr ordent-","lich gespielt !"},
         {"Tolle Leistung!","Wirklich !","Im Ernst !"},
         {"Mit Ihnen hätte","Napoleon NICHT","verloren !"},
         {"Julius Cäsar","wäre vor Neid","erblaßt !"},
         {"Eine absolute","strategische","Spitzenleistung"},
         {"Man konnte wohl","kaum BESSER","spielen !"},  

         {"Hatten Sie","überhaupt","Gegner ?!?"}};
 
VOID Bilanzen_Kommentar(nr,sieger)
register UBYTE nr,sieger;
{
register USHORT punkte=100;
register BOOL abbruch=FALSE;   
/*   punkte-=(runden-run[nr]);
   punkte*=10;
   if (sieger==5) { 
     punkte=300;
     abbruch=TRUE;
   }
   punkte+=stat_max[nr]*5+feld_max[nr];
   punkte=punkte+(tr_dat[nr][2]+he_dat[nr][2]*2-tr_dat[nr][1]-he_dat[nr][1]*2)
                 *10;
   punkte-=300;
   punkte/=((1200-900*abbruch)/19);
   if(punkte<0) punkte=0;
   if((tr_dat[nr][1]+he_dat[nr][1]<9 || runden<10) && (stat_max[nr]==16 ||
       feld_max[nr]==175))
          punkte=20;
   nr--;*/punkte=sieger;
   print(kommentar[punkte][0],1,86+138*nr+64-
         TextLength(rp,kommentar[punkte][0],strlen(kommentar[punkte][0]))/2,
         215);
   print(kommentar[punkte][1],1,86+138*nr+64-
         TextLength(rp,kommentar[punkte][1],strlen(kommentar[punkte][1]))/2,
         225);
   print(kommentar[punkte][2],1,86+138*nr+64-
         TextLength(rp,kommentar[punkte][1],strlen(kommentar[punkte][2]))/2,
         235);
}
Lade_Fonts();
{
   DiskfontBase=OpenLibrary("diskfont.library",0);

   ta.ta_Name = "ruby.font";
   ta.ta_YSize = 8L;
   ta.ta_Style = FS_NORMAL;
   ta.ta_Flags = FPF_ROMFONT|FPF_DISKFONT|FPF_PROPORTIONAL|FPF_DESIGNED;
   tf[0] = (struct TextFont *) OpenDiskFont(&ta);

   ta.ta_Name = "garnet.font";
   ta.ta_YSize = 9L;
   ta.ta_Style = FS_NORMAL;
   ta.ta_Flags = FPF_ROMFONT|FPF_DISKFONT|FPF_PROPORTIONAL|FPF_DESIGNED;
   tf[1] = (struct TextFont *) OpenDiskFont(&ta);

   CloseLibrary(DiskfontBase);  
}

Set_Font(font)
register UBYTE font;
{
   SetFont(rp,tf[font]);
}

Print_mitte(string,links,rechts,y,farbe)
char *string;
register USHORT links,rechts;
register UBYTE y,farbe;
{
  SetAPen(rp,farbe);
  Move(rp,(rechts-links)/2-TextLength(rp,string,strlen(string))/2+links,y);
  Text(rp,string,strlen(string));
}

char *Zahl_text(zahl,gr)
register ULONG zahl;
register UBYTE gr;
{
   static char kette[10];
   kette[gr]='\0';
   do {
       kette[--gr]=zahl%10+'0';
       zahl/=10;
      }
   while(gr>0);
   while(kette[gr]=='0' && kette[gr+1]!=0) kette[gr++]=' ';
   return(kette);
}

VOID Installieren()
{
   struct NewScreen NewScreen;
   struct NewWindow NewWindow;

   IntuitionBase = (struct IntuitionBase *)
            OpenLibrary ("intuition.library", 0);
   GfxBase = (struct GfxBase *)
            OpenLibrary ("graphics.library", 0);
   
   NewScreen.LeftEdge = 0; NewScreen.TopEdge = 0;
   NewScreen.Width = 640; NewScreen.Height = 256;
   NewScreen.Depth = 4;
   NewScreen.DetailPen = 0; NewScreen.BlockPen = 0;
   NewScreen.ViewModes =  HIRES;
   NewScreen.Type = CUSTOMSCREEN;
   NewScreen.Font = NULL;
   NewScreen.DefaultTitle = "EPROMMER SOFTWARE";
   NewScreen.Gadgets = NULL;
   NewScreen.CustomBitMap = NULL;
   
   Screen = (struct Screen *) OpenScreen (&NewScreen);
   if (Screen == NULL)
   {
      printf ("Screen laesst sich nicht oeffnen !!\n");
      exit (FALSE);
   }

   NewWindow.LeftEdge = 0;
   NewWindow.TopEdge = 0;
   NewWindow.Width = 640;
   NewWindow.Height = 256;
   NewWindow.DetailPen = 15;
   NewWindow.BlockPen = 0;
   NewWindow.IDCMPFlags = MOUSEBUTTONS|MENUPICK|GADGETUP;
   NewWindow.Flags = ACTIVATE|BORDERLESS|REPORTMOUSE/*|RMBTRAP*/;
   NewWindow.FirstGadget = NULL;
   NewWindow.CheckMark = NULL;
   NewWindow.Title = "Bundi-Test";
   NewWindow.Screen = Screen;
   NewWindow.BitMap = NULL;
   NewWindow.MinWidth = 0; NewWindow.MinHeight = 0;
   NewWindow.MaxWidth = 0; NewWindow.MaxHeight = 0;
   NewWindow.Type = CUSTOMSCREEN;

   Window = (struct Window *) OpenWindow (&NewWindow);
   if (Window == NULL) {
      printf ("Probleme mit dem Window !!\n");
      CloseScreen(Screen);
      exit (FALSE);
    }
   rp=Window->RPort;
}

Grafik()
{
FILE *datei;
struct BitMap *prt;
register USHORT schleife,z;
register UBYTE rot,grun,blau;
UBYTE ende;
   /*Lade_Fonts();

   if ((DosBase =
    OpenLibrary("dos.library", 0)) == 0) exit();*/

   datei = Open("SYS:BILANZEN_BILD",MODE_OLDFILE);   /* Datei oeffnen */
   if(datei == 0) {
     printf("Keinen File geoefnet !!!(Filename = DF0:BILANZEN_BILD)\n");
     exit();
   }
   ns.ViewModes=HIRES;
   ns.Width=640;ns.Height=256;ns.Depth=4;
   if (!(Screen = (struct Screen*) OpenScreen(&ns))) exit();
   rp = &Screen->RastPort;
   ptr = rp->BitMap;
   for(schleife = 0; schleife < ns.Depth; schleife++)
      puffer[schleife] = ptr->Planes[schleife];
   OFF_DISPLAY;
   for(schleife=0;schleife<ns.Depth;schleife++)
      Read(datei,puffer[schleife],20480);                          

   for(z=1;z<5;z++)
      print(/*spielername[z-1]*/"Willibald",1,
       150-strlen(/*spielername[z-1]*/"Willibald")*4+138*(z-1),43);
   Set_Font(0);
   for(z=1;z<5;z++) {
      print(Zahl_zu_Text(/*run[z]*/10),1,133+138*(z-1),69);
      print(Zahl_zu_Text(/*feld_max[z]*/10),1,133+138*(z-1),93);
      print(Zahl_zu_Text(/*stat_max[z]*/10),1,133+138*(z-1),117);
      print(Zahl_zu_Text(/*tr_dat[z][0]*/10),1,115+138*(z-1),141);
      print(Zahl_zu_Text(/*he_dat[z][0]*/10),1,151+138*(z-1),141);
      print(Zahl_zu_Text(/*tr_dat[z][1]*/10),1,115+138*(z-1),165);
      print(Zahl_zu_Text(/*he_dat[z][1]*/10),1,151+138*(z-1),165);
      print(Zahl_zu_Text(/*tr_dat[z][2]*/10),1,115+138*(z-1),189);
      print(Zahl_zu_Text(/*he_dat[z][2]*/10),1,151+138*(z-1),189);
      Bilanzen_Kommentar(z,z);
   } 
   for(schleife=0;schleife<16;schleife++)
      {
       Read(datei,&rot,1);
       Read(datei,&grun,1);
       Read(datei,&blau,1);
       SetRGB4(&Screen->ViewPort,schleife,rot/16,grun/16,blau/16);
      };

/*   if((sprite_id=GetSprite(&stern_sprite,2))==-1) exit();
   stern_sprite.x=stern_sprite.y=0;
   stern_sprite.height=14;

   SetRGB4(&Screen->ViewPort,21,11,11,11);
   SetRGB4(&Screen->ViewPort,22,13,13,13);
   SetRGB4(&Screen->ViewPort,23,15,15,15);
*/
   ON_DISPLAY;
   Close(datei);            

main()
{
register UBYTE i;
FILE *fp;
  Installieren();
  Lade_Fonts();

  for(i=0;i<2;i++) 
    CloseFont(tf[i]);
  CloseLibrary(GfxBase);
  CloseLibrary(IntuitionBase);
  CloseWindow(Window);
  CloseScreen(Screen);
}

