www.pudn.com > 3D_OnlineGame_Humen.rar > MenuLoadOldPlay.cpp


// MenuLoadOldPlay.cpp: implementation of the CMenuLoadOldPlay class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "XMudClient.h" 
#include "MenuLoadOldPlay.h" 
#include "FacePlate.h" 
#include "3DSound.h" 
#include "StartGameMenu.h" 
#include "InitInternet.h" 
#include "MenuCreateNew.h" 
#include "InterNetMsg.h" 
#include "CommunicateMsg.h" 
#include "MainScreen.h" 
#include "MapInfo.h" 
#include "MyMusic.h" 
#include  
#include "MyDInput.h" 
//add header file 
#include "wgs/WGS.h" 
//end 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
extern D3DVECTOR pSysSoundPos; 
extern rmfullglobals myglobs; 
extern D3DAppInfo* d3dapp; 
extern LPDIRECT3DRM3 g_lpD3DRM; 
extern char g_tszPathName[256]; 
//extern CString g_csSendToServerMsg; 
extern char g_szReceive[]; 
extern int g_nGameState; 
extern g_bInternConnect; 
extern int g_nReceiveMsgState; 
extern HANDLE gSendToSvrThread; 
 
extern CStartGameMenu m_StartGameMenu; 
extern CMenuCreateNew m_MenuCreateNew; 
extern CMainScreen m_MainScreen; 
 
extern int nSpareTime;		//剩下的時間(單位:秒) 
extern int nRecTimes;		//收到的信息次數 
 
extern void QuitResolution(void); 
extern char	szSendBuf[]; 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CMenuLoadOldPlay::CMenuLoadOldPlay() 
{ 
	nHaveUsed = 0;//記錄玩家角色個數 
	bWaittingConnect = FALSE; 
 
	bShowMsg = FALSE;//是否顯示錯誤信息 
	bStatGame = FALSE; 
	bCreateNewPlay = FALSE; 
	bBackUp = FALSE; 
 
	bPlayer0 = FALSE; 
	bPlayer1 = FALSE; 
	bPlayer2 = FALSE; 
	bPlayer3 = FALSE; 
	bPlayer4 = FALSE; 
 
	bPlayerState0 = FALSE; 
	bPlayerState1 = FALSE; 
	bPlayerState2 = FALSE; 
	bPlayerState3 = FALSE; 
	bPlayerState4 = FALSE; 
//add data of load play 
	bDeletePlay=FALSE; 
	SetRect(&rcBulletin,452,144,766,313); 
	SetRect(&rcDeletePlayButton,627,498,704,517); 
	SetRect(&rcDeletePlayButtonSource,600,1285,677,1304); 
	messlistBulletin.Initiate(myglobs.hWndMain,18,169/18,&rcBulletin,16,"細明體",0); 
//end 
 
	SetRect(&rcStatGameButton,449,498,526,517); 
	SetRect(&rcCreateNewPlayButton,532,498,621,517); 
	SetRect(&rcBackUpButton,710,498,769,517); 
 
	SetRect(&rcPlayerPos0,452,344,766,363); 
	SetRect(&rcPlayerPos1,452,367,766,386); 
	SetRect(&rcPlayerPos2,452,390,766,409); 
	SetRect(&rcPlayerPos3,452,413,766,432); 
	SetRect(&rcPlayerPos4,452,436,766,455); 
 
	SetRect(&rcStatGameButtonSource,432,1285,509,1304); 
	SetRect(&rcCreateNewPlayButtonSource,510,1285,599,1304); 
	SetRect(&rcBackUpButtonSource,678,1285,737,1304); 
	SetRect(&rcPlayerPosSource,320,1240,634,1259); 
 
	SetRect(&rcMainSurfaceSource,0,600,799,1199); 
} 
 
CMenuLoadOldPlay::~CMenuLoadOldPlay() 
{ 
//add CMenuLoadOldPlay release 
	messlistBulletin.Release(); 
//end 
 
} 
 
