📄 gameproc.cpp
字号:
#include "StdAfx.h"
extern CWHQueue PacketQ;
char szBuff[8192];
int nBuff = 0;
void DevideScript(char *pszScript);
/******************************************************************************************************************
霸烙 敲饭捞 包访 窃荐甸.
*******************************************************************************************************************/
/******************************************************************************************************************
窃荐疙 : CGameProcess::CGameProcess()
累己磊 :
累己老 :
格利 :
免仿 :
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
CGameProcess::CGameProcess()
{
Init();
}
/******************************************************************************************************************
窃荐疙 : CGameProcess::~CGameProcess()
累己磊 :
累己老 :
格利 :
免仿 :
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
CGameProcess::~CGameProcess()
{
DeleteProc();
}
VOID CGameProcess::Init()
{
m_bTileView = FALSE;
m_bObj1View = FALSE;
m_bObj2View = FALSE;
m_bCellView = FALSE;
m_bStatusView = FALSE;
m_bStopPtView = FALSE;
m_bRender = FALSE;
m_bShowSnow = FALSE;
m_bShowMist = FALSE;
m_bShowRain = FALSE;
m_bShadowABlend = FALSE;
m_bShowFPS = FALSE;
ZeroMemory(&m_ptMousePos, sizeof(POINT));
ZeroMemory(&m_ptCurrTile, sizeof(POINT));
ZeroMemory(m_stMemMappedID, sizeof(MEMMAPPEDID)*_VIEW_CELL_X_COUNT* _VIEW_CELL_Y_COUNT);
m_bDayState = _DAYSTATE_DAY;
m_bFogState = _FOGSTATE_DAY;
m_pxMouseTargetActor = NULL; // 泅犁 付快胶啊 啊府虐绰 镑狼 鸥百咀磐.
m_pxMouseOldTargetActor = NULL; // 历厘登绢乐绰 鸥百咀磐.
m_pxSavedTargetActor = NULL;
m_fTileLightRed = 255;
m_fTileLightGreen = 230;
m_fTileLightBlue = 180;
m_fDarkRate = 255.0f;
m_wInputDelayTime = 0;
m_wCurrInputDelayTime = 0;
m_wNPCWndPosX = 0;
m_wNPCWndPosY = 0;
ZeroMemory(m_wShadowClr, 800);
m_bShowShine = FALSE;
m_dwLastShineTick = timeGetTime();
m_wShineCurrDelay = 0;
m_bCurrShineFrame = 0;
ZeroMemory(m_lpddsShineTextr, sizeof(LPDIRECTDRAWSURFACE7)*10);
D3DVECTOR vNorm(0, 0, -1);
m_avBillboard[0] = D3DVERTEX(D3DVECTOR(-0.5f, 0.5f, 0), vNorm, 0, 0);
m_avBillboard[1] = D3DVERTEX(D3DVECTOR(-0.5f,-0.5f, 0), vNorm, 0, 1);
m_avBillboard[2] = D3DVERTEX(D3DVECTOR( 0.5f, 0.5f, 0), vNorm, 1, 0);
m_avBillboard[3] = D3DVERTEX(D3DVECTOR( 0.5f,-0.5f, 0), vNorm, 1, 1);
ZeroMemory(m_szMapName, MAX_PATH);
m_xImage.InitAllImage();
m_xInterface.Init();
m_xMyHero.InitActor();
m_xMap.InitMapHandler();
m_xLightFog.Init(RGB(255, 255, 255));
m_xMist.Init();
m_xFlyingTail.InitSystem();
m_xSmoke.InitSystem();
m_xSnow.InitSystem();
m_xRain.InitSystem();
// m_xElec.InitElec();
m_hBrush = CreateSolidBrush(RGB(200, 150, 100));
}
VOID CGameProcess::DeleteProc()
{
INT nCnt;
SHORT shLeftMsgCnt;
LPPACKETMSG lpPacketMsg;
lpPacketMsg = NULL;
shLeftMsgCnt = m_xWaitPacketQueue.GetCount();
// 阶咯乐绰 菩哦阑 瘤款促.
if ( shLeftMsgCnt > 0 )
{
for ( nCnt = 0; nCnt < shLeftMsgCnt; nCnt++ )
{
lpPacketMsg = (LPPACKETMSG)m_xWaitPacketQueue.PopQ();
if ( lpPacketMsg )
{
SAFE_DELETE(lpPacketMsg);
}
}
}
lpPacketMsg = NULL;
shLeftMsgCnt = m_xWaitDefaultPacketQueue.GetCount();
// 阶咯乐绰 菩哦阑 瘤款促.
if ( shLeftMsgCnt > 0 )
{
for ( nCnt = 0; nCnt < shLeftMsgCnt; nCnt++ )
{
lpPacketMsg = (LPPACKETMSG)m_xWaitDefaultPacketQueue.PopQ();
if ( lpPacketMsg )
{
SAFE_DELETE(lpPacketMsg);
}
}
}
D3DWILTextr_InvalidateAllTextures();
D3DWILTextr_DestroyAllTextures();
DeleteObject(m_hBrush);
m_xImage.DeleteAllImage();
m_xMap.DestroyMapHandler();
m_xInterface.Destroy();
m_xMyHero.DestroyActor();
m_xMist.Destory();
m_xSnow.DestroySystem();
m_xRain.DestroySystem();
m_xActorList.ClearAllNodes();
m_xMagicList.ClearAllNodes();
m_xGroundMagicList.ClearAllNodes();
m_stMapItemList.ClearAllNodes();
g_xClientSocket.DisconnectToServer();
Init();
}
/******************************************************************************************************************
窃荐疙 : CGameProcess::Load()
累己磊 :
累己老 :
格利 :
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CGameProcess::Load()
{
INT nCnt;
g_xMainWnd.ResetDXG(800, 600, _SCREEN_BPP, _DXG_SCREENMODE_WINDOW, _DXG_DEVICEMODE_PRIMARY|_DXG_DEVICEMODE_D3D);
// g_xMainWnd.ResetDXG(800, 600, _SCREEN_BPP, _DXG_SCREENMODE_FULLSCREEN, _DXG_DEVICEMODE_PRIMARY|_DXG_DEVICEMODE_D3D);
/* CHAR szSetup[MAX_PATH];
ZeroMemory(szSetup, MAX_PATH);
jRegGetKey(_T("Software\\WEMADE Entertainment\\固福狼傈汲2"), _T("setup path"), (LPBYTE)szSetup);
for ( nCnt = strlen(szSetup); nCnt >= 0; nCnt--)
{
if ( szSetup[nCnt] == '\\' )
{
szSetup[nCnt+1] = NULL;
break;
}
}
*/
Init();
m_xLightFog.Init(RGB(255, 255, 255));
m_xImage.LoadAllImage();
m_xInterface.CreateInterface(&m_xImage);
m_xNotice.Load(&m_xImage.m_xImageList[_IMAGE_INTER]);
g_xClientSocket.ConnectToServer(g_xMainWnd.GetSafehWnd(), g_szServerIP, g_nServerPort);
/* for ( nCnt = 0; nCnt < m_xImage.m_xImageList[_IMAGE_MAGIC].m_stNewWixImgaeInfo.nIndexCount; nCnt++)
{
if ( m_xImage.m_xImageList[_IMAGE_MAGIC].NewSetIndex(nCnt) )
{
D3DWILTextr_CreateEmptyTexture(m_xImage.m_xImageList[_IMAGE_MAGIC].m_szWilFileName, nCnt,
m_xImage.m_xImageList[_IMAGE_MAGIC].m_lpstNewCurrWilImageInfo->shWidth,
m_xImage.m_xImageList[_IMAGE_MAGIC].m_lpstNewCurrWilImageInfo->shHeight,
(WORD*)m_xImage.m_xImageList[_IMAGE_MAGIC].m_pbCurrImage, D3DTEXTR_TRANSPARENTBLACK);
}
}
for ( nCnt = 0; nCnt < m_xImage.m_xImageList[_IMAGE_MONMAGIC].m_stNewWixImgaeInfo.nIndexCount; nCnt++)
{
if ( m_xImage.m_xImageList[_IMAGE_MONMAGIC].NewSetIndex(nCnt) )
{
D3DWILTextr_CreateEmptyTexture(m_xImage.m_xImageList[_IMAGE_MONMAGIC].m_szWilFileName, nCnt,
m_xImage.m_xImageList[_IMAGE_MONMAGIC].m_lpstNewCurrWilImageInfo->shWidth,
m_xImage.m_xImageList[_IMAGE_MONMAGIC].m_lpstNewCurrWilImageInfo->shHeight,
(WORD*)m_xImage.m_xImageList[_IMAGE_MONMAGIC].m_pbCurrImage, D3DTEXTR_TRANSPARENTBLACK);
}
}
*/
/* // 酒捞袍 馆娄芭覆 咆胶苗.
for ( nCnt = 0; nCnt < 10; nCnt++)
{
if ( m_xImage.m_xImageList[_IMAGE_PROGUSE].NewSetIndex(nCnt+40) )
{
D3DWILTextr_CreateEmptyTexture(m_xImage.m_xImageList[_IMAGE_PROGUSE].m_szWilFileName, nCnt+40,
m_xImage.m_xImageList[_IMAGE_PROGUSE].m_lpstNewCurrWilImageInfo->shWidth,
m_xImage.m_xImageList[_IMAGE_PROGUSE].m_lpstNewCurrWilImageInfo->shHeight,
(WORD*)m_xImage.m_xImageList[_IMAGE_PROGUSE].m_pbCurrImage, D3DTEXTR_TRANSPARENTBLACK);
m_lpddsShineTextr[nCnt] = D3DWILTextr_RestoreEx(m_xImage.m_xImageList[_IMAGE_PROGUSE].m_szWilFileName, nCnt+40, g_xMainWnd.Get3DDevice());
}
}
*/
m_xMist.Create();
m_xSnow.InitSystem();
m_xSnow.SetupSystem();
m_xRain.InitSystem();
m_xRain.SetupSystem();
m_xFlyingTail.InitSystem();
m_xFlyingTail.SetupSystem();
m_xSmoke.InitSystem();
m_xSmoke.SetupSystem();
// m_xElec.InitElec();
// m_xElec.SetupElec();
ZeroMemory(m_stMemMappedID, sizeof(MEMMAPPEDID)*_VIEW_CELL_X_COUNT* _VIEW_CELL_Y_COUNT);
SendMessage(g_xChatEditBox.GetSafehWnd(),EM_SETPASSWORDCHAR, NULL, NULL);
g_xChatEditBox.SetLimitText(90);
WORD wShadowClr = g_xMainWnd.ConvertColor24To16(RGB(20, 20, 20));
for ( nCnt = 0; nCnt < 800; nCnt++ )
{
m_wShadowClr[nCnt] = wShadowClr;
}
m_xMap.LoadMapImage(&m_xImage);
SetTimer(g_xMainWnd.GetSafehWnd(), WM_USER + 5000, 10, NULL); // Temp
}
/******************************************************************************************************************
窃荐疙 : CGameProcess::LoadMapChanged()
累己磊 :
累己老 :
格利 : 甘捞 官差菌阑锭 皋葛府 秦力客 积己, 棺 单捞鸥 肺靛.
涝仿 : CHAR* szMap
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CGameProcess::LoadMapChanged(CHAR* szMap)
{
m_xMap.LoadMapData(szMap);
ZeroMemory(m_stMemMappedID, sizeof(MEMMAPPEDID)*_VIEW_CELL_X_COUNT* _VIEW_CELL_Y_COUNT);
}
VOID CGameProcess::SetNextProc()
{
DeleteProc();
g_xClientSocket.m_pxDefProc = g_xMainWnd.m_pxDefProcess = &g_xLoginProc;
g_xLoginProc.Load();
g_bProcState = _LOGIN_PROC;
/* g_xMainWnd.m_pxDefProcess = &g_xChrSelProc;
g_xChrSelProc.Load();
g_bProcState = _CHAR_SEL_PROC;
g_xChrSelProc.OnBeforeSelectChar();
*/
}
BOOL CGameProcess::TargetInLongAttack(BYTE bDir)
{
INT nCnt;
POINT ptLongTarget;
if ( !m_xMap.GetNextTileCanMove(m_xMyHero.m_wPosX, m_xMyHero.m_wPosY, bDir, 2, &ptLongTarget) )
{
CActor* pxActor;
m_xActorList.MoveCurrentToTop();
for ( nCnt = 0; nCnt < m_xActorList.GetCounter(); nCnt++)
{
pxActor = m_xActorList.GetCurrentData();
if ( pxActor->m_wPosX == ptLongTarget.x && pxActor->m_wPosY == ptLongTarget.y )
{
return TRUE;
}
m_xActorList.MoveNextNode();
}
}
return FALSE;
}
VOID CGameProcess::CheckMappedData(INT nLoopTime, BOOL bIsMoveTime)
{
INT nCnt, nObjCnt;
BOOL bIsSaveTargetExisted = FALSE;
BOOL bFocused;
ZeroMemory(m_stMemMappedID, sizeof(MEMMAPPEDID)*_VIEW_CELL_X_COUNT* _VIEW_CELL_Y_COUNT);
CActor* pxActor = NULL;
CActor* pxDeadTargetActor = NULL;
m_xActorList.MoveCurrentToTop();
for ( nCnt = 0; nCnt < m_xActorList.GetCounter(); )
{
pxActor = m_xActorList.GetCurrentData();
if ( !pxActor )
continue;
switch ( pxActor->m_stFeature.bGender )
{
case _GENDER_MAN:
case _GENDER_WOMAN:
{
CHero* pxHero;
pxHero = (CHero*)pxActor;
pxHero->UpdateMotionState(nLoopTime, bIsMoveTime);
m_xActorList.MoveNextNode();
nCnt++;
}
break;
case _GENDER_NPC:
{
CNPC* pxNPC;
pxNPC = (CNPC*)pxActor;
pxNPC->UpdateMotionState(nLoopTime, bIsMoveTime);
m_xActorList.MoveNextNode();
nCnt++;
}
break;
case _GENDER_MON:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -