📄 cbfile.cpp
字号:
//&nsss,
//&DATA_Lib.Unit[i].wCreateFood,
&DATA_Lib.Unit[i].nCreateGold,
&DATA_Lib.Unit[i].nCreateWood,
&DATA_Lib.Unit[i].nCreateSpeed,
&DATA_Lib.Unit[i].nAddExp, // 被毁后对方经验值增加
&DATA_Lib.Unit[i].nAddMorale // 被毁后对方士气增加,自己士气减少
));
for( int j=0; j<(int)strlen(DATA_Lib.Unit[i].strName); j++ )
{
if( DATA_Lib.Unit[i].strName[j] == '$' )
DATA_Lib.Unit[i].strName[j] = ' ';
}
/*
fscanf( fp, "%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,
//&DATA_Lib.Unit[i].wCreateFood,
&DATA_Lib.Unit[i].nCreateGold,
&DATA_Lib.Unit[i].nCreateWood,
&DATA_Lib.Unit[i].nCreateSpeed,
&DATA_Lib.Unit[i].nAddExp, // 被毁后对方经验值增加
&DATA_Lib.Unit[i].nAddMorale // 被毁后对方士气增加,自己士气减少
);
*/
}
// read soldier data
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum2 ));
//fscanf( fp, "%d\n", &nNum2 );
for( i=nNum; i< nNum+nNum2; i++ )
{
FSCAN.l_scan (sscanf (FSCAN.expand_buf,
"%d %s %d %d %d %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].nNearAttack,
&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].nMoveSpeed,
&DATA_Lib.Unit[i].nFightSpeed,
&DATA_Lib.Unit[i].nCreateIron,
&DATA_Lib.Unit[i].nCreateFood,
&DATA_Lib.Unit[i].nCreateWood,
&DATA_Lib.Unit[i].nCreateGold,
&DATA_Lib.Unit[i].nCreateSpeed,
&DATA_Lib.Unit[i].nAddExp, // 被毁后对方经验值增加
&DATA_Lib.Unit[i].nAddMorale // 被毁后对方士气增加,自己士气减少
));
for( int j=0; j<(int)strlen(DATA_Lib.Unit[i].strName); j++ )
{
if( DATA_Lib.Unit[i].strName[j] == '$' )
DATA_Lib.Unit[i].strName[j] = ' ';
}
/*
fscanf( fp, "%d %s %d %d %d %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].nNearAttack,
&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].nMoveSpeed,
&DATA_Lib.Unit[i].nFightSpeed,
&DATA_Lib.Unit[i].nCreateIron,
&DATA_Lib.Unit[i].nCreateFood,
&DATA_Lib.Unit[i].nCreateWood,
&DATA_Lib.Unit[i].nCreateGold,
&DATA_Lib.Unit[i].nCreateSpeed,
&DATA_Lib.Unit[i].nAddExp, // 被毁后对方经验值增加
&DATA_Lib.Unit[i].nAddMorale // 被毁后对方士气增加,自己士气减少
);
*/
}
// read upgrade 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,
"%d %d %d %d %d %d %d %d\n",
&DATA_Lib.Upgrade[i].nGold,
&DATA_Lib.Upgrade[i].nWood,
&DATA_Lib.Upgrade[i].nIron,
&DATA_Lib.Upgrade[i].nFood,
&DATA_Lib.Upgrade[i].dwParam1,
&DATA_Lib.Upgrade[i].dwParam2,
&DATA_Lib.Upgrade[i].dwParam3,
&DATA_Lib.Upgrade[i].dwParam4
));
/*
fscanf( fp, "%d %d %d %d %d %d %d %d\n",
&DATA_Lib.Upgrade[i].nGold,
&DATA_Lib.Upgrade[i].nWood,
&DATA_Lib.Upgrade[i].nIron,
&DATA_Lib.Upgrade[i].nFood,
&DATA_Lib.Upgrade[i].dwParam1,
&DATA_Lib.Upgrade[i].dwParam2,
&DATA_Lib.Upgrade[i].dwParam3,
&DATA_Lib.Upgrade[i].dwParam4
);
*/
}
// read general data
int nGenFile[4]={35,31,33,29};
nNum = 1, nNum2 = 0;
for( int j=0; j<4; j++ )
{
nNum += nNum2;
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&nNum2 ));
//fscanf( fp, "%d\n", &nNum2 );
for( i=nNum; i< nNum+nNum2; i++ )
{
FSCAN.l_scan (sscanf (FSCAN.expand_buf,
"%s %d %d %d %d %d\n",
DATA_Lib.Gen[i].strName,
&DATA_Lib.Gen[i].nWuLi,
&DATA_Lib.Gen[i].nZhiLi,
&DATA_Lib.Gen[i].nType,
&DATA_Lib.Gen[i].nLevel,
&DATA_Lib.Gen[i].dwLife
));
for( int k=0; k<(int)strlen(DATA_Lib.Gen[i].strName); k++ )
{
if( DATA_Lib.Gen[i].strName[k] == '$' )
DATA_Lib.Gen[i].strName[k] = ' ';
}
/*
fscanf( fp, "%s %d %d %d %d %d\n",
DATA_Lib.Gen[i].strName,
&DATA_Lib.Gen[i].nWuLi,
&DATA_Lib.Gen[i].nZhiLi,
&DATA_Lib.Gen[i].nType,
&DATA_Lib.Gen[i].nLevel,
&DATA_Lib.Gen[i].dwLife
);
*/
DATA_Lib.Gen[i].nLevel--;
DATA_Lib.Gen[i].dwLife = DATA_Lib.Unit[nGenFile[DATA_Lib.Gen[i].nType-1]].dwLife;
DATA_Lib.Gen[i].nID = i;
DATA_Lib.Gen[i].nJunZhu = j+1;
}
}
FSCAN.scan_close ();
// fclose( fp );
return TRUE;
}// end of DATA_ReadDATAFile()
// 在这里,为了使游戏运行速度加快一些,需要把音效部分的WAV文件拷贝到
// 硬盘上,而只有当硬盘上没有音效文件时才从光盘读取(保持其兼容性)。
// 该函数内部做了相应修改,但外部接口没有变。
BOOL DATA_ReadWAVEFile( HWND hwnd, LPCTSTR filename, LPCTSTR path, LPCTSTR pathWAVE )
{
char fname[_MAX_FNAME];
if( path != 0 )
{
strcpy( fname, path );
strcat( fname, filename );
}
else strcpy( fname, filename );
strcpy( DATA_WAVE_Lib.strWAVFile, fname ); // 保存文件名
char strPath[_MAX_PATH];
strcpy( strPath, GAME_strSetupDirectory );
CScan_read FSCAN;
FSCAN.scan_open (fname);
/*
FILE * fp = fopen( fname, "rb" );//wave.dat
if( !fp )
{
ErrorMessage( hwnd, MAP_ERROR_ID+11, "Cannot open Wave file: ", fname );
return FALSE;
}
*/
int nNum;
char strFile[_MAX_FNAME], strFile1[33];
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,"%s\n", strFile1 ));
//fscanf( fp, "%s\n", strFile1 );
//strcpy( strFile, pathWAVE );
strcpy( strFile, strPath );
strcat( strFile, "\\" );
strcat( strFile, pathWAVE );
strcat( strFile, strFile1 );
strcpy( DATA_WAVE_Lib.Music[i].strName, strFile );
}
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\n", strFile1 ));
//fscanf( fp, "%s\n", strFile1 );
//strcpy( strFile, pathWAVE );
/*
strcpy( strFile, strPath );
strcat( strFile, "\\" );
strcat( strFile, pathWAVE );
strcat( strFile, strFile1 );
*/
strcpy( strFile, strFile1 );
strcpy( DATA_WAVE_Lib.Effect[i].strName, strFile );
}
FSCAN.scan_close ();
//fclose( fp );
return TRUE;
}
/*
BOOL DATA_ReloadWAVEFile( HWND hwnd )
{
char fname[_MAX_NAME];
strcpy( fname, DATA_WAVE_Lib.strWAVFile ); // 保存文件名
FILE * fp = fopen( fname, "rb" );
if( !fp )
{
ErrorMessage( hwnd, MAP_ERROR_ID+11, "Cannot open Wave file: ", fname );
return FALSE;
}
int nNum;
fscanf( fp, "%d\n", &nNum );
char strFile[33], strFile1[33];
for( int i=0; i<nNum; i++ )
{
fscanf( fp, "%s\n", strFile1 );
strcpy( strFile, pathWAVE );
strcat( strFile, strFile1 );
strcpy( DATA_WAVE_Lib.Effect[i].strName, strFile );
}
fclose( fp );
return TRUE;
}
*/
///////////
///////////
BOOL MAP_ReadOtherFile( HWND hwnd, LPCTSTR filename, LPCTSTR pathDAT, LPCTSTR pathBMP )
{
CScan_read FSCAN;
char fname[_MAX_FNAME];
if( pathDAT != 0 )
{
strcpy( fname, pathDAT );
strcat( fname, filename );
}
else strcpy( fname, filename );
FSCAN.scan_open (fname);//lwc other.dat
/*FILE * fp = fopen( fname, "rb" );
if( !fp )
{
ErrorMessage( hwnd, MAP_ERROR_ID+11, "Cannot open Others file: ", fname );
return FALSE;
}
*/
// initialize
memset( MAP_Lib.Other, 0, sizeof( MAP_Lib.Other ) );
char strFile[65];//, strFile1[33];
// 读取压缩的单元图素文件LWC
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%s\n", strFile ));
//fscanf( fp, "%s\n", strFile );
strcpy( MAP_Lib.strBMP, GAME.strPathBMP );
strcat( MAP_Lib.strBMP, strFile );
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &MAP_Lib.nOtherNum ));
//fscanf( fp, "%d\n", &MAP_Lib.nOtherNum ); // 读取其它图素文件个数
for( int i=0; i<MAP_Lib.nOtherNum; i++ )
{
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,%d,%d\n",
&MAP_Lib.Other[i].nMaxFrame,
&MAP_Lib.Other[i].szItem.cx, &MAP_Lib.Other[i].szItem.cy,
&MAP_Lib.Other[i].nID ) );
/*
fscanf( fp, "%d,%d,%d,%s\n", &MAP_Lib.Other[i].nMaxFrame,
&MAP_Lib.Other[i].szItem.cx, &MAP_Lib.Other[i].szItem.cy,
strFile1 );
strcpy( strFile, pathBMP );
strcat( strFile, strFile1 );
strcat( strFile, ".BMP" );
strcpy( MAP_Lib.Other[i].strFile, strFile );*/
}
FSCAN.scan_close ();
//fclose( fp );
return TRUE;
}// end of MAP_ReadOtherFile()
// load all the mouse cursors in system
// used in CBMain.cpp
#include "DDCompo.h"
extern class CDDCursor MAIN_Cursors[4]; // declared in CBMain.cpp
extern CDDPalette pal, palMain; // defined in CBMain.cpp
BOOL MAIN_LoadCursors( HWND hwnd, LPCTSTR filename , LPCTSTR path )
{
char fname[_MAX_FNAME];
short picture_number;
CScan_read FSCAN;
if( path != 0 )
{
strcpy( fname, path );
strcat( fname, filename );
}
else strcpy( fname, filename );
FSCAN.scan_open (fname);//mouse.dat
/*
FILE * fp = fopen( fname, "rt" );//mouse.dat
if( !fp )
{
ErrorMessage( hwnd, MAP_ERROR_ID+12, "Cannot open cursor map file: ", fname );
return FALSE;
}
*/
// read cursor one
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&picture_number));
//fscanf( fp, "%s\n", fname );
int nRow[10] ={4,4,4,4,4,4,4,4,4,4}; // 每个状态的帧数
POINT ptHot[10]={{1,3},{26,17},{26,17},{26,17},{24,19},{24,19},{26,17},{26,17},{1,3},{26,17}};// 热点
// int nRow[1] ={4}; // 每个状态的帧数
// POINT ptHot[1]={1,3};//,{26,17},{26,17},{24,19},{24,19},{26,17},{26,17}};// 热点
if( !MAIN_Cursors[0].LoadEx( "res\\mouse.lwc","res\\mouse.idx", picture_number, 10, nRow, ptHot ) )
{
ErrorMessage( hwndGame, MAP_ERROR_ID+20, " Cannot load Cursor file", "mouse" );
return FALSE;
}
// MAIN_Cursors[0].SetSpeed( 3 );
// MAIN_Cursors[0].SetState( 0 );
// read cursor two
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&picture_number));
//fscanf( fp, "%s\n", fname );
int nRow1[8]={1,1,1,1,1,1,1,1};
POINT ptHot1[8]={{0,0},{10,0},{23,0},{23,10},{23,23},{13,23},{0,23},{0,13}};
if( !MAIN_Cursors[1].LoadEx( "res\\mouse.lwc","res\\mouse.idx", picture_number,8, nRow1, ptHot1 ) )
{
ErrorMessage( hwndGame, MAP_ERROR_ID+21, " Cannot load Cursor file", "mouse" );
return FALSE;
}
// read cursor three
FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&picture_number));
//fscanf( fp, "%s\n", fname );
int nRow2[1]={4};
POINT ptHot2[1]={{1,3}};
pal.SetPalette();
if( !MAIN_Cursors[2].LoadEx( "res\\mouse.lwc","res\\mouse.idx", picture_number, 1, nRow2, ptHot2 ) )
{
ErrorMessage( hwndGame, MAP_ERROR_ID+22, " Cannot load Cursor file", fname );
return FALSE;
}
palMain.SetPalette();
FSCAN.scan_close ();
//fclose( fp );
return TRUE;
}
///////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -