📄 gameproc.cpp
字号:
{
CNPC* pxNPC;
pxNPC = (CNPC*)pxActor;
pxNPC->DrawActor(&m_xMap, bFocused, m_bShadowABlend, TRUE, bDrawShadow);
}
break;
case _GENDER_MON:
{
pxActor->DrawActor(&m_xMap, bFocused, m_bShadowABlend, TRUE, bDrawShadow);
/* // 富老锭.
RECT rc, rcIntersect;
// if ( bLongObj && pxActor->m_wPosY <= nYCnt && pxActor->m_stFeature.bDress > 114 && pxActor->m_stFeature.bDress < 118 )
{
SetRect(&rc,
(nXCnt-m_xMap.m_shStartViewTileX)*_CELL_WIDTH +_VIEW_CELL_X_START-m_xMap.m_shViewOffsetX,
(nYCnt-m_xMap.m_shStartViewTileY)*_CELL_HEIGHT+_VIEW_CELL_Y_START-m_xMap.m_pxTileImg[nObjFileIdx]->m_lpstNewCurrWilImageInfo->shHeight+_CELL_HEIGHT-m_xMap.m_shViewOffsetY,
m_xMap.m_pxTileImg[nObjFileIdx]->m_lpstNewCurrWilImageInfo->shWidth + (nXCnt-m_xMap.m_shStartViewTileX)*_CELL_WIDTH +_VIEW_CELL_X_START-m_xMap.m_shViewOffsetX,
m_xMap.m_pxTileImg[nObjFileIdx]->m_lpstNewCurrWilImageInfo->shHeight + (nYCnt-m_xMap.m_shStartViewTileY)*_CELL_HEIGHT+_VIEW_CELL_Y_START-m_xMap.m_pxTileImg[nObjFileIdx]->m_lpstNewCurrWilImageInfo->shHeight+_CELL_HEIGHT-m_xMap.m_shViewOffsetY);
// 富苞硅版.
if ( IntersectRect(&rcIntersect, &rc, &pxActor->m_rcActor) )
{
m_xImage.m_xImageList[pxActor->m_bActorImgIdx].NewSetIndex(pxActor->m_dwCurrFrame);
g_xMainWnd.DrawWithABlendForIntersectCompData(
pxActor->m_rcActor.left,
pxActor->m_rcActor.top,
m_xImage.m_xImageList[pxActor->m_bActorImgIdx].m_lpstNewCurrWilImageInfo->shWidth,
m_xImage.m_xImageList[pxActor->m_bActorImgIdx].m_lpstNewCurrWilImageInfo->shHeight,
(WORD*)m_xImage.m_xImageList[pxActor->m_bActorImgIdx].m_pbCurrImage,
rc.left,
rc.top,
m_xMap.m_pxTileImg[nObjFileIdx]->m_lpstNewCurrWilImageInfo->shWidth,
m_xMap.m_pxTileImg[nObjFileIdx]->m_lpstNewCurrWilImageInfo->shHeight,
(WORD*)m_xMap.m_pxTileImg[nObjFileIdx]->m_pbCurrImage,
_CLIP_WIDTH, _CLIP_HEIGHT, 50, bFocused, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, m_xMyHero.m_wStateClr);
}
}
*/ }
break;
}
bFocused = FALSE;
}
else
break;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if ( bIsMapViewTime )
{
for ( nObjCnt = 0; nObjCnt < _MAX_CELL_OBJ; nObjCnt++ )
{
CMagic* pxMagic = m_stMemMappedID[nMapViewY][nMapViewX].pxMagic[nObjCnt];
if ( pxMagic )
{
if ( pxMagic->m_bMagicNum == _SKILL_HOLYSHIELD || pxMagic->m_bMagicNum == _SKILL_EARTHFIRE )
{
CRepeatMagic* pxRepeatMagic = (CRepeatMagic*)pxMagic;
pxRepeatMagic->DrawMagic();
}
else if ( pxMagic->m_bMagicNum == _SKILL_FIRE )
{
CMagicStream* pxMagicStream = (CMagicStream*)pxMagic;
pxMagicStream->DrawMagic();
}
}
else
break;
}
}
}
}
bDrawShadow = FALSE;
if ( m_bShadowABlend )
bDrawShadow = TRUE;
m_xMyHero.m_wABlendDelay = 10;
m_xMyHero.m_wABlendCurrDelay = 5;
m_xMyHero.DrawActor(FALSE, m_bShadowABlend, FALSE, bDrawShadow);
m_xMyHero.m_wABlendDelay = 0;
m_xMyHero.m_wABlendCurrDelay = 0;
if ( m_pxMouseTargetActor && m_pxMouseTargetActor != &m_xMyHero /*&& !m_pxMouseTargetActor->m_bIsDead*/ )
{
m_pxMouseTargetActor->m_wABlendDelay = 10;
m_pxMouseTargetActor->m_wABlendCurrDelay = 4;
m_pxMouseTargetActor->DrawActor(&m_xMap, FALSE, m_bShadowABlend, FALSE, bDrawShadow);
m_pxMouseTargetActor->m_wABlendDelay = 0;
m_pxMouseTargetActor->m_wABlendCurrDelay = 0;
}
}
/******************************************************************************************************************
皋矫瘤 包访 窃荐.
*******************************************************************************************************************/
LRESULT CGameProcess::OnDestroy(WPARAM wParam, LPARAM lParam)
{
m_xInterface.m_xInventoryWnd.SaveItemPos(m_xMyHero.m_szName);
return 0L;
}
LRESULT CGameProcess::OnTimer(WPARAM wParam, LPARAM lParam)
{
if ( wParam == _TIMER_ID )
{
DWORD dwFogColor;
FLOAT fDstDarkRate;
switch ( m_bFogState )
{
case _FOGSTATE_DAWN:
{
fDstDarkRate = 50;
}
break;
case _FOGSTATE_DAY:
{
fDstDarkRate = 255;
}
break;
case _FOGSTATE_NIGHT:
{
fDstDarkRate = 10;
}
break;
}
if ( m_fDarkRate > fDstDarkRate ) m_fDarkRate -= 0.5f;
else if ( m_fDarkRate < fDstDarkRate ) m_fDarkRate += 0.5f;
else
{
KillTimer(g_xMainWnd.GetSafehWnd(), _TIMER_ID);
}
dwFogColor = RGB(m_fDarkRate, m_fDarkRate, m_fDarkRate);
m_xLightFog.ChangeLightColor(dwFogColor);
}
else // Temp
{
if (PacketQ.GetCount())
{
char *pszPacket = (char*)PacketQ.PopQ();
if (pszPacket)
{
strcpy(&szBuff[nBuff], pszPacket);
char *pszRemain = OnMessageReceive(szBuff);
if (pszRemain)
{
nBuff = strlen(pszRemain);
memcpy(szBuff, pszRemain, nBuff);
szBuff[nBuff] = '\0';
}
else
{
nBuff = 0;
ZeroMemory(szBuff, sizeof(szBuff));
}
delete [] pszPacket;
}
}
ProcessPacket();
ProcessDefaultPacket();
}
return 0L;
}
LRESULT CGameProcess::OnLButtonDoubleClick(WPARAM wParam, LPARAM lParam)
{
m_ptMousePos.x = LOWORD(lParam);
m_ptMousePos.y = HIWORD(lParam);
m_xInterface.OnLButtonDoubleClick(m_ptMousePos);
return 0L;
}
LRESULT CGameProcess::OnWheel(WPARAM wParam, LPARAM lParam)
{
INT nDelta;
nDelta = ( (INT)wParam < 0 ) ? -1 : 1;
if ( nDelta > 0 )
m_xInterface.OnScrollDown();
else
m_xInterface.OnScrollUp();
return 0L;
}
LRESULT CGameProcess::OnSysKeyDown(WPARAM wParam, LPARAM lParam)
{
if ( wParam == VK_RETURN )
{
m_bRender = FALSE;
g_xMainWnd.OnSysKeyDown(wParam, lParam);
SetFocus(g_xChatEditBox.GetSafehWnd());
SetFocus(g_xMainWnd.GetSafehWnd());
for ( INT 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_xImage.DelAllTextrFileList();
m_bRender = TRUE;
}
if ( wParam == VK_F10 )
{
m_xInterface.OnSysKeyDown();
}
return 0L;
}
LRESULT CGameProcess::OnSysKeyUp(WPARAM wParam, LPARAM lParam)
{
return 0L;
}
LRESULT CGameProcess::OnMove(WPARAM wParam, LPARAM lParam)
{
g_xMainWnd.OnMove(wParam, lParam);
MoveWindow(g_xChatEditBox.GetSafehWnd(),
g_xMainWnd.m_rcWindow.left+_INPUT_EDITWND_XPOS,
g_xMainWnd.m_rcWindow.top+_INPUT_EDITWND_YPOS, _INPUT_EDITWND_WIDTH, _INPUT_EDITWND_HEIGHT, TRUE);
return 0L;
}
LRESULT CGameProcess::OnMouseMove(WPARAM wParam, LPARAM lParam)
{
m_ptMousePos.x = LOWORD(lParam);
m_ptMousePos.y = HIWORD(lParam);
m_ptCurrTile.x = m_xMap.m_shStartViewTileX + (m_ptMousePos.x - _VIEW_CELL_X_START) / TILE_WIDTH;
m_ptCurrTile.y = m_xMap.m_shStartViewTileY + (m_ptMousePos.y - _VIEW_CELL_Y_START) / TILE_HEIGHT;
if(m_xNotice.IsActive())
{
m_xNotice.MoveWnd(m_ptMousePos);
}
else
{
m_xInterface.OnMouseMove(m_ptMousePos);
}
return 0L;
}
LRESULT CGameProcess::OnLButtonDown(WPARAM wParam, LPARAM lParam)
{
POINT ptTaretTilePos;
// 霸烙单捞鸥啊 肺靛登菌绰瘤...
if(m_xNotice.IsActive())
{
m_xNotice.OnButtonDown(m_ptMousePos);
}
if ( !m_bRender ) return 0L;
m_pxSavedTargetActor = NULL;
m_ptMousePos.x = LOWORD(lParam);
m_ptMousePos.y = HIWORD(lParam);
m_ptCurrTile.x = m_xMap.m_shStartViewTileX + (m_ptMousePos.x - _VIEW_CELL_X_START) / TILE_WIDTH;
m_ptCurrTile.y = m_xMap.m_shStartViewTileY + (m_ptMousePos.y - _VIEW_CELL_Y_START) / TILE_HEIGHT;
if ( !m_xInterface.OnLButtonDown(m_ptMousePos) )
{
// 牢磐其捞胶俊辑 窍绰老捞 绝阑锭.
// 1. 酒捞袍阑 冻绢哆府扁.
if ( m_xInterface.m_stCommonItem.bSetted && !m_xInterface.m_stCommonItem.bWaitResponse && !m_xInterface.m_stCommonItem.bIsEquipItem )
{
g_xClientSocket.SendItemIndex(CM_DROPITEM, m_xInterface.m_stCommonItem.xItem.m_stItemInfo.nMakeIndex, m_xInterface.m_stCommonItem.xItem.m_stItemInfo.stStdItem.szName);
m_xInterface.m_stCommonItem.bWaitResponse = TRUE;
return 0L;
}
// 2. 甘酒捞袍 凛扁.
if ( m_stMapItemList.GetCounter() != 0 )
{
m_stMapItemList.MoveCurrentToTop();
LPGROUNDITEM pstItem;
for ( INT nCnt = 0; nCnt < m_stMapItemList.GetCounter(); nCnt++ )
{
pstItem = m_stMapItemList.GetCurrentData();
if ( pstItem->shTileX == m_ptCurrTile.x && pstItem->shTileY == m_ptCurrTile.y && pstItem->shTileX == m_xMyHero.m_wPosX && pstItem->shTileY == m_xMyHero.m_wPosY )
{
g_xClientSocket.SendPickUp(pstItem->shTileX, pstItem->shTileY);
return 0L;
}
m_stMapItemList.MoveNextNode();
}
}
if ( m_pxMouseTargetActor )
{
if ( !m_pxMouseTargetActor->m_bIsDead )
{
// 傍拜措惑 Actor沥窍扁.
m_pxSavedTargetActor = m_pxMouseTargetActor;
}
ptTaretTilePos.x = m_pxMouseTargetActor->m_wPosX;
ptTaretTilePos.y = m_pxMouseTargetActor->m_wPosY;
if ( m_pxMouseTargetActor->m_stFeature.bGender == _GENDER_NPC )
{
g_xClientSocket.SendNPCClick(m_pxMouseTargetActor->m_dwIdentity);
m_pxSavedTargetActor = NULL;
}
else
{
m_xMyHero.OnLButtonDown(m_ptMousePos, m_pxMouseTargetActor->m_dwIdentity, m_pxMouseTargetActor->m_bIsDead, &ptTaretTilePos);
}
}
else
{
m_xMyHero.OnLButtonDown(m_ptMousePos);
}
}
return 0L;
}
LRESULT CGameProcess::OnRButtonDown(WPARAM wParam, LPARAM lParam)
{
m_ptMousePos.x = LOWORD(lParam);
m_ptMousePos.y = HIWORD(lParam);
m_ptCurrTile.x = m_xMap.m_shStartViewTileX + (m_ptMousePos.x - _VIEW_CELL_X_START) / TILE_WIDTH;
m_ptCurrTile.y = m_xMap.m_shStartViewTileY + (m_ptMousePos.y - _VIEW_CELL_Y_START) / TILE_HEIGHT;
m_pxSavedTargetActor = NULL;
m_xMyHero.OnRButtonDown(m_ptMousePos);
return 0L;
}
LRESULT CGameProcess::OnLButtonUp(WPARAM wParam, LPARAM lParam)
{
m_ptMousePos.x = LOWORD(lParam);
m_ptMousePos.y = HIWORD(lParam);
m_ptCurrTile.x = m_xMap.m_shStartViewTileX + (m_ptMousePos.x - _VIEW_CELL_X_START) / TILE_WIDTH;
m_ptCurrTile.y = m_xMap.m_shStartViewTileY + (m_ptMousePos.y - _VIEW_CELL_Y_START) / TILE_HEIGHT;
if(m_xNotice.IsActive())
{
if(m_xNotice.OnButtonUp(m_ptMousePos))
{
// OK Button Click
m_xNotice.HideMessageBox();
Clear(RGB(0,0,0));
// Start Game From Here
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -