當前位置:編程學習大全網 - 源碼下載 - 傳奇 原碼 是什麽東西 有什麽作用 是多少?

傳奇 原碼 是什麽東西 有什麽作用 是多少?

傳奇的客戶端源代碼有兩個工程,WindHorn和Mir2Ex。

先剖析壹下WindHorn工程。

1.CWHApp、CWHWindow和CWHDXGraphicWindow。Window程序窗口的創建。

CWHApp派生CWHWindow,CWHWindow又派生CWHDXGraphicWindow。CWHWindow類

中完成窗口的註冊和創建。CWHDXGraphicWindow調用CWHWindow完成創建窗口功能,然後再調用CreateDXG()來初始化DirectX。

2.CWHDefProcess派生出CloginProcess、CcharacterProcess、CgameProcess三個類。

這三個類是客戶端處理的核心類。

3. 全局變量:

CWHDXGraphicWindow g_xMainWnd; 主窗口類。

CLoginProcess g_xLoginProc; 登錄處理。

CCharacterProcess g_xChrSelProc; 角色選擇處理。

CgameProcess g_xGameProc; 遊戲邏輯處理。

4.代碼分析:

1.首先從LoginGate.cpp WinMain分析:

g_xMainWnd定義為CWHDXGraphicWindow調用CWHWindow完成創建窗口功能,然後

調用DirectDrawEnumerateEx枚舉顯示設備,(執行回調函數DXGDriverEnumCallbackEx) 再調用CreateDXG()來初始化DirectX(創建DirectDraw對象, 取得獨占和全屏模式, 設置顯示模式等)。

g_xSound.InitMirSound創建CSound對象。

g_xSpriteInfo.SetInfo();

初始化聲音,加載Socket庫之後,進行CWHDefProcess*指針賦值(事件綁定)。g_bProcState變量反應了當前遊戲的狀態(登錄,角色選擇,遊戲邏輯處理)。調用Load初始化壹些操作(登錄,角色選擇,遊戲邏輯處理)。進行消息循環。

case _LOGIN_PROC:

g_xLoginProc.RenderScene(dwDelay);

case _CHAR_SEL_PROC:

g_xChrSelProc.RenderScene(dwDelay);

case _GAME_PROC:

g_xGameProc.RenderScene(dwDelay);

根據g_bProcState變量標誌,選擇顯示相應的畫面。

2.接收處理網絡消息和接收處理窗口消息。

在不同的狀態下(登錄,角色選擇,遊戲邏輯處理),接收到的消息(網絡,窗口消息)會分派到不同的函數中處理的。這裏是用虛函數處理(調用子類方法,由實際的父類完成相應的處理)。

OnMessageReceive主要處理網絡消息。DefMainWndProc則處理窗體消息(按鍵,重繪等),創建窗體類為CWHDXGraphicWindow,回調函數為:

MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) [Page]

if ( m_pxDefProcess )

m_pxDefProcess->DefMainWndProc(hWnd, uMsg, wParam, lParam);

else

return MainWndProcDXG(hWnd, uMsg, wParam, lParam);

m_pxDefProcess->DefMainWndProc調用父類的實際處理。

在WM_PAINT事件裏: g_xClientSocket.ConnectToServer連接登陸服務器。

  • 上一篇:物聯網什麽意思
  • 下一篇:高中語文必備成語及解釋
  • copyright 2024編程學習大全網