174 lines
5.5 KiB
C++
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 );
|
|
}
|