📄 basefunc.cpp
字号:
//////////////////////////////////////////////////////////////////////
// Purpose: base function for game
//
// WriteBy: blacknull 10-16-2002
//
// ModifyBy: blacknull 10-16-2002
//
// CopyRight: Acme Entertrainment, copyright 2002
//////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "basefunc.H"
#include "Mmsystem.h"
//////////////////////////////////////////////////////////////////////
int Double2Int(double dValue)
{
if((int)(dValue+0.5) >(int)dValue)
return int(dValue)+1;
else
return int(dValue);
}
//////////////////////////////////////////////////////////////////////
BOOL IniStrGet(const char *pszFileName, const char *pszTitle, const char *pszSubTitle, char *pszStr)
{
char szCurDir[_MAX_PATH];
GetCurrentDirectory(_MAX_PATH,szCurDir);
char szFullPath[_MAX_PATH];
sprintf(szFullPath,"%s\\%s",szCurDir,pszFileName);
char szError[] ="NotFound";
GetPrivateProfileString(pszTitle,pszSubTitle,szError,pszStr,_MAX_PATH,szFullPath);
if(strcmp(pszStr,szError))
return true;
else
{
char szErrorInfo[_MAX_PATH];
sprintf(szErrorInfo,"%s [%s] %s not found.",pszFileName,pszTitle,pszSubTitle);
OutputDebugString(szErrorInfo);
return false;
}
}
//////////////////////////////////////////////////////////////////////
BOOL IniDataGet(const char *pszFileName, const char *pszTitle, const char *pszSubTitle, int &iData)
{
char szCurDir[_MAX_PATH];
GetCurrentDirectory(_MAX_PATH,szCurDir);
char szFullPath[_MAX_PATH];
sprintf(szFullPath,"%s\\%s",szCurDir,pszFileName);
int iErrorCode =444444;
iData =GetPrivateProfileInt(pszTitle,pszSubTitle,iErrorCode,szFullPath);
if(iErrorCode!=iData)
return true;
else
{
char szErrorInfo[_MAX_PATH];
sprintf(szErrorInfo,"%s [%s] %s not found.",pszFileName,pszTitle,pszSubTitle);
OutputDebugString(szErrorInfo);
return false;
}
}
//////////////////////////////////////////////////////////////////////
BOOL TxtStrGet(const char *pszFileName, const char *pszTitle, char *pszStr)
{
if (!pszFileName || !pszTitle || !pszStr)
return false;
FILE* fp = fopen(pszFileName, "r");
if (!fp)
return false;
char szFormat[256] ="";
sprintf(szFormat, "%s=%s", pszTitle, "%s");
bool bSucFound =false;
while(true)
{
char szLine[256] ="";
if (EOF == fscanf(fp, "%s\n", szLine))
break;
if (sscanf(szLine, szFormat, pszStr))
{
bSucFound =true;
break;
}
}
fclose(fp);
return bSucFound;
}
//////////////////////////////////////////////////////////////////////
BOOL TxtDataGet(const char *pszFileName, const char *pszTitle, int& nData)
{
if (!pszFileName || !pszTitle)
return false;
FILE* fp = fopen(pszFileName, "r");
if (!fp)
return false;
char szFormat[256] ="";
sprintf(szFormat, "%s=%s\n", pszTitle, "%d");
bool bSucFound =false;
while(true)
{
int nReturn = fscanf(fp, szFormat, &nData);
if (EOF == nReturn)
break;
// 发现了...
if (nReturn > 0)
{
bSucFound =true;
break;
}
else
{
char szTxt[256] ="";
fscanf(fp, "%s\n", szTxt);
}
}
fclose(fp);
return bSucFound;
}
//////////////////////////////////////////////////////////////////////
DWORD TimeGet(void)
{
return timeGetTime();
}
//////////////////////////////////////////////////////////////////////
DWORD SysTimeGet(void)
{
time_t long_time;
time( &long_time ); /* Get time as long integer. */
struct tm *pTime;
pTime = localtime( &long_time ); /* Convert to local time. */
DWORD dwTime =pTime->tm_hour*100 + pTime->tm_min;
return dwTime;
}
/////////////////////////////////////////////////////////////////////////////
void LogMsg (const char* fmt, ...)
{
if (!fmt)
return;
char szFileName[] ="sys";
time_t ltime;
time( <ime );
struct tm *pTime;
pTime = localtime( <ime ); /* Convert to local time. */
char buffer[1024];
vsprintf( buffer, fmt, (char*) ((&fmt)+1) );
char szLogName[256];
sprintf(szLogName, "%s %d-%d.log", szFileName, (pTime->tm_mon+1)%12, pTime->tm_mday);
FILE* fp =fopen(szLogName, "a+");
if(!fp)
return;
fprintf(fp, "%s -- %s", buffer, ctime(<ime));
fclose(fp);
}
/////////////////////////////////////////////////////////////////////////////
void DebugMsg (const char* fmt, ...)
{
char szMsg[1024];
vsprintf( szMsg, fmt, (char*) ((&fmt)+1) );
strcat(szMsg, "\n");
::OutputDebugString(szMsg);
}
/////////////////////////////////////////////////////////////////////////////
void ErrorOut (const char* fmt, ...)
{
static BOOL bShowing =false;
if (bShowing)
return;
char szMsg[1024];
vsprintf( szMsg, fmt, (char*) ((&fmt)+1) );
bShowing =true;
::MessageBox(NULL, szMsg, "Error", MB_OK|MB_ICONERROR|MB_SYSTEMMODAL);
bShowing =false;
exit(-1);
}
//////////////////////////////////////////////////////////////////////
void ErrorMsg(const char* fmt, ...)
{
static BOOL bShowing =false;
if (bShowing)
return;
char szMsg[1024];
vsprintf( szMsg, fmt, (char*) ((&fmt)+1) );
bShowing =true;
::MessageBox(NULL, szMsg, "Error", MB_OK|MB_ICONERROR);
bShowing =false;
}
//////////////////////////////////////////////////////////////////////
int RandGet(int nMax, BOOL bRealRand)
{
if (bRealRand)
::srand( (unsigned)TimeGet() );
return ::rand()%nMax;
}
//////////////////////////////////////////////////////////////////////
BOOL StringCheck(char* pszString)
{
if (!pszString)
return false;
int nLen =strlen(pszString);
for (int i=0; i < nLen; i++)
{
unsigned char c =(unsigned char)pszString[i];
if (c >= 0x81 && c <= 0xfe)
{
if (i+1 >= nLen)
return false;
unsigned char c2 =(unsigned char)pszString[i+1];
if (c2 < 0x40 && c2 > 0x7e && c2 < 0x80 && c2 > 0xfe)
return false;
else
i++;
}
else
{
if (c==0x80)
return false;
}
}
return true;
}
void AddMsg()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -