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

📄 net_face.cpp

📁 网页游戏赤壁
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	CTRL_TASK_saveCmdUnit.Busy = 0;
	CTRL_TASK_ClearAssembleSrc( TRUE );
	CTRL_TASK_ClearAssembleDest();

	// 清除信息栏
	struct	PROMPT_BLOCK	temp;
	temp.PromptBlockId = PROMPT_NONE;	
	FACE_ShowPromptBlock( temp );

	// 初始化战斗记分,Nov.6.1997
	memset( &RUN_CountDown, 0, sizeof( RUN_CountDown ) );

	// read files

// 读取战场文件
/*	if( GAME_bDebugStage == TRUE )
	{
		FILE *fp = fopen( "stage.set", "rt" );
		if( fp )
		{
			fscanf( fp, "%d", &GAME.nID );
			fclose( fp );
		}
		GAME_bDebugStage = FALSE;
	}
	else
	{
		GAME.nID = nGameID;
	}*/
	GAME.nID = 0;

	// 重新读取将领固定数据
	DATA_ReloadDATAFile( hwndGame );
/*	if( nGameID != 0 && nGameID != 17 )	// 不是第一关则不读原来的将领设置。
	{	// 更新将领的改变数据,级别和经验
		GAME_GetGenInfo( GAME_nSlot );
	}
	else
	{
		GAME_nSlot = 99;
	}*/
	GAME_nSlot = 99;

	///////////////////此上的内容不变/////////////////////
	///////////////////还要考虑关上君主AI/////////////////////
	// load Game data, must after load shadow surfaces
	if( ! GAME_ReadNetworkBTLFile( hwndGame, GAME.strNameBTL, GAME.strPathDAT ) ) 
	{
		OutputDebugString( "DRAW_LoadMaps Error(8): Read Battle data file error!\n" );
		return FALSE;
	}
	// load Game data header, must before load minimap surfaces
	if( ! ::GAME_ReadMEDHeader( hwndGame, GAME.strNameMED, GAME.strPathMED ) ) 
	{
		OutputDebugString( "DRAW_LoadMaps Error(30): Read med file error!\n" );
		return FALSE;
	}

	// Load minimap surfaces, must after read med header, before read med file
	// 缩略图要知道战场图的大小,但是在读取MED文件时,要在缩略图上显示数据
	OutputDebugString( "MiniMap Load:\n" );
	if( !MINI_Load() )
	{
		OutputDebugString( "DRAW_LoadMaps Error(6): Error when loading minimap surfaces!\n" );
		return FALSE;
	}

	// 读取网络地图
	if( ! ::GAME_ReadMEDFileNet( hwndGame, GAME.strNameMED, GAME.strPathMED ) ) 
	{
		OutputDebugString( "DRAW_LoadMaps Error(1): Read med file error!\n" );
		return FALSE;
	}
