现在假设玩家开始操作游戏:
传奇的客户端源代码工程WindHorn
一、CWHApp派生CWHWindow和CWHDXGraphicWindow。
二、CWHDefProcess派生出CloginProcess、CcharacterProcess、CgameProcess
客户端WinMain调用CWHDXGraphicWindow g_xMainWnd;创建一个窗口。
客户端
CWHDXGraphicWindow
在自己的Create函数中调用了CWHWindow的Create来创建窗口,然后再调用自己的CreateDXG()来初始化DirectX。
消息循环:
因此,当客户端鼠标单击的时候,先调用CWHWindow窗口的回调函数WndProc,即: g_pWHApp->MainWndProc g_pWHApp定义为:
static CWHApp* g_pWHApp = NULL
;在CWHApp
构造函数中赋值为:
g_pWHApp = this;
g_pWHApp->MainWndProc
便调用了CWHApp::MainWndProc,这是一个虚函数,实际上则是调用它的派生类
CWHDXGraphicWindow::MainWndProc
。
if ( m_pxDefProcess )
return m_pxDefProcess->DefMainWndProc(hWnd, uMsg, wParam, lParam);
根据g_xMainWnd.m_pxDefProcess和全局变量g_bProcState标记当前的处理状态。调用
if ( m_pxDefProcess )
return m_pxDefProcess->DefMainWndProc(hWnd, uMsg, wParam, lParam);
根据g_xMainWnd.m_pxDefProcess和全局变量g_bProcState标记当前的处理状态。调用
CLoginProcess->DefMainWndProc
CCharacterProcess->DefMainWndProc
CGameProcess->DefMainWndProc&nbs

本文深入分析了传奇客户端的游戏逻辑处理源代码,详细介绍了玩家操作游戏时的执行流程,包括窗口创建、消息处理、DirectX初始化,以及玩家走动、物品丢弃、捡取、与NPC交互等关键步骤。同时,提到了客户端与服务器之间的通信,如发送CM_WALK、CM_PICKUP和CM_OPENDOOR等命令。
最低0.47元/天 解锁文章
7665

被折叠的 条评论
为什么被折叠?



