150 lines
3.2 KiB
C++
150 lines
3.2 KiB
C++
/*************************/
|
|
/*** Dave Lib Routines ***/
|
|
/*************************/
|
|
|
|
#include <ginio.h>
|
|
#include <gintex.h>
|
|
#include "stdio.h"
|
|
#include <math.h>
|
|
#include <repread.h>
|
|
#include <misc.hpp>
|
|
#include <conio.h>
|
|
#include <iostream.h>
|
|
#include <vector>
|
|
#include <gfname.hpp>
|
|
#include "psxtypes.h"
|
|
#include "FaceStore.h"
|
|
#include <io.h>
|
|
|
|
#include "..\..\..\tools\data\include\dStructs.h"
|
|
|
|
#include "DaveLib.h"
|
|
|
|
GString OutStr,IncludeFile;
|
|
bool DebugOn= false;
|
|
float Scale=1.0;
|
|
int StripLength=3;
|
|
|
|
FileCycle MyFiles;
|
|
|
|
//***************************************************************************
|
|
void DebugStr() {if (DebugOn) std::cout<<endl;}
|
|
void DebugStr(char *Txt) {if (DebugOn) std::cout<<Txt<<endl;}
|
|
void DebugStr(char *Txt,int Param) {if (DebugOn) std::cout<<Txt<<" "<<Param<<endl;}
|
|
void DebugStr2(char *Txt,int Param) {if (DebugOn) std::cout<<Txt<<" "<<Param<<" ";}
|
|
|
|
//***************************************************************************
|
|
int round(float f)
|
|
{
|
|
if (f<0)
|
|
{
|
|
return (int)(f-0.5f);
|
|
}
|
|
else
|
|
{
|
|
return (int)(f+0.5f);
|
|
}
|
|
}
|
|
|
|
//***************************************************************************
|
|
void alignFile( FILE *f, int align )
|
|
{
|
|
long fp = ftell(f);
|
|
if (fp&(align-1))
|
|
{
|
|
char buffer[] = "*********************************";
|
|
int s = align - (fp & (align-1));
|
|
fwrite(buffer, s, 1, f);
|
|
}
|
|
}
|
|
|
|
//***************************************************************************
|
|
GString CheckFileString(const char * Str)
|
|
{
|
|
GString RetStr;
|
|
|
|
if (strlen(Str)>3 && (Str[0]=='-' || Str[0]=='/') && (Str[2]==':' || Str[2]==':'))
|
|
RetStr=&Str[3];
|
|
else
|
|
GObject::Error(ERR_FATAL,"Problem with cmd line option %s",Str);
|
|
|
|
return(RetStr);
|
|
}
|
|
|
|
//***************************************************************************
|
|
bool CheckPlusMinus(const char * Str)
|
|
{
|
|
if (strlen(Str)==3 && (Str[0]=='-' || Str[0]=='/') && (Str[2]=='-' || Str[2]=='+'))
|
|
{
|
|
}
|
|
else
|
|
GObject::Error(ERR_FATAL,"Problem with cmd line option %s",Str);
|
|
|
|
return(Str[2]=='+');
|
|
}
|
|
|
|
//***************************************************************************
|
|
int ZeroAndCountCommas(char * Str)
|
|
{
|
|
int Len=strlen(Str);
|
|
int NumOfCommas=0;
|
|
|
|
for (int f=0;f<Len;f++)
|
|
{
|
|
if (Str[f]==',')
|
|
{
|
|
NumOfCommas++;
|
|
Str[f]=0;
|
|
}
|
|
}
|
|
|
|
return(NumOfCommas);
|
|
}
|
|
|
|
//***************************************************************************
|
|
char *FindFile(const char *Name)
|
|
{
|
|
int Handle;
|
|
GFName DirName(Name);
|
|
GString Filename,Path;
|
|
_finddata_t FindBlock;
|
|
int Status;
|
|
|
|
// Does this file exist
|
|
FILE *File=fopen(Name,"rb");
|
|
if (File)
|
|
{
|
|
fclose(File);
|
|
return((char*)Name);
|
|
}
|
|
|
|
// Recurse dirs to find file
|
|
Filename=DirName.File();
|
|
Filename+=".";
|
|
Filename+=DirName.Ext();
|
|
DirName.File("*");
|
|
DirName.Ext("*");
|
|
Path=DirName.FullName();
|
|
|
|
Name=0;
|
|
Status=Handle= _findfirst(Path,&FindBlock);
|
|
|
|
while (Status!=-1 && !Name)
|
|
{
|
|
if (FindBlock.attrib&_A_SUBDIR)
|
|
{
|
|
if (strcmp(FindBlock.name,".") && strcmp(FindBlock.name,".."))
|
|
{
|
|
GString NewName;
|
|
NewName=DirName.Drive();
|
|
NewName+=DirName.Dir();
|
|
NewName+=FindBlock.name;
|
|
NewName+="/";
|
|
NewName+=Filename;
|
|
Name=FindFile(NewName);
|
|
}
|
|
}
|
|
if (!Name) Status=_findnext(Handle,&FindBlock);
|
|
}
|
|
return((char*)Name);
|
|
}
|