void CMenuLoadOldPlay::PrepareOldPlay() 
{ 
	CFile file; 
	LPTSTR lpsz; 
	CString buf,strtmp; 
	CString parm; 
	char *ps; 
	CString ns; 
	CStringList strls; 
	int i=0,n=0; 
 
	char tmpFileName[256]; 
	strcpy(tmpFileName,g_tszPathName); 
	strcat(tmpFileName,"\\player.sav"); 
 
	if(file.Open(tmpFileName,CFile::modeRead)) 
	{ 
		CArchive ar(&file,CArchive::load); 
		while(ar.ReadString(buf)) 
		{ 
			n++; 
			if( n > 5 ) 
			{ 
				Msg("Read Player.Sav Error"); 
				Free2DSurfaces(); 
        QuitDirectMusic(); 
        QuitResolution(); 
        QuitIME(myglobs.hWndMain); 
				exit(1); 
			} 
 
			int k=0; 
			lpsz = buf.GetBuffer(buf.GetLength()+1); 
			parm=CString("\t"); 
			ps=strtok(lpsz,(const char*)parm); 
 
			if( ps == NULL ) 
			{ 
				Msg("Read Player.Sav Error"); 
				Free2DSurfaces(); 
        QuitDirectMusic(); 
        QuitResolution(); 
        QuitIME(myglobs.hWndMain); 
				exit(1); 
			} 
			strls.AddTail(ps); 
			for(;;) 
			{ 
				ps=strtok(NULL,(const char*)parm); 
				if(ps==NULL)break; 
				k++; 
				strls.AddTail(ps); 
			} 
			if ( k != 2 ) 
			{ 
				Msg("Read Player.Sav Error"); 
				Free2DSurfaces(); 
        QuitDirectMusic(); 
        QuitResolution(); 
        QuitIME(myglobs.hWndMain); 
    		exit(1); 
			} 
			strtmp=strls.GetAt(strls.FindIndex(0)); 
			m_CName[i]=strtmp.Mid(1,strtmp.GetLength()-2); 
			strtmp=strls.GetAt(strls.FindIndex(1)); 
			m_EName[i]=strtmp.Mid(1,strtmp.GetLength()-2); 
			strtmp=strls.GetAt(strls.FindIndex(2)); 
			m_Password[i]=strtmp.Mid(1,strtmp.GetLength()-2); 
			i++; 
			strls.RemoveAll(); 
		} 
		ar.Close(); 
		file.Close(); 
	} 
	nHaveUsed = i; 
} 
 
HRESULT CMenuLoadOldPlay::Draw2DSetup() 
{ 
 
	bltObject(0,0,myglobs.g_lpDDSGameMenu,&rcMainSurfaceSource,DDBLTFAST_SRCCOLORKEY); 
 
	DrawAllMenuBottonElement(); 
	DrawOldPlayeName(); 
//add show messlistBulletin 
	if(ERR_SYSTEM==messlistBulletin.ShowMessageList(d3dapp->lpBackBuffer)) 
		return E_FAIL; 
//end 
 
	// 
	//進入網絡等待狀態 
	// 
	if(bWaittingConnect) 
	{ 
		// 
		//暗淡背景,然後進入等待驗證,準備接收數據,進入遊戲前的準備 
		// 
		DrawInterLace(); 
		DrawProgress( TRUE ); 
	} 
	return DD_OK; 
} 
 
