Files
2025-08-11 11:09:09 -05:00

54 lines
1.3 KiB
C++

// Written by Brett19
#include "worldserver.h"
// -----------------------------------------------------------------------------------------
// STB reading shit
// -----------------------------------------------------------------------------------------
int STBStoreData( const char* filename, CSTBData* data )
{
char tmpfield[512];
unsigned dataoffset = 0;
unsigned short fieldlen = 0;
FILE* fh = fopen( filename, "rb" );
if ( fh == 0 )
{
Log( MSG_ERROR, "Could not load STB '%s'", filename );
return 1;
}
else
{
// Read the header
fseek( fh, 4, SEEK_SET );
fread( &dataoffset, 4, 1, fh );
fread( &data->rowcount, 4, 1, fh );
fread( &data->fieldcount, 4, 1, fh );
data->rowcount--;
data->fieldcount--;
// Read the data
fseek( fh, dataoffset, SEEK_SET );
int* tmp = new int[data->rowcount * data->fieldcount];
data->rows = new int*[data->rowcount];
for( unsigned i = 0; i < data->rowcount; i++ )
{
data->rows[i] = &tmp[i * data->fieldcount];
}
for( unsigned j = 0; j < data->rowcount * data->fieldcount; j++ )
{
fread( &fieldlen, 2, 1, fh );
fread( tmpfield, 1, fieldlen, fh );
tmpfield[fieldlen]=0;
tmp[j] = atoi( tmpfield );
}
fclose( fh );
}
return 0;
}
void STBFreeData( CSTBData* data )
{
delete [] data->rows[0];
delete [] data->rows;
}