//**************************************************************************//
// Include-Datei mit PCX-Routinen fr WATCOM C                              //
// -------------------------------------------                              //
// von Stephan Meiáner                                                      //
// ab 25. Mrz 1996                                                         //
//**************************************************************************//


/****************************************************************************/
/* Entkodiert eine PCX-Datei in den virtuellen Bildschirm, ohne die         */
/* Palette zu setzen.                                                       */    
/* ------------------------------------------------------------------------ */
/* Parameter: Name der PCX-Datei                                            */
/****************************************************************************/
void put_PCX( char Name[127] )
{
  int i, Farbe, Faktor, Zeichen, x= 0, y= 0;
  FILE *Datei;

  if ( (Datei = fopen(Name, "rb")) == NULL )
  {
    Screen_On(); textmodus();
    printf("\n\nERROR: Kann '%s' nicht laden!\n\n", Name);
    exit(0);
  }
  for (i=0; i<128; i++) Zeichen = fgetc(Datei);        //den Header berlesen

  while ( y <= 199 )
  {
    Zeichen = fgetc(Datei);                      // wenn kein Wiederholfaktor

    if ( Zeichen > 191 )                          // wenn ein Wiederh.faktor
    {
      Faktor = ( Zeichen - 192 );
      Farbe  = fgetc(Datei);
      for (i=0; i<Faktor; i++)
      {
         vsetpix(x, y, Farbe, res_x); x++;
         if ( x >= 320 ) { x = 0; y++; }
      }
    }
    if ( Zeichen <= 191 )
    {
      vsetpix(x, y, Zeichen, res_x); x++;
      if ( x >= 320 ) { x = 0; y++; }
    }
  }
  fclose(Datei);
}


/****************************************************************************/
/* Entkodiert eine PCX-Datei in den virtuellen Bildschirm, und setzt auch   */
/* gleich die Palette.                                                      */    
/* ------------------------------------------------------------------------ */
/* Parameter: Name der PCX-Datei                                            */
/****************************************************************************/
void show_PCX( char Name[127] )
{
  char pal[768];

  ClearPalette();
  put_PCX(Name);
  LoadPalette(Name, pal);
  SetPalette(pal);
}

/****************************************************************************/
/* Ld die Palette aus der angegebenen Datei in einen bergebenen Puffer.   */
/* ------------------------------------------------------------------------ */
/* Parameter: Name der PCX-Datei, plus Speicherplatz fr die Palette.       */
/****************************************************************************/
void LoadPalette(char Name[127], char Palette[786] )
{
  FILE *Datei;

  Datei = fopen(Name, "rb");
  fseek(Datei, -768L, SEEK_END);
  fread(Palette, 768, 1, Datei);
  fclose(Datei);
}


void play_dfl ( char Name[13] )
{
  FILE *Datei;
  int i;

  rename("dflplay.dat", "dflplay.exe");
  Datei = fopen("dflplay.nam", "wb");

  for(i=0; i<=strlen(Name); i++) fputc(Name[i], Datei);
  fclose(Datei);

  system("dflplay");
  rename("dflplay.exe", "dflplay.dat");
  remove("dflplay.nam");
}
