#include <STRING.H>
#include <STDIO.H>
#include "SOUREDIT/EDITSOUR.H"
#include "SOUREDIT/EDITPANN.H"
#include "SOUREDIT/EDITTABL.H"
#include "SOUREDIT/EDITGRAP.H"
#include "SOUREDIT/EDITONGL.H"
#include "SOUREDIT/EDITCHAR.H"
#define CLBLANC 242
#define CLGRIS 248
#define CLJAUNE 9
#define CLBLEU 96
#define CVX(x) ( (x - 1) * 8 ) + 8
#define CVY(y) ( (y - 1) * 8 ) + 22
void Print_Text_Box (float,float,OCTET,char*);
void Tracer_Cadre (float,float,float,float,OCTET);
void Print_Valeur_Box (float,float,OCTET,short,char);
void Combler_Zero (char*,char);
extern OCTET buftab1_sans_cadre [BUFSIZE_SANS_CADRE];
OCTET page;
void Panneau_6 (void)
{
    OCTET cpt;
    short x,y;
    OCTET col,lig;
    float xbox,ybox;
    long ocdes;
    float pourcent;
    char buf [7];
    OCTET buffer [4][16] =
    {
        { 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7},
        {11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11},
        {11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11},
        {10, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,13}
    };
    Lire_Tableau ( Lire_Tableau_Encours() );
    Lire_Buftab_Sans_Cadre (buftab1_sans_cadre);
    Ecrire_Panneau_Encours (Lire_Panneau_Demande () );
    Ecrire_Panneau_Demande (0);
    page = (Lire_Page () == 0) ? 1 : 0;
    Lire_Image_Pcx ("SPRFILES/DECORS",page,0,0,MASK_OFF,0,0,319,399);
    for (cpt = 0;
            cpt < NB_BOB_BORDURE;
            cpt++)
        Lire_Bob (BOB_BORDURE + cpt,page,
                  Lire_Xbordure () + (cpt * BORDURE_LONG),
                  Lire_Ybordure () );
    Lire_Bob (BOB_FOND,page,
              Lire_Xfond (),
              Lire_Yfond ());
    Afficher_Onglet (page,ONGLET6);
    xbox = 3;
    ybox = 14.5;
    Tracer_Cadre (xbox,ybox,20,6,CLGRIS);
    Print_Text_Box (xbox+6,ybox+1,CLBLEU,"DESSINS");
    Print_Text_Box (xbox+1,ybox+3,CLBLANC,"NOMBRE  :");
    Print_Valeur_Box (xbox+14,ybox+3,CLJAUNE,Lire_Nbdessin (),2);
    Print_Text_Box (xbox+16,ybox+3,CLBLANC,"/32");
    Print_Text_Box (xbox+1,ybox+4,CLBLANC,"SURFACE :");
    Print_Text_Box (xbox+18,ybox+4,CLBLANC,"%");
    ocdes = 0L;
    for (cpt = 0;
            cpt < Lire_Nbdessin ();
            cpt ++)
        ocdes += ( (long)(Lire_Lgdessin(cpt) * 7) *
                   (long)(Lire_Htdessin(cpt) * 11) );
    pourcent = (float)(ocdes * 100L) / (float)109263L;
    sprintf (buf,"%.2f",pourcent);
    Combler_Zero (buf,6);
    Print_Text_Box (xbox+11,ybox+4,CLJAUNE,buf);
    xbox = 1;
    ybox = 21;
    Tracer_Cadre (xbox,ybox,14,26,CLGRIS);
    Print_Text_Box (xbox+1,ybox+1,CLBLEU,"SERPENTS RVB");
    Print_Text_Box (xbox+4,ybox+3,CLBLANC,"V LG DEP.");
    for (cpt = 0;
            cpt < Lire_Nbnibble_X ();
            cpt ++)
    {
        Print_Valeur_Box (xbox+1,ybox+5+cpt,CLBLANC,cpt+1,2);
        switch (Lire_Vtnibble_X (cpt))
        {
        case 0 :
        {
            Print_Text_Box (xbox+4,ybox+5+cpt,CLJAUNE,"R");
            break;
        }
        case 1 :
        {
            Print_Text_Box (xbox+4,ybox+5+cpt,CLJAUNE,"N");
            break;
        }
        case 2 :
        {
            Print_Text_Box (xbox+4,ybox+5+cpt,CLJAUNE,"L");
            break;
        }
        default :
        {
            Print_Text_Box (xbox+4,ybox+5+cpt,CLJAUNE,"A");
        }
        }
        Print_Valeur_Box (xbox+6,ybox+5+cpt,CLJAUNE,Lire_Lgnibble_X (cpt),2);
        Print_Valeur_Box (xbox+9,ybox+5+cpt,CLJAUNE,Lire_Tpnibble_X (cpt),4);
    }
    xbox = 1;
    ybox = 2;
    Tracer_Cadre (xbox,ybox,9,11,CLGRIS);
    Print_Text_Box (xbox+1,ybox+1,CLBLEU,"TABLEAU");
    Print_Valeur_Box (xbox+3.5,ybox+3,CLJAUNE,Lire_Tableau_Encours (),2);
    Afficher_Mini_Tableau_Isole (page,Lire_Tableau_Encours (),
                                 CVX(xbox + 1.8),CVY(ybox + 4.9));
    xbox = 24;
    ybox = 1;
    Tracer_Cadre (xbox,ybox,15,23,CLGRIS);
    Print_Text_Box (xbox+3,ybox+1,CLBLEU,"PASTILLES");
    for (cpt = 0;
            cpt <= 18;
            cpt ++)
    {
        Afficher_Bob (page,BOB_PASTILLE+cpt,CVX(xbox+1),
                      CVY(ybox+2.8+cpt),MASK_OFF);
        Print_Valeur_Box (xbox+ 3,ybox+3+cpt,CLJAUNE,
                          Totaliser_Pastilles (cpt+ 1),4);
        Afficher_Bob (page,BOB_PASTILLE+cpt+19,CVX(xbox+8),
                      CVY(ybox+2.8+cpt),MASK_OFF);
        Print_Valeur_Box (xbox+10,ybox+3+cpt,CLJAUNE,
                          Totaliser_Pastilles (cpt+20),4);
    }
    xbox = 15;
    ybox = 25;
    Tracer_Cadre (xbox,ybox,24,3,CLGRIS);
    Print_Text_Box (xbox+1,ybox+1,CLBLEU,"COMPTE A REBOURS :");
    Print_Valeur_Box (xbox+20,ybox+1,CLJAUNE,Lire_Temps (),3);
    xbox = 17.5;
    ybox = 28;
    Tracer_Cadre (xbox,ybox,19,3,CLGRIS);
    Print_Text_Box (xbox+1,ybox+1,CLBLEU,"BONUS POINT :");
    Print_Valeur_Box (xbox+15,ybox+1,CLJAUNE,Lire_Vlbonus (),3);
    xbox = 17.5;
    ybox = 31;
    Tracer_Cadre (xbox,ybox,19,3,CLGRIS);
    Print_Text_Box (xbox+1,ybox+1,CLBLEU,"TEMPS MOINS :");
    Print_Valeur_Box (xbox+15,ybox+1,CLJAUNE,Lire_Temps_Moins (),3);
    xbox = 18;
    ybox = 34;
    Tracer_Cadre (xbox,ybox,18,3,CLGRIS);
    Print_Text_Box (xbox+1,ybox+1,CLBLEU,"TEMPS PLUS :");
    Print_Valeur_Box (xbox+14,ybox+1,CLJAUNE,Lire_Temps_Plus (),3);
    xbox = 18.5;
    ybox = 37;
    Tracer_Cadre (xbox,ybox,17,10,CLGRIS);
    Print_Text_Box (xbox+1,ybox+1,CLBLEU,"BORDURE ET FOND");
    for (lig = 0;
            lig <= 3;
            lig ++)
    {
        for (col = 0;
                col <= 15;
                col ++)
        {
            Afficher_Bob (page,BOB_FOND,
                          CVX(xbox + 1.6) + (col * 7),
                          CVY(ybox + 2.9) + (lig * 11),
                          MASK_ON);
            if (buffer [lig][col] != 0)
                Afficher_Bob (page,
                              BOB_BORDURE + ( buffer [lig][col] - 1 ),
                              CVX(xbox + 1.6) + (col * 7),
                              CVY(ybox + 2.9) + (lig * 11),
                              MASK_ON);
        }
    }
    xbox = 10.5;
    ybox = 1;
    Tracer_Cadre (xbox,ybox,13,13,CLGRIS);
    Print_Text_Box (xbox+2,ybox+1,CLBLEU,"SERPENT B");
    Print_Text_Box (xbox+1,ybox+10,CLBLANC,"V  :");
    switch (Lire_Vtnibble ())
    {
    case 0 :
    {
        Print_Text_Box (xbox+6,ybox+10,CLJAUNE,"R");
        break;
    }
    case 1 :
    {
        Print_Text_Box (xbox+6,ybox+10,CLJAUNE,"N");
        break;
    }
    default :
    {
        Print_Text_Box (xbox+6,ybox+10,CLJAUNE,"L");
    }
    }
    Print_Text_Box (xbox+1,ybox+11,CLBLANC,"LG :");
    Print_Valeur_Box (xbox+6,ybox+11,CLJAUNE,Lire_Lgnibble (),2);
    if (Lire_Spnibble () == 1)
    {
        x = CVX(xbox + 4);
        y = CVY(ybox + 3);
        Afficher_Bob (page,SNAKLES_BLANC+ 2,x+ 0,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+ 7,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+14,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 8,x+21,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+28,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+10,x+35,y,MASK_ON);
    }
    else
    {
        x = CVX(xbox + 4);
        y = CVY(ybox + 3);
        Afficher_Bob (page,SNAKLES_BLANC+ 2,x+ 0,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+ 7,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+14,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+21,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+28,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 6,x+35,y,MASK_ON);
    }
    if (Lire_Mtnibble () == 1)
    {
        x = CVX(xbox + 4);
        y = CVY(ybox + 5);
        Afficher_Bob (page,SNAKLES_VERT+ 2,x+ 0,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_VERT+ 0,x+ 7,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_VERT+ 0,x+14,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_VERT+ 6,x+21,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+28,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 6,x+35,y,MASK_ON);
    }
    else
    {
        x = CVX(xbox + 4);
        y = CVY(ybox + 5);
        Afficher_Bob (page,SNAKLES_VERT+ 2,x+ 0,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_VERT+ 0,x+ 7,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_VERT+ 6,x+14,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_ORANGE+ 2,x+21,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_ORANGE+ 0,x+28,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_ORANGE+ 6,x+35,y,MASK_ON);
    }
    if (Lire_Flnibble () == 1)
    {
        x = CVX(xbox + 4);
        y = CVY(ybox + 7);
        Afficher_Bob (page,SNAKLES_BLANC+ 2,x+ 0,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+ 7,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+14,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 6,x+21,y,MASK_ON);
        Tracer_Droite (page,x+29,y+5,x+29+(12),y+5,240);
    }
    else
    {
        x = CVX(xbox + 4);
        y = CVY(ybox + 7);
        Afficher_Bob (page,SNAKLES_BLANC+ 2,x+ 0,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+ 7,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 0,x+14,y,MASK_ON);
        Afficher_Bob (page,SNAKLES_BLANC+ 6,x+21,y,MASK_ON);
        Afficher_Point (page,x+29+ 0,y+5,240);
        Afficher_Point (page,x+29+ 2,y+5,240);
        Afficher_Point (page,x+29+ 4,y+5,240);
        Afficher_Point (page,x+29+ 6,y+5,240);
        Afficher_Point (page,x+29+ 8,y+5,240);
        Afficher_Point (page,x+29+10,y+5,240);
        Afficher_Point (page,x+29+12,y+5,240);
    }
    Changer_Page (page);
    do
    {
    }
    while (Lire_Panneau_Demande () == 0);
}
void Print_Text_Box (float x,float y,OCTET cl,char *m)
{
    short posx;
    short posy;
    posx = CVX(x);
    posy = CVY(y);
    Print (page,posx,posy,cl,250,m);
}
void Tracer_Cadre (float ox,float oy,float lg,float ht,OCTET cl)
{
    short posx;
    short posy;
    posx = CVX(ox);
    posy = CVY(oy);
    Tracer_Droite (page,posx+4,posy+4,posx+(lg*8)-4,posy+4,cl);
    Tracer_Droite (page,posx+4,posy+4,posx+4,posy+(ht*8)-4,cl);
    Tracer_Droite (page,posx+(lg*8)-4,posy+4,posx+(lg*8)-4,posy+(ht*8)-4,cl);
    Tracer_Droite (page,posx+4,posy+(ht*8)-4,posx+(lg*8)-4,posy+(ht*8)-4,cl);
}
void Print_Valeur_Box (float x,float y,OCTET cl,short vl,char nbu)
{
    char buffer [7];
    sprintf (buffer,"%d",vl);
    Combler_Zero (buffer,nbu);
    Print_Text_Box (x,y,cl,buffer);
}
void Combler_Zero (char *buffer,char lgnb)
{
    char cpt;
    char nbzero;
    char backup [7];
    nbzero = lgnb - strlen (buffer);
    if (nbzero > 0)
    {
        strcpy (backup,"\0");
        for (cpt = 0;
                cpt < nbzero;
                cpt ++)
            strcat (backup,"0");
        strcat (backup,buffer);
        strcpy (buffer,backup);
    }
}