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

📄 cbfile.cpp

📁 赤壁之战(游戏原码)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+9, "Cannot open animation sequency data file: ", fname );
		return FALSE;
	}
		*/
	// initialize
	memset( MAP_Lib.AniSeq, 0, sizeof( struct MAP_ANISEQ_STRUCT )*MAP_UNIT_LIB_NUM );

	int nNum, nFile, nState;
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nNum ));
	//fscanf( fp, "%d,", &nNum );
	for( int x = 0; x< nNum; x++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nFile  ));
		//fscanf( fp, "%d,", &nFile );
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &MAP_Lib.AniSeq[nFile].nMaxState ));
		//fscanf( fp, "%d,", &MAP_Lib.AniSeq[nFile].nMaxState );
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &MAP_Lib.AniSeq[nFile].nOffset ));
		//fscanf( fp, "%d\n", &MAP_Lib.AniSeq[nFile].nOffset );

		for( int i=0; i< MAP_Lib.AniSeq[nFile].nMaxState; i++ )
		{
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nState ));
			//fscanf( fp, "%d,", &nState );
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &MAP_Lib.AniSeq[nFile].nMaxSequence[nState] ));
			//fscanf( fp, "%d\n", &MAP_Lib.AniSeq[nFile].nMaxSequence[nState] );
			for( int j=0; j< MAP_Lib.AniSeq[nFile].nMaxSequence[nState]; j++ )
			{
				FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &MAP_Lib.AniSeq[nFile].nAniSeq[nState][j] ));
				//fscanf( fp, "%d,", &MAP_Lib.AniSeq[nFile].nAniSeq[nState][j] );
			}
		}
	}
	//fclose( fp );
	FSCAN.scan_close ();
	return TRUE;
}

#else

BOOL MAP_ReadAniSeqFile( HWND hwnd, LPCTSTR filename, LPCTSTR path )
{
	char fname[_MAX_FNAME];
	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	FILE * fp = fopen( fname, "rb" );
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+4, "Cannot open animation sequency data file: ", fname );
		return FALSE;
	}

	// initialize
	memset( MAP_Lib.AniSeq, 0, sizeof( struct MAP_ANISEQ_STRUCT )*MAP_UNIT_LIB_NUM );

	int nNum, nFile, nState;
	fscanf( fp, "%d,", &nNum );
	for( int x = 0; x< nNum; x++ )
	{
		fscanf( fp, "%d,", &nFile );
		fscanf( fp, "%d\n", &MAP_Lib.AniSeq[nFile].nMaxState );

		for( int i=0; i< MAP_Lib.AniSeq[nFile].nMaxState; i++ )
		{
			fscanf( fp, "%d,", &nState );
			fscanf( fp, "%d\n", &MAP_Lib.AniSeq[nFile].nMaxSequence[nState] );
			for( int j=0; j< MAP_Lib.AniSeq[nFile].nMaxSequence[nState]; j++ )
			{
				fscanf( fp, "%d,%d,", 
					&MAP_Lib.AniSeq[nFile].ptAniSeq[nState][j].x,
					&MAP_Lib.AniSeq[nFile].ptAniSeq[nState][j].y );
			}
		}
	}
	fclose( fp );

	return TRUE;
}
#endif	// _MAP_COMPRESS_

// 读扩充的单元图素动画数据定义文件
// defined in file CBFile.cpp
// hwnd			:	错误处理时窗口句柄
// filename		:	单元图素数据文件名
// path			:	文件路径
// reutrn value	:	TRUE if succeeded
BOOL MAP_ReadAniSeqFileEx( HWND hwnd, LPCTSTR filename, LPCTSTR path )
{
	char fname[_MAX_FNAME];
	CScan_read FSCAN;

	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	/*
	FILE * fp = fopen( fname, "rb" );//ANISEQ02.DAT
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+10, "Cannot open animation sequency data extension file: ", fname );
		return FALSE;
	}
	*/
	FSCAN.scan_open (fname);//lwc
	int nNum, nFile;
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	for( int i=0; i< nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nFile ));
		//fscanf( fp, "%d,", &nFile );
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,
			"%d,%d,%d,%d,%d,%d,%d\n", 
			&MAP_Lib.AniSeq[nFile].nDeadDir,	// 死亡的方向,8为8个方向,其它为死亡时所朝向的方向
			&MAP_Lib.AniSeq[nFile].nEventBegin[0],	// 移动
			&MAP_Lib.AniSeq[nFile].nEventBegin[1],	// 死亡
			&MAP_Lib.AniSeq[nFile].nEventBegin[2],	// 攻击
			&MAP_Lib.AniSeq[nFile].nEventBegin[3],	// 
			&MAP_Lib.AniSeq[nFile].nEventBegin[4],
			&MAP_Lib.AniSeq[nFile].nEventBegin[5] ));
		/*
		fscanf( fp, "%d,%d,%d,%d,%d,%d,%d\n", 
			&MAP_Lib.AniSeq[nFile].nDeadDir,	// 死亡的方向,8为8个方向,其它为死亡时所朝向的方向
			&MAP_Lib.AniSeq[nFile].nEventBegin[0],	// 移动
			&MAP_Lib.AniSeq[nFile].nEventBegin[1],	// 死亡
			&MAP_Lib.AniSeq[nFile].nEventBegin[2],	// 攻击
			&MAP_Lib.AniSeq[nFile].nEventBegin[3],	// 
			&MAP_Lib.AniSeq[nFile].nEventBegin[4],
			&MAP_Lib.AniSeq[nFile].nEventBegin[5] );
		// 后3项
		// 对于工人,为木材,铁矿,粮食
		// 对于步将,为下令
		// 对于100人步兵,为滚木,投石
		// 对于100人弓兵,为滚木,投石
		*/

	}