HRESULT CMenuLoadOldPlay::DrawAllMenuBottonElement() 
{ 
	LPDIRECTDRAWSURFACE lpdds = myglobs.g_lpDDSGameMenu; 
 
	//在LoadPlayerSurface圖片上畫需要的button 
	if(bStatGame) 
		bltButtonObject(&rcStatGameButton,&rcStatGameButtonSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
	else if(bCreateNewPlay) 
		bltButtonObject(&rcCreateNewPlayButton,&rcCreateNewPlayButtonSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
	else if(bBackUp) 
		bltButtonObject(&rcBackUpButton,&rcBackUpButtonSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
//add Show deleteplayer button 
	else if (bDeletePlay) 
		bltButtonObject(&rcDeletePlayButton,&rcDeletePlayButtonSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
//end 
	return DD_OK; 
} 
 
// 
//在舊玩家的ListBox中填寫信息 
// 
HRESULT CMenuLoadOldPlay::DrawOldPlayeName() 
{ 
	LPDIRECTDRAWSURFACE lpdds = myglobs.g_lpDDSGameMenu; 
	if(nHaveUsed >= 1) 
	{ 
		if(bPlayer0) 
		{ 
			bltButtonObject(&rcPlayerPos0,&rcPlayerPosSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
		} 
    // 畫舊玩家中文姓名文字 
		DrawGameString(m_CName[0].GetBuffer(m_CName[0].GetLength()) 
						,&rcPlayerPos0 
						,DT_LEFT | DT_VCENTER 
						,bPlayerState0 == TRUE ? RGB(255,255,0):RGB(125,125,0) 
						,RGB(0,0,0),FALSE); 
	} 
	if(nHaveUsed>=2) 
	{ 
		if(bPlayer1) 
		{ 
			bltButtonObject(&rcPlayerPos1,&rcPlayerPosSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
		} 
    // 畫舊玩家中文姓名文字 
		DrawGameString(m_CName[1].GetBuffer(m_CName[1].GetLength()) 
						,&rcPlayerPos1 
						,DT_LEFT | DT_VCENTER 
						,bPlayerState1 == TRUE ? RGB(255,255,0):RGB(125,125,0) 
						,RGB(0,0,0),FALSE); 
 
	} 
	if(nHaveUsed>=3) 
	{ 
		if(bPlayer2) 
		{ 
			bltButtonObject(&rcPlayerPos2,&rcPlayerPosSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
		} 
    // 畫舊玩家中文姓名文字 
		DrawGameString(m_CName[2].GetBuffer(m_CName[2].GetLength()) 
						,&rcPlayerPos2 
						,DT_LEFT | DT_VCENTER 
						,bPlayerState2 == TRUE ? RGB(255,255,0):RGB(125,125,0) 
						,RGB(0,0,0),FALSE); 
	} 
	if(nHaveUsed>=4) 
	{ 
		if(bPlayer3) 
		{ 
			bltButtonObject(&rcPlayerPos3,&rcPlayerPosSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
		} 
    // 畫舊玩家中文姓名文字 
		DrawGameString(m_CName[3].GetBuffer(m_CName[3].GetLength()) 
						,&rcPlayerPos3 
						,DT_LEFT | DT_VCENTER 
						,bPlayerState3 == TRUE ? RGB(255,255,0):RGB(125,125,0) 
						,RGB(0,0,0),FALSE); 
	} 
	if(nHaveUsed>=5) 
	{ 
		if(bPlayer4) 
		{ 
			bltButtonObject(&rcPlayerPos4,&rcPlayerPosSource,lpdds,DDBLTFAST_SRCCOLORKEY); 
		} 
    // 畫舊玩家中文姓名文字 
		DrawGameString(m_CName[4].GetBuffer(m_CName[4].GetLength()) 
						,&rcPlayerPos4 
						,DT_LEFT | DT_VCENTER 
						,bPlayerState4 == TRUE ? RGB(255,255,0):RGB(125,125,0) 
						,RGB(0,0,0),FALSE); 
	} 
	return DD_OK; 
} 
 
void CMenuLoadOldPlay::LoadPlayerOnLButtonDown(POINT Pos) 
{ 
	if( (Pos.x > rcBackUpButton.left) 
		&&(Pos.x < rcBackUpButton.right) 
		&&(Pos.y > rcBackUpButton.top) 
		&&(Pos.y < rcBackUpButton.bottom) ) 
	{ 
		PlaySoundDS(PRESSBUTTON,pSysSoundPos,0); 
		bBackUp = TRUE; 
		return; 
	} 
	if(bWaittingConnect) return; 
	// 
	//選擇玩家角色 
	// 
	if( (Pos.x > rcPlayerPos0.left) 
		&&(Pos.x < rcPlayerPos0.right) 
		&&(Pos.y > rcPlayerPos0.top) 
		&&(Pos.y < rcPlayerPos0.bottom) ) 
	{ 
		if(nHaveUsed<1)return; 
		bPlayer0 = TRUE; 
		bPlayer1 = FALSE; 
		bPlayer2 = FALSE; 
		bPlayer3 = FALSE; 
		bPlayer4 = FALSE; 
		return; 
	} 
	if( (Pos.x > rcPlayerPos1.left) 
		&&(Pos.x < rcPlayerPos1.right) 
		&&(Pos.y > rcPlayerPos1.top) 
		&&(Pos.y < rcPlayerPos1.bottom) ) 
	{ 
		if(nHaveUsed<2)return; 
		bPlayer0 = FALSE; 
		bPlayer1 = TRUE; 
		bPlayer2 = FALSE; 
		bPlayer3 = FALSE; 
		bPlayer4 = FALSE; 
		return; 
	} 
	if( (Pos.x > rcPlayerPos2.left) 
		&&(Pos.x < rcPlayerPos2.right) 
		&&(Pos.y > rcPlayerPos2.top) 
		&&(Pos.y < rcPlayerPos2.bottom) ) 
	{ 
		if(nHaveUsed<3)return; 
		bPlayer0 = FALSE; 
		bPlayer1 = FALSE; 
		bPlayer2 = TRUE; 
		bPlayer3 = FALSE; 
		bPlayer4 = FALSE; 
		return; 
	} 
	if( (Pos.x > rcPlayerPos3.left) 
		&&(Pos.x < rcPlayerPos3.right) 
		&&(Pos.y > rcPlayerPos3.top) 
		&&(Pos.y < rcPlayerPos3.bottom) ) 
	{ 
		if(nHaveUsed<4)return; 
		bPlayer0 = FALSE; 
		bPlayer1 = FALSE; 
		bPlayer2 = FALSE; 
		bPlayer3 = TRUE; 
		bPlayer4 = FALSE; 
		return; 
	} 
	if( (Pos.x > rcPlayerPos4.left) 
		&&(Pos.x < rcPlayerPos4.right) 
		&&(Pos.y > rcPlayerPos4.top) 
		&&(Pos.y < rcPlayerPos4.bottom) ) 
	{ 
		if(nHaveUsed<5)return; 
		bPlayer0 = FALSE; 
		bPlayer1 = FALSE; 
		bPlayer2 = FALSE; 
		bPlayer3 = FALSE; 
		bPlayer4 = TRUE; 
		return; 
	} 
 
 
	if( (Pos.x > rcStatGameButton.left) 
		&&(Pos.x < rcStatGameButton.right) 
		&&(Pos.y > rcStatGameButton.top) 
		&&(Pos.y < rcStatGameButton.bottom) ) 
	{ 
		PlaySoundDS(PRESSBUTTON,pSysSoundPos,0); 
		bStatGame = TRUE; 
		return; 
	} 
	if( (Pos.x > rcCreateNewPlayButton.left) 
		&&(Pos.x < rcCreateNewPlayButton.right) 
		&&(Pos.y > rcCreateNewPlayButton.top) 
		&&(Pos.y < rcCreateNewPlayButton.bottom) ) 
	{ 
		PlaySoundDS(PRESSBUTTON,pSysSoundPos,0); 
		bCreateNewPlay = TRUE; 
		return; 
	} 
//add press deleteplayer button 
	if(PtInRect(&rcDeletePlayButton,Pos)) 
	{ 
		PlaySoundDS(PRESSBUTTON,pSysSoundPos,0); 
		bDeletePlay=TRUE; 
	} 
//end 
} 
 
void CMenuLoadOldPlay::LoadPlayerOnLButtonUp(POINT Pos) 
{ 
	//返回上一層的按鈕按下 
	if( (Pos.x > rcBackUpButton.left) 
		&&(Pos.x < rcBackUpButton.right) 
		&&(Pos.y > rcBackUpButton.top) 
		&&(Pos.y < rcBackUpButton.bottom) ) 
	{ 
		bBackUp = FALSE; 
		// 
		//掛斷sock,在退回上一層 
		// 
//		AppPause(TRUE); 
		CPmudNet_End(); 
		m_StartGameMenu.bStartConnect = FALSE; 
		m_StartGameMenu.bWaittingConnect = FALSE; 
		g_bInternConnect = FALSE; 
		g_nGameState = GAME_SETUP; 
		PlaySoundDS(CLOSEMENU,pSysSoundPos,0); 
//		AppPause(FALSE); 
		return; 
	} 
	if(bWaittingConnect)return; 
	//開始遊戲的按鈕按下 
	if( (Pos.x > rcStatGameButton.left) 
		&&(Pos.x < rcStatGameButton.right) 
		&&(Pos.y > rcStatGameButton.top) 
		&&(Pos.y < rcStatGameButton.bottom) ) 
	{ 
		bStatGame = FALSE; 
		if(bShowMsg) bShowMsg = FALSE; 
		if(	!bPlayer0 && !bPlayer1 && !bPlayer2 && !bPlayer3 && !bPlayer4 ) 
		{ 
			TCHAR	szTemp[50]; 
			wsprintf(szTemp,"%c12m請選擇您要扮演的角色!%c10m",27,27); 
			AddMessage(szTemp); 
			return; 
		} 
		if(!g_bInternConnect) 
		{ 
			TCHAR	szTemp[50]; 
			wsprintf(szTemp,"%c12m您已與伺服器失去聯繫,請再連接試一次!%c10m",27,27); 
			AddMessage(szTemp); 
			return; 
		} 
		PlaySoundDS(OPENMENU,pSysSoundPos,0); 
		if(UsreLoadOldPlayerSend()){ 
			bWaittingConnect = TRUE; 
		} 
		return; 
	} 
	if( (Pos.x > rcCreateNewPlayButton.left) 
		&&(Pos.x < rcCreateNewPlayButton.right) 
		&&(Pos.y > rcCreateNewPlayButton.top) 
		&&(Pos.y < rcCreateNewPlayButton.bottom) ) 
	{ 
		bCreateNewPlay = FALSE; 
		if(nHaveUsed >= 5) 
			return; 
		m_MenuCreateNew.PrepareCreateNew(); 
		g_nGameState = GAME_CREATEPLAYER; 
		PlaySoundDS(CLOSEMENU,pSysSoundPos,0); 
		return; 
	} 
	if(bDeletePlay){ 
		bDeletePlay=FALSE; 
		if(	!bPlayer0 && !bPlayer1 && !bPlayer2 && !bPlayer3 && !bPlayer4 ){ 
			TCHAR	szTemp[50]; 
			wsprintf(szTemp,"%c12m請選擇您要刪除的角色!%c10m",27,27); 
			AddMessage(szTemp); 
			return; 
		} 
		if(IDYES!=MessageBox(myglobs.hWndMain,"確定要刪除此人物?","",MB_YESNO)) 
			return; 
		int iSelected; 
		if(bPlayer0) 
			iSelected=0; 
		else if(bPlayer1) 
			iSelected=1; 
		else if(bPlayer2) 
			iSelected=2; 
		else if(bPlayer3) 
			iSelected=3; 
		else if(bPlayer4) 
			iSelected=4; 
		wsprintf(szSendBuf,"%s %s",SZPLAYERDELETE,m_EName[iSelected]); 
		Send(); 
		DeletePlayer(); 
		} 
	bStatGame = FALSE; 
	bCreateNewPlay = FALSE; 
	bBackUp = FALSE; 
} 
 
void CMenuLoadOldPlay::LoadPlayerOnRButtonDown(POINT Pos) 
{ 
	bShowMsg = FALSE; 
	bPlayer0 = FALSE; 
	bPlayer1 = FALSE; 
	bPlayer2 = FALSE; 
	bPlayer3 = FALSE; 
	bPlayer4 = FALSE; 
 
	bPlayerState0 = FALSE; 
	bPlayerState1 = FALSE; 
	bPlayerState2 = FALSE; 
	bPlayerState3 = FALSE; 
	bPlayerState4 = FALSE; 
} 
 
void CMenuLoadOldPlay::LoadPlayerOnMouseMove(POINT Pos) 
{ 
	bPlayerState0 = bPlayerState1 = bPlayerState2 = bPlayerState3 = bPlayerState4 = FALSE; 
	if( (Pos.x > rcPlayerPos0.left) 
		&&(Pos.x < rcPlayerPos0.right) 
		&&(Pos.y > rcPlayerPos0.top) 
		&&(Pos.y < rcPlayerPos0.bottom) ) 
	{ 
		if(nHaveUsed<1)return; 
		if(bPlayerState0 )return; 
		bPlayerState0 = TRUE; 
		PlaySoundDS(OPENMENU,pSysSoundPos,0); 
		return; 
	} 
	if( (Pos.x > rcPlayerPos1.left) 
		&&(Pos.x < rcPlayerPos1.right) 
		&&(Pos.y > rcPlayerPos1.top) 
		&&(Pos.y < rcPlayerPos1.bottom) ) 
	{ 
		if(nHaveUsed<2)return; 
		if(bPlayerState1)return; 
		bPlayerState1 = TRUE; 
		PlaySoundDS(OPENMENU,pSysSoundPos,0); 
		return; 
	} 
	if( (Pos.x > rcPlayerPos2.left) 
		&&(Pos.x < rcPlayerPos2.right) 
		&&(Pos.y > rcPlayerPos2.top) 
		&&(Pos.y < rcPlayerPos2.bottom) ) 
	{ 
		if(nHaveUsed<3)return; 
		if(bPlayerState2)return; 
		bPlayerState2 = TRUE; 
		PlaySoundDS(OPENMENU,pSysSoundPos,0); 
		return; 
	} 
	if( (Pos.x > rcPlayerPos3.left) 
		&&(Pos.x < rcPlayerPos3.right) 
		&&(Pos.y > rcPlayerPos3.top) 
		&&(Pos.y < rcPlayerPos3.bottom) ) 
	{ 
		if(nHaveUsed<4)return; 
		if(bPlayerState3)return; 
		bPlayerState3 = TRUE; 
		PlaySoundDS(OPENMENU,pSysSoundPos,0); 
		return; 
	} 
	if( (Pos.x > rcPlayerPos4.left) 
		&&(Pos.x < rcPlayerPos4.right) 
		&&(Pos.y > rcPlayerPos4.top) 
		&&(Pos.y < rcPlayerPos4.bottom) ) 
	{ 
		if(nHaveUsed<5)return; 
		if(bPlayerState4)return; 
		bPlayerState4 = TRUE; 
		PlaySoundDS(OPENMENU,pSysSoundPos,0); 
		return; 
	} 
} 
 
BOOL CMenuLoadOldPlay::UsreLoadOldPlayerSend() 
{ 
	// 
	//準備發送的數據 
	// 
	CString parm = (" "); 
	if(bPlayer0) 
	{ 
//cary 
		wsprintf(szSendBuf,"%s %s %s",szLoadOldPlayer,m_EName[0],m_Password[0]); 
//		g_csSendToServerMsg = szLoadOldPlayer 
//							+ parm + m_EName[0] + parm 
//							+ parm + m_Password[0]; 
//end 
	} 
	else if(bPlayer1) 
	{ 
//cary 
		wsprintf(szSendBuf,"%s %s %s",szLoadOldPlayer,m_EName[1],m_Password[1]); 
//		g_csSendToServerMsg = szLoadOldPlayer 
//							+ parm + m_EName[1] + parm 
//							+ parm + m_Password[1]; 
//end 
	} 
	else if(bPlayer2) 
	{ 
//cary 
		wsprintf(szSendBuf,"%s %s %s",szLoadOldPlayer,m_EName[2],m_Password[2]); 
//		g_csSendToServerMsg = szLoadOldPlayer 
//							+ parm + m_EName[2] + parm 
//							+ parm + m_Password[2]; 
//end 
	} 
	else if(bPlayer3) 
	{ 
//cary 
		wsprintf(szSendBuf,"%s %s %s",szLoadOldPlayer,m_EName[3],m_Password[3]); 
//		g_csSendToServerMsg = szLoadOldPlayer 
//							+ parm + m_EName[3] + parm 
//							+ parm + m_Password[3]; 
//end 
	} 
	else if(bPlayer4) 
	{ 
//cary 
		wsprintf(szSendBuf,"%s %s %s",szLoadOldPlayer,m_EName[4],m_Password[4]); 
//		g_csSendToServerMsg = szLoadOldPlayer 
//							+ parm + m_EName[4] + parm 
//							+ parm + m_Password[4]; 
//end 
	} 
	Send(); 
	g_nReceiveMsgState = SVRMSG_LOADOLD; 
	nSpareTime = MAXLOADMAPTIME;		//剩下的時間(單位:秒) 
	nRecTimes = 0;			//接收到的信息次數 
 
	return TRUE; 
} 
 
extern CString lastRcvBuf; 
BOOL CMenuLoadOldPlay::UsreLoadOldPlayerReceive() 
{ 
	CStringList strls; 
	CString parm; 
	CString strtmp; 
	char *ps; 
	char tmpRcv[8192]; 
 
	lstrcpy(tmpRcv,lastRcvBuf); 
	parm = CString(" \n\t\r"); 
	ps = strtok(tmpRcv,(const char*)parm); 
	strls.AddTail(ps); 
	for(;;) 
	{ 
		ps=strtok(NULL,(const char*)parm); 
		if(ps==NULL)break; 
		strls.AddTail(ps); 
	} 
	 
	//判斷從服務器返回的結果 
	strtmp=strls.GetAt(strls.FindIndex(0)); 
	strtmp.MakeUpper(); 
	if(strtmp=="OK") 
	{ 
		strls.RemoveAll(); 
		// 
		//進入主遊戲畫面 
		// 
//		AppPause(TRUE); 
		// 
		//裝入遊戲的各種數據,並準備進入主游戲的畫面 
		//填寫地圖信息,人物角色,裝備,技能等等信息. 
		//初始化主遊戲畫面surface,裝入3D場景 
		if(!GetNewMap(lastRcvBuf))goto failure;//獲取地圖信息,函數在MapInfo.h中定義 
		if(!m_MenuCreateNew.GetMyselfInfo(lastRcvBuf))goto failure;//獲取自我信息失敗 
		if(!m_MenuCreateNew.GetMyEquipInfo(lastRcvBuf))goto failure;//獲取自我裝備信息失敗 
		if(!m_MenuCreateNew.GetMySkillInfo(lastRcvBuf))goto failure;//獲取自我技能信息失敗 
		if(!m_MainScreen.PrepareMainScreen())//做主遊戲畫面的準備工作(例如安排2D圖片的位置等等) 
			goto failure; 
		if (!BuildScene(g_lpD3DRM, myglobs.dev, myglobs.view, myglobs.scene, myglobs.camera)) 
			goto failure;//裝入3D人物和場景 
		g_nGameState = GAME_MAIN; 
    EnableIME(myglobs.hWndMain); 
//		AppPause(FALSE); 
		return TRUE; 
	} 
	else 
	{ 
		int i; 
		strtmp.Empty(); 
		for(i=1;i