struct Log{
unsigned long size;
unsigned char *aPacket;
unsigned long Interval;
unsigned char pRecv;
Log *pNext;
};
struct sFile{
char Path[MAX_PATH];
char szGame[16];
char szChar[16];
char szTime[20];
unsigned long GameTime;
unsigned long Size;
sFile *pNext;
};
struct LInfo{
char szName[16];
char szGame[16];
unsigned long nTick;
};
bool SaveReplay(LInfo *pInfo, Log *pLog, unsigned long Packets)
{
if(!pInfo || !pInfo->szGame || !pInfo->szName
|| !pLog || !pLog->aPacket)
return false;
SYSTEMTIME st;
GetSystemTime(&st);
char sz[MAX_PATH] = "";
char szTime[20] = "";
sprintf(szTime,"%.2d%.2d%.2d%.2d%.2d%.2d%.2d",st.wMonth,st.wDay,st.wYear,st.wHour,st.wMinute,st.wSecond,st.wMilliseconds);
sprintf(sz,"%s\\records\\%s.gpl",szPath,szTime);
FILE *fp = fopen(sz,"wb");
if(!fp)
return false;
//Write the header..
fwrite(pInfo->szName,16,1,fp);
fwrite(pInfo->szGame,16,1,fp);
sprintf(szTime,"%.2d/%.2d/%.2d %.2d:%.2d:%.2d",st.wMonth,st.wDay,st.wYear,st.wHour,st.wMinute,st.wSecond);
fwrite(szTime,20,1,fp);
unsigned long GameTime = GetTickCount() - pInfo->nTick;
fwrite(&GameTime,4,1,fp);
fwrite(&Packets,4,1,fp);
//Write the actual content.
for(Log *lg = pLog; lg; lg = lg->pNext)
{
fwrite(&lg->size,4,1,fp);
fwrite(&lg->Interval,4,1,fp);
fwrite(lg->aPacket,lg->size,1,fp);
}
fclose(fp);
TerminateLogs();
return true;
}
That's the formatting for the game files which I've used in this project. Guess it can be simplified hah