//	fclose( fp );
FSCAN.scan_close ();
	return TRUE;
}
//////////////////////

#ifdef	_GAME_
//////////////////////
// 读取遮挡数据
// read cover file, declared in CBDraw.h
BOOL DRAW_ReadCoverFile( HWND hwnd, LPCTSTR filename, LPCTSTR path )
{
	char fname[_MAX_FNAME];
	CScan_read FSCAN;

	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	FSCAN.scan_open (fname);
	/*
	FILE * fp = fopen( fname, "rb" );//cover.dat
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+13, "Cannot open cover data file: ", fname );
		return FALSE;
	}
	*/
	memset( &DRAW_CoverLib, 0, sizeof(DRAW_COVER_STRUCT) );

	int i,j;
	for( i=0; i< DRAW_LOCATION_MAX*2; i++ )
	{
		// read covered
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &DRAW_CoverLib.nCoveredMax[i&1][i>>1] ));
		//fscanf( fp, "%d\n", &DRAW_CoverLib.nCoveredMax[i&1][i>>1] );
		for( j=0; j< DRAW_CoverLib.nCoveredMax[i&1][i>>1]; j++ )
		{
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,", 
				&DRAW_CoverLib.ptCovered[i&1][i>>1][j].x,
				&DRAW_CoverLib.ptCovered[i&1][i>>1][j].y ));
			/*
			fscanf( fp, "%d,%d,", 
				&DRAW_CoverLib.ptCovered[i&1][i>>1][j].x,
				&DRAW_CoverLib.ptCovered[i&1][i>>1][j].y );
			*/
		}
		// read covering
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &DRAW_CoverLib.nCoveringMax[i&1][i>>1] ));
		//fscanf( fp, "%d\n", &DRAW_CoverLib.nCoveringMax[i&1][i>>1] );
		for( j=0; j< DRAW_CoverLib.nCoveringMax[i&1][i>>1]; j++ )
		{
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,", 
				&DRAW_CoverLib.ptCovering[i&1][i>>1][j].x,
				&DRAW_CoverLib.ptCovering[i&1][i>>1][j].y ));
			/*
			fscanf( fp, "%d,%d,", 
				&DRAW_CoverLib.ptCovering[i&1][i>>1][j].x,
				&DRAW_CoverLib.ptCovering[i&1][i>>1][j].y );
			*/
		}
	}
//	fclose( fp );
	FSCAN.scan_close ();
	return TRUE;
}// end of DRAW_ReadCoverFile()

