📄 cbfile.cpp
字号:
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 + -