⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basefunc.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 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( &ltime );

	struct tm *pTime;
	pTime = localtime( &ltime ); /* 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(&ltime));
	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 + -