///////////
// 读取缩略图数据文件
// declared in file CBMAP.cpp
// hwnd			:	错误处理时窗口句柄
// filename		:	单元图素数据文件名
// path			:	文件路径
// reutrn value	:	TRUE if succeeded
BOOL MAP_ReadMiniFile( HWND hwnd, LPCTSTR filename, LPCTSTR path )
{
	char fname[_MAX_FNAME];
	CScan_read FSCAN;

	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	FSCAN.scan_open (fname);
/*	FILE * fp = fopen( fname, "rb" );//minimap.dat
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+5, "Cannot open minimap data file: ", fname );
		return FALSE;
	}
*/
	// initialize
	memset( &MINI_Lib, 0, sizeof( struct MAP_MINI_LIB_STRUCT ) );
	MINI_Lib.nType =-1;

	int nNum;

	// read screen rectangle of battlefield
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,%d,%d\n", 
		&MINI_Lib.rcScreen.left, 
		&MINI_Lib.rcScreen.top,
		&MINI_Lib.rcScreen.right,
		&MINI_Lib.rcScreen.bottom ));
	/*
	fscanf( fp, "%d,%d,%d,%d\n", 
		&MINI_Lib.rcScreen.left, 
		&MINI_Lib.rcScreen.top,
		&MINI_Lib.rcScreen.right,
		&MINI_Lib.rcScreen.bottom );
	*/
	// read position and size of minimap of each type
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	if( nNum > MAP_MINI_TYPE_MAX )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+6, "read minimap data file error: ", fname );
	}

	// 注意:读取的不是缩略图的右下角坐标,而是宽度和高度
	for( int i=0; i< nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,%d,%d\n", 
			&MINI_Lib.rcMap[i].left, 
			&MINI_Lib.rcMap[i].top,
			&MINI_Lib.rcMap[i].right,
			&MINI_Lib.rcMap[i].bottom ));
		/*
		fscanf( fp, "%d,%d,%d,%d\n", 
			&MINI_Lib.rcMap[i].left, 
			&MINI_Lib.rcMap[i].top,
			&MINI_Lib.rcMap[i].right,
			&MINI_Lib.rcMap[i].bottom );
		*/
		MINI_Lib.rcMap[i].right += MINI_Lib.rcMap[i].left;
		MINI_Lib.rcMap[i].bottom += MINI_Lib.rcMap[i].top;
	}

	// read color table
	FSCAN.l_scan (sscanf (FSCAN.expand_buf, "%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	if( nNum > MAP_MINI_COLOR_MAX )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+7, "read minimap data file error: ", fname );
	}
	for( i=0; i< nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &MINI_Lib.nColorTable[i] ));
		//fscanf( fp, "%d,", &MINI_Lib.nColorTable[i] );
	}

	//fclose( fp );
	FSCAN.scan_close ();
	return TRUE;
}// end of MAP_ReadMiniFile()
///////////

///////////
BOOL DATA_ReadDATAFile( HWND hwnd, LPCTSTR filename, LPCTSTR path )
{
	char fname[_MAX_FNAME];
	

	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	strcpy( DATA_Lib.strDATA, fname );
	BOOL ret = DATA_ReloadDATAFile( hwnd );
	strcpy( DATA_Lib.strDATA, fname );
	return ret;
}// end of DATA_ReadDATAFile()

BOOL DATA_ReloadDATAFile( HWND hwnd )
{
	char fname[_MAX_FNAME];
	strcpy( fname, DATA_Lib.strDATA );
	CScan_read FSCAN;
	FSCAN.scan_open (fname);
	/*
	FILE * fp = fopen( fname, "rb" );//data.dat
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+8, "Cannot open DATA file: ", fname );
		return FALSE;
	}
	*/
	// initialize
	memset( &DATA_Lib, 0, sizeof(DATA_STRUCT) );
	strcpy( DATA_Lib.strDATA, fname );

	int nNum, i, nNum2;

	// read grade data
	FSCAN.l_scan (sscanf (FSCAN.expand_buf, "%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	for( i=0; i< nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf, "%s %d %d %d\n",
							  DATA_Lib.Grade[i].strName,
							  &DATA_Lib.Grade[i].nAddWuLi,
							  &DATA_Lib.Grade[i].nAddZhiLi,
							  &DATA_Lib.Grade[i].nGrade
							  ));

		for( int j=0; j<(int)strlen(DATA_Lib.Grade[i].strName); j++ )
		{
			if( DATA_Lib.Grade[i].strName[j] == '$' )
				DATA_Lib.Grade[i].strName[j] = ' ';
		}
		/*
		fscanf( fp, "%s %d %d %d\n",
			DATA_Lib.Grade[i].strName,
			&DATA_Lib.Grade[i].nAddWuLi,
			&DATA_Lib.Grade[i].nAddZhiLi,
			&DATA_Lib.Grade[i].nGrade
			);
		*/
	}

	// read building data
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	//int nsss;
	for( i=0; i< nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,
			"%d %s %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
			&DATA_Lib.Unit[i].nID,
			DATA_Lib.Unit[i].strName,
			&DATA_Lib.Unit[i].dwLife,
			&DATA_Lib.Unit[i].nFarAttack,
			&DATA_Lib.Unit[i].nNearDefend,
			&DATA_Lib.Unit[i].nFarDefend,
			&DATA_Lib.Unit[i].nViewRange,
			&DATA_Lib.Unit[i].nFightRange,
			&DATA_Lib.Unit[i].nFightSpeed,
			&DATA_Lib.Unit[i].nCreateIron,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -