📄 cbmain.cpp
字号:
OutputString( timeEnd-timeBegin,"\n" );
timeBegin = timeEnd;
#endif
//---------------
// load other maps
if( !::DRAW_LoadMaps() )
{
OutputDebugString( "DRAW_LoadMaps: Load battlefield bitmaps failure!\n" );
return PROGRAM_STATE_ERROR;
}
DD_FadeOutScreen( 5, 10 );
// 游戏开始
GAME_Network_Begin();
#ifdef _DEBUG
timeEnd = timeGetTime();
OutputString( timeEnd-timeBegin,"\n" );
timeBegin = timeEnd;
#endif
DRAW_UpdateScreen( FALSE );
FACE_SetCommandState(COMMAND_STATE_PLAY);
#ifdef _DEBUG
timeEnd = timeGetTime();
OutputString( timeEnd-timeBegin,"\n" );
timeBegin = timeEnd;
#endif
}
break;
}
return OldProgramState;
}
/*
* updateFrame
*
* Decide what needs to be blitted next, wait for flip to complete,
* then flip the buffers.
*/
//BOOL bFirst=TRUE;
void updateFrame( void )
{
int j;
if(GAME_bNetwork!=0)
{
DH_NetworkReceive();
/* char test32[255];
wsprintf((char *)test32,"================================%d================================\n",CB_Counter);
WriteLogFile("Test_task.log",(char *)test32);
for(i=0;i<GAME_PLAYER_MAX;i++)
{
for(j=0;j<CTRL_TASK_LIST_MAX+CTRL_TASK_LIST_MAX;j++)
{
if(CTRL_TaskList[i][j].nTaskID==0)
{continue;}
// char test32[255];
wsprintf((char *)test32,"%ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld\n",CTRL_TaskList[i][j].bDone,
CTRL_TaskList[i][j].nID,
CTRL_TaskList[i][j].nLevel,
CTRL_TaskList[i][j].bIRQ,
CTRL_TaskList[i][j].nTaskID,
CTRL_TaskList[i][j].nTaskIDEx,
CTRL_TaskList[i][j].nTaskIDEx2,
CTRL_TaskList[i][j].nParam1,
CTRL_TaskList[i][j].nParam2,
CTRL_TaskList[i][j].nParam3,
CTRL_TaskList[i][j].nParam4);//,(char *)pTask);
WriteLogFile("Test_task.log",(char *)test32);
}
}*/
// run
/* struct UNIT_STRUCT *p41=MAP_GetUnit(16470);
struct UNIT_STRUCT *p42=MAP_GetUnit(16469);
struct UNIT_STRUCT *p43=MAP_GetUnit(16468);
struct UNIT_STRUCT *p44=MAP_GetUnit(16467);
struct UNIT_STRUCT *p45=MAP_GetUnit(16466);
struct UNIT_STRUCT *p46=MAP_GetUnit(16465);
struct UNIT_STRUCT *p47=MAP_GetUnit(16464);
struct UNIT_STRUCT *p48=MAP_GetUnit(16463);
struct UNIT_STRUCT *p49=MAP_GetUnit(16462);
struct UNIT_STRUCT *p40=MAP_GetUnit(16460);
struct UNIT_STRUCT *p411=MAP_GetUnit(16461);
struct UNIT_STRUCT *p21=MAP_GetUnit(8224);
struct UNIT_STRUCT *p22=MAP_GetUnit(8223);
struct UNIT_STRUCT *p23=MAP_GetUnit(8222);
struct UNIT_STRUCT *p24=MAP_GetUnit(8221);
struct UNIT_STRUCT *p25=MAP_GetUnit(8220);
struct UNIT_STRUCT *p26=MAP_GetUnit(8219);
struct UNIT_STRUCT *p27=MAP_GetUnit(8218);
struct UNIT_STRUCT *p28=MAP_GetUnit(8217);
struct UNIT_STRUCT *p29=MAP_GetUnit(8216);
struct UNIT_STRUCT *p20=MAP_GetUnit(8214);
struct UNIT_STRUCT *p211=MAP_GetUnit(8215);
wsprintf((char *)test32,"================================%d================================\n",CB_Counter);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16470's X=%d,Y=%d\n",p41->Draw.nX,p41->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16469's X=%d,Y=%d\n",p42->Draw.nX,p42->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16468's X=%d,Y=%d\n",p43->Draw.nX,p43->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16467's X=%d,Y=%d\n",p44->Draw.nX,p44->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16466's X=%d,Y=%d\n",p45->Draw.nX,p45->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16465's X=%d,Y=%d\n",p46->Draw.nX,p46->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16464's X=%d,Y=%d\n",p47->Draw.nX,p47->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16463's X=%d,Y=%d\n",p48->Draw.nX,p48->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16462's X=%d,Y=%d\n",p49->Draw.nX,p49->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16460's X=%d,Y=%d\n",p40->Draw.nX,p40->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"16461's X=%d,Y=%d\n",p411->Draw.nX,p411->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8224's X=%d,Y=%d\n",p21->Draw.nX,p21->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8223's X=%d,Y=%d\n",p22->Draw.nX,p22->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8222's X=%d,Y=%d\n",p23->Draw.nX,p23->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8221's X=%d,Y=%d\n",p24->Draw.nX,p24->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8220's X=%d,Y=%d\n",p25->Draw.nX,p25->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8219's X=%d,Y=%d\n",p26->Draw.nX,p26->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8218's X=%d,Y=%d\n",p27->Draw.nX,p27->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8217's X=%d,Y=%d\n",p28->Draw.nX,p28->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8216's X=%d,Y=%d\n",p29->Draw.nX,p29->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8214's X=%d,Y=%d\n",p20->Draw.nX,p20->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
wsprintf((char *)test32,"8215's X=%d,Y=%d\n",p211->Draw.nX,p211->Draw.nY);
WriteLogFile("Test_x_y.log",(char *)test32);
*/
}
::RUN_RunUnits();
memset(DH_ComputerTaskNum,0,sizeof(DH_ComputerTaskNum));
for(j=0;j<CTRL_TASK_LIST_MAX+CTRL_TASK_LIST_MAX;j++)
{
if(CTRL_TaskList[GAME.nMe][j].nTaskID==0)
{continue;}
else{DH_ComputerTaskNum[j]=-1;}
}
CB_Counter++;
// draw sprites
::DRAW_DrawMaps();
// display frame rate
DDC_DisplayFrameRate();
} /* updateFrame */
// replay stoped music, CBDATA.cpp
void DATA_WAVE_Replay();
BOOL MAIN_bNotify = FALSE;
BOOL MAIN_bReplay = FALSE;
BOOL MAIN_bEnding = FALSE;
// declared in file DDAPI.h
long FAR PASCAL DD_WindowProc( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam )
{
#ifdef _DEBUG
if( bInRun == TRUE )
OutputDebugString( "WindowProc Error: Do with messages when running !\n" );
#endif
//---- for cheat code
static int CHEAT_bEnable = FALSE;
static DWORD CHEAT_nCompare = 0;
static char CHEAT_str[]="eternal";
//---- for cheat code
switch( message )
{
case WM_ACTIVATEAPP:
bActive = wParam;
if( bActive == FALSE )
{
// 豪华版,Nov.7.1997
if( MUSIC_bEnable == TRUE )
{
DATA_WAVE_MusicStop();
}
if( EFFECT_bEnable == TRUE )
{
DS_QuitSound();
}
MAIN_bReplay = TRUE;
if( FACE_GetProgramState() == PROGRAM_STATE_AVI )
{
PostMessage( hWnd, MM_MCINOTIFY, 0, nCurrentVideoID );
}
else if( FACE_GetProgramState() == PROGRAM_STATE_NONE
&& MAIN_bEnding == TRUE )
{ // 如果在播放片尾的时候失去焦点状态,则游戏结束
// game ending
GAME_EndingEx( -3 );
MAIN_bEnding = FALSE;
DD_QuitGraph();
PostQuitMessage( 0 );
}
}
else if( bActive == TRUE )
{
if( MAIN_bReplay == TRUE )
{
if( EFFECT_bEnable == TRUE )
{
DS_InitSound( hwndGame );
}
if( MUSIC_bEnable == TRUE )
{
DATA_WAVE_MusicReplay();
}
MAIN_bReplay = FALSE;
}
if( MAIN_bNotify == TRUE )
{
SetCursor( NULL );
if( FACE_GetProgramState() == PROGRAM_STATE_AVI )
{
FACE_Avi_Close2();
}
MAIN_bNotify = FALSE;
}
if( MAIN_bInitGraph == TRUE )
FACE_SurfaceLost();
}
break;
case WM_SETCURSOR:
SetCursor(NULL);
//LoadCursor(IDC_ARROW);
return TRUE;
case WM_CREATE:
break;
case WM_ACTIVATE:
// 两个只需要一个就可以了
/*
if( LOWORD(wParam) == WA_INACTIVE
&& FACE_GetProgramState() == PROGRAM_STATE_AVI )
{
PostMessage( hWnd, MM_MCINOTIFY, 0, 0 );
}
*/
break;
case WM_NCACTIVATE:
// 两个只需要一个就可以了
/*
if( wParam == FALSE
&& FACE_GetProgramState() == PROGRAM_STATE_AVI )
{
PostMessage( hWnd, MM_MCINOTIFY, 0, 0 );
}
*/
break;
// 用于事件的显示
// Nov.21.1997
case WM_SHOW_EVENT:
FACE_ShowEvent( wParam );
break;
case WM_DD_SURFACELOST:
//WriteLogFile("lhj.log", "\n Have receive the message WM_DD_SURFACELOST") ;
{
// move ime window (RU_LI) outside main window rectangle
HIMC himc = ImmGetContext( hwndGame );
POINT pt={800,600};
ImmSetStatusWindowPos( himc, &pt );
}
if( FACE_GetProgramState() == PROGRAM_STATE_PLAY )
{
DRAW_UpdateScreen( FALSE );
DDC_UpdateScreen();
}
else
{
FACE_SurfaceLost();
//WriteLogFile("lhj.log", "\n Have exit the function FACE_SurfaceLost()") ;
}
break;
case WM_CHAR:
if( FACE_GetProgramState() == PROGRAM_STATE_NONE )
{
break;
}
if( (CHEAT_bEnable == TRUE) &&
(FACE_GetCommandState() == COMMAND_STATE_PLAY)
)
{
if( wParam == 46 || wParam == 93 ) //"." "]"
{ // 下一关,第一个分支
RUN_DEBUG_bEndGame = 1;
break;
}
else if( wParam == 61 ) //"="
{ // 下一关,第二个分支
RUN_DEBUG_bEndGame = 2;
break;
}
else if( wParam == 44 || wParam == 45 || wParam == 91 ) //"," "-" "["
{ // 上一关
RUN_EndGame( -2 );
break;
}
}
// 寻找敌人的剩余部队
if ( FACE_GetCommandState() == COMMAND_STATE_PLAY
&& (wParam == 112 || wParam == 80) )//"p" "P"
{
// 以该部队为中心移动屏幕
POINT px={-1,-1};
for( int x = 0; x<GAME_PLAYER_MAX; x ++ )
{
if( !EYE_PlayerIsAllied( x, GAME.nMe ) )
{
px=DisplayEnemy( x );
if( px.x != -1 )
break;
}
//px=DisplayEnemy(GAME.nMe);
}
DRAW_JumpScreen(px);
}
// to hadle the hot-key and set it down
if( FACE_GetCommandState() == COMMAND_STATE_PLAY )
{
FACE_HotKeyDown((int)wParam, lParam) ;
FACE_NumKey( (int)wParam, lParam ) ;
}
FACE_IsInputString( hWnd, message, wParam, lParam);
//--- for cheat code
if( (char)wParam == CHEAT_str[CHEAT_nCompare] )
{
CHEAT_nCompare++;
if( CHEAT_nCompare == 5 )
{
CHEAT_bEnable = 1-CHEAT_bEnable;
}
}
else CHEAT_nCompare = 0;
//--- for cheat code
break;
case WM_SYSCHAR:
{
char key = (char)wParam ;
char HExt = (char)HIWORD(lParam) ;
char LExt = (char)LOWORD(lParam) ;
}
break;
case WM_KEYUP:
if( FACE_GetProgramState() != PROGRAM_STATE_NONE )
{
// to hadle the hot-key and post message to Liu Gang
FACE_HotKeyUp((int)wParam, lParam) ;
}
break;
case WM_TIMER:
PostMessage( hWnd, MM_MCINOTIFY, 0, nCurrentVideoID );
break;
case MM_MCINOTIFY:
// changed a lot, to fix a bug
// If the current program is not in active, and AVI file meet the end,
// we could not just close AVI file and load other DirectDraw objects,
// we must only close AVI first, and, after activate the current window,
// then load other DirectDraw objects.
if( lParam == MUSIC_hCDHandle && wParam == 1 )
{// 只认为是在播放CD Audio,而且播放一遍结束
DATA_WAVE_MusicReplay();
}
else if( nCurrentVideoID != -1
&& lParam == nCurrentVideoID )
{
if( bActive == TRUE )
{
if( FACE_GetProgramState() == PROGRAM_STATE_AVI )
{
FACE_Avi_Close();
}
else if( FACE_GetProgramState() == PROGRAM_STATE_NONE
&& MAIN_bEnding == TRUE )
{ // game ending
if( GAME_EndingEx() == 2 )
{
MAIN_bEnding = FALSE;
DATA_WAVE_MusicStop();
DS_QuitSound();
DD_QuitGraph();
PostQuitMessage( 0 );
}
MAIN_bFirst = TRUE;
}
}
else if( MAIN_bNotify == FALSE )
{
FACE_Avi_Close1();
MAIN_bNotify = TRUE;
}
}
break;
case WM_KEYDOWN:
if( FACE_GetProgramState() == PROGRAM_STATE_AVI )
{
if( FACE_Avi_Close() == TRUE )
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -