PROGRAM test_compi;
CONST
Top_modulos=24;
win32_libb="win32_modules";
fmodex_libb="fmodex";
OpenAL_libb="OpenAL32";
global
usa_modulos;
struct modulos[Top_modulos];
string mod_dll;
end
string version_gmx;
string tmp[1023];
Error,mod_sonido;
file_orig;
MODO_LOG,file_log;
BEGIN
//uso: test_compi.exe <Directorio completo (usar comillas)> <Archivo.prg(sin extension)>
if(argc==1);WINDOW_SET_TITLE("Utilidad>> Ver: 13/11/2012 - Gemix: 0.6.7 (API fix)");
EXIT("Este programa,ayuda a copiar modulos .dll (Necesarios)"+CHR(10)+
"y autoejecutar un programa Gemix;"+CHR(10)+
"Por: SimulatorOne - Tino Sánchez Martos"+CHR(10)+CHR(10)+
"Uso:"+CHR(10)+
argv[0]+'<espacio>"Directorio completo(con comillas)"<espacio>"archivo.prg(sin extension)"'+CHR(10)+CHR(10)+
"Ejemplo:"+CHR(10)+
argv[0]+' "D:\JUEGOS-TINO\otros juegos\ATOMIC BOSS" "ATOMIC-test"',0);
end
if(file_exists("test_compi_log.ini"));MODO_LOG=TRUE;
file_log=fopen("test_compi-"+argv[2]+'.log',"w","t");
end
CHDIR("..");
if(MODO_LOG);FPUTS('gemix.exe "'+argv[1]+'\'+argv[2]+'.prg" > "'+argv[1]+'\'+argv[2]+'.log"',file_log);end
if(argv[1]=="" OR argv[2]=="");WINDOW_SET_TITLE("ERROR TONTO, XP");EXIT('ERROR Debes guardar tu Programa .prg'+CHR(10)+"Tu error:"+argv[1]+'\'+argv[2]+'.prg',0);end
IF(NOT FILE_EXISTS("gemix.exe"));WINDOW_SET_TITLE("ERROR IMPORTANTE!");EXIT('ERROR no se encuentra el compilador:'+CHR(10)+"gemix.exe",0);end
IF(NOT FILE_EXISTS(argv[1]+'\'+argv[2]+'.prg'));WINDOW_SET_TITLE("ERROR IMPORTANTE!");EXIT('ERROR no se encuentra la ruta del programa:'+CHR(10)+argv[1]+'\'+argv[2]+'.prg',0);end
SYSTEM('gemix.exe "'+argv[1]+'\'+argv[2]+'.prg" > "'+argv[1]+'\'+argv[2]+'.log"');//si funciona
//EXEC(0,'gemix.exe','"'+argv[1]+'\'+argv[2]+'.prg" > "'+argv[1]+'\'+argv[2]+'.log"');//no funciona
file=fopen(argv[1]+'\'+argv[2]+'.log',"r","t");
FGETS(version_gmx,file);// **** Compilador GEMIX 0.6.7 (BETA) ****
if(MODO_LOG);FPUTS(version_gmx,file_log);end
repeat
FGETS(tmp,file);//using module id: 00 - <>
if(MODO_LOG);FPUTS(tmp,file_log);end
if(strlft(tmp,17)=='using module id: ');strdel(tmp,22,0);
modulos[usa_modulos].mod_dll=tmp;usa_modulos++;
if(tmp=="GMX_mod_sound");mod_sonido=1;end
if(tmp=="GMXEXT_mod_sound");mod_sonido=2;end
end
if(STRSTR(tmp,' ERROR ')=>0 OR STRSTR(tmp,' Error ')=>0);Error=true;break;end
until(tmp=='Compilación finalizada.');
fclose(file);
if(Error);WINDOW_SET_TITLE("ERROR"+version_gmx);exit(tmp,0);end
if(MODO_LOG);FPUTS(argv[1]+"\"+win32_libb,file_log);end
mkdir(argv[1]+"\"+win32_libb);
CHDIR(win32_libb);
repeat
if(MODO_LOG);FPUTS(ITOA(X)+"]-->FILEINFO>"+modulos[x].mod_dll+".dll",file_log);end
IF(NOT GET_FILEINFO(modulos[x].mod_dll+".dll"));
WINDOW_SET_TITLE("ERROR"+version_gmx);EXIT('ERROR: NO EXISTE EL MODULO DE GEMIX:'+CHR(10)+win32_libb+'\'+modulos[x].mod_dll+".dll",0);
END
file_orig=fileinfo.hour+fileinfo.sec+fileinfo.day+fileinfo.month+fileinfo.year;
if(MODO_LOG);FPUTS("FECHA-VAL:"+ITOA(file_orig),file_log);end
tmp=argv[1]+"\"+win32_libb+"\"+modulos[x].mod_dll;
z=true;
if(MODO_LOG);FPUTS(tmp+".dll",file_log);end
if(not file_exists(tmp+".dll"));z=false;end
if(z);
GET_FILEINFO(tmp+".dll");
Y=fileinfo.hour+fileinfo.sec+fileinfo.day+fileinfo.month+fileinfo.year;
if(MODO_LOG);FPUTS("FECHA-VAL:"+ITOA(Y),file_log);end
if(file_orig<>Y);z=false;end
end
if(not z);
if(MODO_LOG);FPUTS('COPY /Y '+modulos[X].mod_dll+'.dll "'+tmp+'.dll"',file_log);end
SYSTEM('COPY /Y '+modulos[X].mod_dll+'.dll "'+tmp+'.dll"');
end
x++;
until(x==usa_modulos);
if(mod_sonido>0);CHDIR("..");
if(mod_sonido==1);modulos.mod_dll=fmodex_libb;else;modulos.mod_dll=OpenAL_libb;end
if(MODO_LOG);FPUTS(itoa(X)+"]-->FILEINFO>"+modulos.mod_dll+".dll",file_log);end
IF(NOT GET_FILEINFO(modulos.mod_dll+".dll"));
WINDOW_SET_TITLE("ERROR"+version_gmx);EXIT('ERROR: NO EXISTE EL MODULO DE GEMIX:'+CHR(10)+modulos.mod_dll+".dll",0);
END
file_orig=fileinfo.hour+fileinfo.sec+fileinfo.day+fileinfo.month+fileinfo.year;
if(MODO_LOG);FPUTS("FECHA-VAL:"+ITOA(file_orig),file_log);end
tmp=argv[1]+"\"+modulos.mod_dll;
z=true;
if(MODO_LOG);FPUTS(tmp+".dll",file_log);end
if(not file_exists(tmp+".dll"));z=false;end
if(z);
GET_FILEINFO(tmp+".dll");
Y=fileinfo.hour+fileinfo.sec+fileinfo.day+fileinfo.month+fileinfo.year;
if(MODO_LOG);FPUTS("FECHA-VAL:"+ITOA(Y),file_log);end
if(file_orig<>Y);z=false;end
end
if(not z);
if(MODO_LOG);FPUTS('COPY /Y '+modulos.mod_dll+'.dll "'+tmp+'.dll"',file_log);end
SYSTEM('COPY /Y '+modulos.mod_dll+'.dll "'+tmp+'.dll"');
end
end
if(MODO_LOG);FPUTS(argv[1],file_log);end
CHDIR(argv[1]);
if(MODO_LOG);FPUTS(argv[2]+'.log',file_log);end
REMOVE(argv[2]+'.log');//BORRA EL LOG
if(MODO_LOG);FPUTS(argv[2]+'.exe',file_log);fclose(file_log);end
EXEC(1,argv[2]+'.exe',"");
END