HERM/HERM_IGA.CPP
2021-09-12 20:06:36 +02:00

174 lines
5.5 KiB
C++

/*************************************************************************\
|* *|
|* HERM_IGA *|
|* *|
|* Descripci¢n: *|
|* Gestion de insginias ( solo ense¤a desde 1 hata 19 ) *|
|* *|
\*************************************************************************/
#include <stdlib.h>
#include <conio.h>
#include <alloc.h>
#include <string.h>
#include <graphics.h>
#include "..\libs\make_bot\make_bot.h"
#include "..\libs\bdatos\bdatos.hh"
#include "Herm.h"
extern CONFIG Config;
extern BDatos BConfig;
extern int far Espera_TeclaRaton(void);
void MuestraInsignia( int insignia, char como, int CtoVirgen, int columna );
void GestionInsignias(void)
{
int i, key; char buffer[80];
int X1, X0;
char insignia, ok, CtoVirgen, columna;
Imprime_Estaticos(50, "Herm.img");
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
for ( insignia = 1; insignia < 20; insignia++ )
{
MuestraInsignia( insignia, NORMAL, 0, 0 );
MuestraInsignia( insignia, NORMAL, 1, 0 );
MuestraInsignia( insignia, NORMAL, 0, 1 );
MuestraInsignia( insignia, NORMAL, 1, 1 );
}
insignia = 1; CtoVirgen = 0;
columna = 0;
ok = 0;
do{
MuestraInsignia( insignia, INTENSO, CtoVirgen, columna );
Espera_TeclaRaton();
MuestraInsignia( insignia, NORMAL, CtoVirgen, columna );
if ( !kbhit() ) // Donde pincho el raton
{
for ( i = 0; i < 20; i++ )
{
if ( x_raton > 15 && x_raton < 180 && y_raton > 70+20*i && y_raton < 90+20*i )
{
CtoVirgen = 0; columna = 0; insignia = i+1;
break;
}
if ( x_raton > 200 && x_raton < 310 && y_raton > 70+20*i && y_raton < 90+20*i )
{
CtoVirgen = 0; columna = 1; insignia = i+1;
break;
}
if ( x_raton > 330 && x_raton < 495 && y_raton > 70+20*i && y_raton < 90+20*i )
{
CtoVirgen = 1; columna = 0; insignia = i+1;
break;
}
if ( x_raton > 495 && x_raton < 625 && y_raton > 70+20*i && y_raton < 90+20*i )
{
CtoVirgen = 1; columna = 1; insignia = i+1;
break;
}
}
Anclar_Raton();
} else
switch( ( key = getch() ) )
{
case 0:
switch( getch() )
{
// Flecha Izquierda
case 75:
columna--;
if ( columna < 0 )
{
if ( CtoVirgen == 1 )
{
CtoVirgen = 0; columna = 1;
}else{
columna = 0;
}
}
break;
// Flecha Derecha
case 77:
columna ++;
if ( columna > 1 )
{
if ( CtoVirgen == 0 )
{
CtoVirgen=1; columna = 0;
}else{
columna = 1;
}
}
break;
// Flecha Arriba
case 80:
insignia++; if ( insignia > 19 ) insignia = 19;
break;
// Flecha Abajo
case 72:
insignia--; if ( insignia < 1 ) insignia = 1;
break;
}
break;
case 15:
case 9:
CtoVirgen = !CtoVirgen;
columna = 0;
break;
// ESC
case 27:
ok = 1;
break;
default:
if ( key != 13 && key != 8 ) ungetch(key);
if ( columna == 0)
strcpy( buffer, Config.Insignia[insignia+20*CtoVirgen].NInsignia );
else
sprintf( buffer, "%ld", Config.Insignia[insignia+20*CtoVirgen].Suplemento );
if ( !( InputCadenaG_T5( buffer, columna, (columna == 0) ? 29 : 5, BLANCO, AZUL, ( (columna==0) ? 15 + CtoVirgen*315 : 200 + CtoVirgen*315 ), 70+20*(insignia-1), ( (columna==0) ? 200 + CtoVirgen*315 : 300 + CtoVirgen*315 ), 90+20*(insignia-1) - 1 ) >> 8 ) )
if ( columna == 0)
strcpy( Config.Insignia[insignia+20*CtoVirgen].NInsignia, buffer );
else
Config.Insignia[insignia+20*CtoVirgen].Suplemento = atol(buffer);
}
}while( !ok );
// Salvamos configuracion
BConfig.EscribeReg( (void *)&Config, 0 );
}
void MuestraInsignia( int insignia, char como, int CtoVirgen, int columna )
{
int X0, Y0, X1, Y1;
char buffer[80];
setfillstyle( SOLID_FILL, (como==NORMAL) ? BLANCO : ROJO );
setcolor( NEGRO );
if ( columna == 0)
sprintf( buffer, "%29s", Config.Insignia[insignia+20*CtoVirgen].NInsignia );
else
sprintf( buffer, " %05ld", Config.Insignia[insignia+20*CtoVirgen].Suplemento );
insignia--;
X0 = ( (columna==0) ? 15 + CtoVirgen*315 : 200 + CtoVirgen*315 );
Y0 = 70+20*insignia;
X1 = ( (columna==0) ? 200 + CtoVirgen*315 : 300 + CtoVirgen*315 );
Y1 = 90+20*insignia;
bar( X0, Y0, X1, Y1-1 );
outtextxy( X0, Y0, buffer );
}