//////////////////从此以下不变/////////////////////
	// 设置屏幕左边部队按钮
	for( int i=0; i<PLAYER_GROUP_MAX-1; i++ )
	{
		if( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
			FACE_SetNumberButtonState( i, BUTTON_UP, FALSE );
		else
			FACE_SetNumberButtonState( i, BUTTON_DISABLE, FALSE );
	}
	if( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
		FACE_SetNumberButtonState( i, BUTTON_UP, TRUE );
	else
		FACE_SetNumberButtonState( i, BUTTON_DISABLE, TRUE );

	// draw shadow
//	SHADOW_DrawAll();
	// draw minimap
	MINI_DrawAll();

	// 背景音乐
	DATA_WAVE_MusicPlay( GAME.nMusicID );

	GAME_bBegin = TRUE;	// set flag
	//palMain.SetPalette();

	// get system time
	GetSystemTime( &GAME_Time.Start );

	// jump screen
	DRAW_JumpScreen( GAME.ptStart[GAME.nMe] );
	return TRUE;
}


BOOL GAME_ReadNetworkBTLFile( HWND hwnd, LPCTSTR filename, LPCTSTR path )
{
	char fname[65];
//	FILE * fp;
//	int i, j, k;
	int k;
//	int nNum, nNum2, nNum3, nNum4, nNum5, nNum6;
	CScan_read FSCAN;

	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	FSCAN.scan_open (fname);
	/*
	fp = fopen( fname, "rt" );
	if( !fp )
	{
		ErrorMessage( hwnd, GAME_ERROR_ID+2,"Cannot open Med file: ", fname );
		return FALSE;
	}
	*/
//	if( GAME.nMe == 3 )	// 曹操
//		nBattle += 17;
//	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
//	Assert( nBattle < nNum );
//	if( nBattle >= nNum )
	{
//		ErrorMessage( hwnd, GAME_ERROR_ID+4,"battle ID is out of range! ", fname );
//		return FALSE;
	}

	// 预读前面的数据,无用
/*	int nTemp;
	char	strTemp[65];
	for( i=0; i<nBattle; i++ )
	{
		// 读取本关ID和君主数,本关背景音乐ID
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,%d\n", &nNum2, &nNum3, &nTemp ));
		//fscanf( fp, "%d,%d,%d\n", &nNum2, &nNum3, &nTemp );
		// 读取战场图文件和AVI文件名
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%s %s\n", &strTemp, strTemp ));
		//fscanf( fp, "%s %s\n", &strTemp, strTemp );
		for( j=0; j<nNum3; j++ )
		{
			// 读取君主的ID,战场类型,技术级别
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nNum4 ));
			//fscanf( fp, "%d,", &nNum4 );
			// nThink:	0为陆战,1为水战,2为无基地
			// nTechLvl:	
			// nBuildType:	0为城内建筑,1为城外建筑
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,%d\n", 
				&nTemp, &nTemp, &nTemp )); 
			//fscanf( fp, "%d,%d,%d\n", 
			//	&nTemp, &nTemp, &nTemp ); 
			// 读取初始资源,钱,粮,木,铁
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d, %d, %d, %d\n", 
				&nTemp, &nTemp, &nTemp, &nTemp )); 
			//fscanf( fp, "%d, %d, %d, %d\n", 
			//	&nTemp, &nTemp, &nTemp, &nTemp ); 
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d, ", &nNum5 ));
			//fscanf( fp, "%d, ", &nNum5 );
			for( k=0; k<nNum5; k++ )
			{
				FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nNum6 ));
				//fscanf( fp, "%d,", &nNum6 );
			}
			for( k=0; k<nNum5; k++ )
			{
				FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nNum6 ));
				//fscanf( fp, "%d,", &nNum6 );
			}
		}
	}*/

	// 读取本关ID和君主数,本关背景音乐ID
//	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,%d\n", &nNum2, &nNum3, &GAME.nMusicID ));
	if( GAME_nDisk == 0 )
	{
		GAME.nMusicID=getrandom( 0, 10 );//背景音乐ID,可以给随机数
	}
	else
	{
		GAME.nMusicID=getrandom( 3, 15 );//背景音乐ID,可以给随机数
	}
	//fscanf( fp, "%d,%d,%d\n", &nNum2, &nNum3, &GAME.nMusicID );
//	Assert( nNum2 == i );
//	GAME.nID = nNum2;

	// 读取战场图文件和AVI文件名
//	char strAVI[_MAX_FNAME];

// Nov.6.1997, Liu Gang
//	char strFile[_MAX_FNAME];
//	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%s\n", strFile));
//	strcpy( GAME.strNameAVI, GAME_strSetupDirectory );
//	strcat( GAME.strNameAVI, "\\avi\\" );
//	strcat( GAME.strNameAVI, strAVI );

	//fscanf( fp, "%s %s\n", GAME.strNameMED, GAME.strNameAVI );
/*	for( j=0; j<4; j++ )
	{
		// 读取君主的ID,战场类型,技术级别
//		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nNum4 ));
		//fscanf( fp, "%d,", &nNum4 );
//		int nPlayer = 0;
//		if(GAME_bNetwork==2)
//			{nPlayer = 1;}
//		if( j==nPlayer )
//		{
//			GAME.nMe = nNum4;
//			GAME.Players[nNum4].nType = PLAYER_TYPE_HUMAN;
//		}
//		else
//		{
//			GAME.Players[nNum4].nType = PLAYER_TYPE_COMPUTER;
//		}
		// nThink:	0为陆战,1为水战,2为无基地
		// nTechLvl:	
		// nBuildType:	0为城内建筑,1为城外建筑
*/		int	Num;
		for(Num=1;Num<5;Num++)
			{
				GAME.Players[Num].nThink =0;
				GAME.Players[Num].nTechLvl =4;
				GAME.Players[Num].nBuildType  =0;
			}//}
		/*
		fscanf( fp, "%d,%d,%d\n", 
			&GAME.Players[nNum4].nThink, 
			&GAME.Players[nNum4].nTechLvl,
			&GAME.Players[nNum4].nBuildType ); 
		*/
//		GAME.Players[nNum4].nID=nNum4;
		 
		// 读取初始资源,钱,粮,木,铁
		for(Num=1;Num<5;Num++)
			{
				GAME.Players[Num].nGold=5000; 
				GAME.Players[Num].nFood=5000;
				GAME.Players[Num].nWood=5000;
				GAME.Players[Num].nIron=5000;
			}
		/*
		fscanf( fp, "%d, %d, %d, %d\n", 
			&GAME.Players[nNum4].nGold, 
			&GAME.Players[nNum4].nFood, 
			&GAME.Players[nNum4].nWood, 
			&GAME.Players[nNum4].nIron ); 
		*/
//		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d, ", &nNum5) );
		//fscanf( fp, "%d, ", &nNum5 );
		for( k=0; k<DATA_UNIT_GENERAL_MAX; k++ )
		{
//			if( DATA_Lib.Gen[k].nJunZhu == GAME.nMe )
			{
				DATA_Lib.Gen[k].bOnBattle = FALSE;
				DATA_Lib.Gen[k].nLevel = 9;
			}
		}
		if(DP_IsHost==DP_HOST)
			{Game_Ctrl_Status=DH_CTRL;}
		if(DP_IsHost!=DP_HOST)
			{Game_Ctrl_Status=DH_NO_CTRL;}
/*		int nSaveGen[32];
		for( k=0; k<nNum5; k++ )
		{
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nNum6 ));
			//fscanf( fp, "%d,", &nNum6 );
			DATA_Lib.Gen[nNum6].bOnBattle = FALSE;
			//Assert( DATA_Lib.Gen[nNum6].nJunZhu == nNum4 );
			DATA_Lib.Gen[nNum6].nJunZhu = nNum4;

			// 初始化一些属性
//			DATA_Lib.Gen[nNum6].nID = nNum6;
			
			nSaveGen[k] = nNum6;
		}
		for( k=0; k<nNum5; k++ )
		{
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,", &nNum6 ));
			if( nNum6 != 0 )
			{
				DATA_Lib.Gen[nSaveGen[k]].nLevel = nNum6-1;
			}
			else if( nSaveGen[k] >= 1 && nSaveGen[k] <= 33 
				&& DATA_Lib.Gen[nSaveGen[k]].nLevel == 0 )
			{
				DATA_Lib.Gen[nSaveGen[k]].nLevel = 5;	// 孙权的人,初始级别为5
			}
		}
	}*/

//	Assert( GAME.Players[GAME.nMe].nType == PLAYER_TYPE_HUMAN );
	FSCAN.scan_close ();
	//fclose( fp );
	return TRUE;
}

//次函数是专为李海军准备的
int	Send_Destroy_Me(void)
{
	GAME.Players[0].nType = PLAYER_TYPE_NONE;
	GAME.Players[1].nType = PLAYER_TYPE_NONE;
	GAME.Players[2].nType = PLAYER_TYPE_NONE;
	GAME.Players[3].nType = PLAYER_TYPE_NONE;
	GAME.Players[4].nType = PLAYER_TYPE_NONE;
	GAME_bNetPlayerOK[0]=FALSE;
	GAME_bNetPlayerOK[1]=FALSE;
	GAME_bNetPlayerOK[2]=FALSE;
	GAME_bNetPlayerOK[3]=FALSE;
	GAME_bNetPlayerOK[4]=FALSE;
	memset(DP_SendMessageBuff,0,sizeof(DP_SendMessageBuff));
	wsprintf((char *)DP_SendMessageBuff,"%d %d ",DP_DESTROY_PLAYER,GAME.nMe);
	if(DP_NetworkInterface(DP_SEND_MESSAGE,NULL)!=OK)
		{
//			#ifdef	NETWORK
			return (-1);
//			#endif
		}
	if(DP_NetworkInterface(DP_DESTROY_GAME,NULL)!=OK)
		{
//			#ifdef	NETWORK
			return (-1);
//			#endif
		}
	GAME.nMe=0;
	return(0);
}
	
//次函数是专为李海军准备的
int	Send_Destroy_Other(int	PlayerNum)
{
	int		Destroy_Num;

	GAME.Players[PlayerNum].nType = PLAYER_TYPE_NONE;
	memset(DP_SendMessageBuff,0,sizeof(DP_SendMessageBuff));
	wsprintf((char *)DP_SendMessageBuff,"%d %d ",DP_DESTROY_PLAYER,PlayerNum);
	if(DP_NetworkInterface(DP_SEND_MESSAGE,NULL)!=OK)
		{
//			#ifdef	NETWORK
			return (-1);
//			#endif
		}
	DH_JoinPlayer[PlayerNum]=DH_NOPLAY;
	for(Destroy_Num=0;Destroy_Num<GAME_PLAYER_MAX;Destroy_Num++)
		{
			GAME_SetAlly(Destroy_Num,PlayerNum,DP_NO_ALLY);
		}
	DP_PlayerInformation[PlayerNum-1].DP_dcoID=0;
	for(Destroy_Num=0;Destroy_Num<MAX_NAME_LENGTH;Destroy_Num++)
		{
			DP_PlayerInformation[PlayerNum-1].DP_NickName[Destroy_Num]='\0';
		}
	DH_JoinPlayer[PlayerNum]=DH_NOPLAY;
	GAME_bNetPlayerOK[PlayerNum]=FALSE;
	return(0);
}

⌨️ 快捷键说明

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