📄 actor.cpp
字号:
else
m_shShiftPixelX = (_CELL_WIDTH /m_bBackStepFrameCnt * (m_bBackStepFrameCnt - m_bBackStepFrame -1))*m_bMoveSpeed;
if ( m_bBackStepFrame < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = (_CELL_HEIGHT/m_bBackStepFrameCnt * (m_bBackStepFrame+1))*m_bMoveSpeed;
else
m_shShiftPixelY = -(_CELL_HEIGHT/m_bBackStepFrameCnt * (m_bBackStepFrameCnt - m_bBackStepFrame -1))*m_bMoveSpeed;
break;
case _DIRECTION_LIST_7:
if ( m_bBackStepFrame < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = -(_CELL_WIDTH /m_bBackStepFrameCnt * (m_bBackStepFrame+1))*m_bMoveSpeed;
else
m_shShiftPixelX = (_CELL_WIDTH /m_bBackStepFrameCnt * (m_bBackStepFrameCnt - m_bBackStepFrame -1))*m_bMoveSpeed;
m_shShiftPixelY = 0;
break;
case _DIRECTION_LIST_8:
if ( m_bBackStepFrame < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = -(_CELL_WIDTH /m_bBackStepFrameCnt * (m_bBackStepFrame+1))*m_bMoveSpeed;
else
m_shShiftPixelX = (_CELL_WIDTH /m_bBackStepFrameCnt * (m_bBackStepFrameCnt - m_bBackStepFrame -1))*m_bMoveSpeed;
if ( m_bBackStepFrame < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = -(_CELL_HEIGHT/m_bBackStepFrameCnt * (m_bBackStepFrame+1))*m_bMoveSpeed;
else
m_shShiftPixelY = (_CELL_HEIGHT/m_bBackStepFrameCnt * (m_bBackStepFrameCnt - m_bBackStepFrame -1))*m_bMoveSpeed;
break;
}
}
/******************************************************************************************************************
窃荐疙 : CActor::SetMoved()
累己磊 :
累己老 :
格利 :
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CActor::SetMoved()
{
switch ( m_bMoveDir )
{
case _DIRECTION_LIST_1:
m_shShiftTileX = 0;
m_shShiftTileY = -m_bMoveSpeed;
break;
case _DIRECTION_LIST_2:
m_shShiftTileX = m_bMoveSpeed;
m_shShiftTileY = -m_bMoveSpeed;
break;
case _DIRECTION_LIST_3:
m_shShiftTileX = m_bMoveSpeed;
m_shShiftTileY = 0;
break;
case _DIRECTION_LIST_4:
m_shShiftTileX = m_bMoveSpeed;
m_shShiftTileY = m_bMoveSpeed;
break;
case _DIRECTION_LIST_5:
m_shShiftTileX = 0;
m_shShiftTileY = m_bMoveSpeed;
break;
case _DIRECTION_LIST_6:
m_shShiftTileX = -m_bMoveSpeed;
m_shShiftTileY = m_bMoveSpeed;
break;
case _DIRECTION_LIST_7:
m_shShiftTileX = -m_bMoveSpeed;
m_shShiftTileY = 0;
break;
case _DIRECTION_LIST_8:
m_shShiftTileX = -m_bMoveSpeed;
m_shShiftTileY = -m_bMoveSpeed;
break;
}
m_wPosX += m_shShiftTileX;
m_wPosY += m_shShiftTileY;
m_shShiftPixelX = 0;
m_shShiftPixelY = 0;
}
/******************************************************************************************************************
窃荐疙 : CActor::OnCharDescPacket()
累己磊 :
累己老 :
格利 : SM_WALK, SM_DEATH, SM_TURN, SM_RUN, SM_DIGUP 皋矫瘤俊 荤侩茄促.
涝仿 : LPPACKETMSG lpPacketMsg
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CActor::OnCharDescPacket(LPPACKETMSG lpPacketMsg)
{
CHARDESC stCharDesc;
FEATURE stFeature;
fnDecode6BitBuf(lpPacketMsg->szEncodeData, (char*)&stCharDesc, sizeof(CHARDESC));
memcpy(&stFeature, &stCharDesc.nFeature, sizeof(FEATURE));
m_nState = stCharDesc.nStatus;
if( m_nState & 0X2 ) m_bOpenHealth = TRUE;
else m_bOpenHealth = FALSE;
ChangeFeature(stFeature);
}
VOID CActor::OnUserName(LPPACKETMSG lpPacketMsg)
{
INT nPos = fnDecode6BitBuf(lpPacketMsg->szEncodeData, m_szName, sizeof(m_szName));
m_szName[nPos] = '\0';
m_dwNameClr = GetUserNameColor(lpPacketMsg->stDefMsg.wParam);
}
VOID CActor::OnChangeNameClr(LPPACKETMSG lpPacketMsg)
{
m_dwNameClr = GetUserNameColor(lpPacketMsg->stDefMsg.wParam);
}
VOID CActor::OnChangeLight(LPPACKETMSG lpPacketMsg)
{
m_bLightSize = lpPacketMsg->stDefMsg.wParam;
}
VOID CActor::OnOpenHealth(LPPACKETMSG lpPacketMsg)
{
m_bOpenHealth = TRUE;
}
VOID CActor::OnCloseHealth(LPPACKETMSG lpPacketMsg)
{
m_bOpenHealth = FALSE;
}
VOID CActor::OnFeatureChanged(LPPACKETMSG lpPacketMsg)
{
FEATURE stFeature;
LONG nFeature = MAKELONG(lpPacketMsg->stDefMsg.wParam, lpPacketMsg->stDefMsg.wTag);
memcpy(&stFeature, &nFeature, sizeof(LONG));
ChangeFeature(stFeature);
}
VOID CActor::OnHealthSpellChanged(LPPACKETMSG lpPacketMsg)
{
m_wHP = lpPacketMsg->stDefMsg.wParam;
m_wMP = lpPacketMsg->stDefMsg.wTag;
m_wMAXHP = lpPacketMsg->stDefMsg.wSeries;
FLOAT wHPRate = (FLOAT)((FLOAT)m_wHP/(FLOAT)m_wMAXHP);
m_bHPPercent = wHPRate*100;
}
VOID CActor::OnWalk(LPPACKETMSG lpPacketMsg)
{
BYTE bDir;
// m_wPosX = lpPacketMsg->stDefMsg.wParam;
// m_wPosY = lpPacketMsg->stDefMsg.wTag;
bDir = LOBYTE(lpPacketMsg->stDefMsg.wSeries);
m_bLightSize = HIBYTE(lpPacketMsg->stDefMsg.wSeries);
OnCharDescPacket(lpPacketMsg);
SetMotionFrame(_MT_MON_WALK, bDir);
m_bMoveSpeed = _SPEED_WALK;
SetMoving();
}
VOID CActor::OnTurn(LPPACKETMSG lpPacketMsg)
{
BYTE bDir;
m_wPosX = lpPacketMsg->stDefMsg.wParam;
m_wPosY = lpPacketMsg->stDefMsg.wTag;
bDir = LOBYTE(lpPacketMsg->stDefMsg.wSeries);
m_bLightSize = HIBYTE(lpPacketMsg->stDefMsg.wSeries);
// 侥牢檬.
if ( m_stFeature.bDress == 31 )
bDir = 0;
OnCharDescPacket(lpPacketMsg);
SetMotionFrame(_MT_MON_STAND, bDir);
if( m_nState & 0X1 ) // 籍拳惑怕.
{
switch ( m_stFeature.bDress )
{
case 83: //林付脚厘.
case 84: //林付龋过.
case 85: //林付空.
SetMotionFrame(_MT_MON_APPEAR, 0);
m_dwEndFrame = m_dwFstFrame + 1;
m_bCurrMtn = _MT_MON_STAND;
}
}
}
VOID CActor::OnDigup(LPPACKETMSG lpPacketMsg)
{
//MESSAGEBODYWL ????????
BYTE bDir;
m_wPosX = lpPacketMsg->stDefMsg.wParam;
m_wPosY = lpPacketMsg->stDefMsg.wTag;
bDir = LOBYTE(lpPacketMsg->stDefMsg.wSeries);
m_bLightSize = HIBYTE(lpPacketMsg->stDefMsg.wSeries);
OnCharDescPacket(lpPacketMsg);
m_bReverse = FALSE;
switch ( m_stFeature.bDress )
{
case 3:
m_bReverse = TRUE;
break;
case 85: //林付空.
bDir = 0;
break;
case 31: //侥牢檬.
bDir = 0;
m_bReverse = TRUE;
break;
case 56:
{
CMagic* pxMagic;
pxMagic = new CMagic;
pxMagic->CreateMagic(_SKILL_SKELLETON, m_wPosX, m_wPosY, m_wPosX, m_wPosY, NULL, 0);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
break;
}
/* case 89:
{
CMagic* pxMagic;
pxMagic = new CMagic;
pxMagic->CreateMagic(_SKILL_SINSU, m_wPosX, m_wPosY, m_wPosX, m_wPosY, NULL, 0);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
break;
}
*/ }
m_bAppearState = _DIG_UP;
SetMotionFrame(_MT_MON_APPEAR, bDir);
}
VOID CActor::OnDigDown(LPPACKETMSG lpPacketMsg)
{
BYTE bDir;
m_wPosX = lpPacketMsg->stDefMsg.wParam;
m_wPosY = lpPacketMsg->stDefMsg.wTag;
bDir = m_bCurrDir;
m_bReverse = TRUE;
switch ( m_stFeature.bDress )
{
case 3:
m_bReverse = FALSE;
break;
case 31: //侥牢檬.
bDir = 0;
m_bReverse = FALSE;
break;
}
m_bAppearState = _DIG_DOWN;
SetMotionFrame(_MT_MON_APPEAR, bDir);
}
VOID CActor::OnDeath(LPPACKETMSG lpPacketMsg)
{
BYTE bDir;
m_wPosX = lpPacketMsg->stDefMsg.wParam;
m_wPosY = lpPacketMsg->stDefMsg.wTag;
bDir = lpPacketMsg->stDefMsg.wSeries;
OnCharDescPacket(lpPacketMsg);
SetMotionFrame(_MT_MON_DIE, bDir);
if ( lpPacketMsg->stDefMsg.wIdent == SM_DEATH )
{
m_dwCurrFrame = m_dwEndFrame - 1;
m_bIsDead = TRUE;
}
else
{
// 阁胶磐老锭.
if ( m_stFeature.bGender == _GENDER_MON )
{
CMagic* pxMagic;
switch ( m_stFeature.bDress )
{
case 4: // 籍厘牢.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_EXPLODE1, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
break;
case 5: // 官捻啊福唱.
case 6: // 官磊匡.
case 11: // 葛叼怜.
case 19: // 饭叼啊福唱.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_SINGI_DIE, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
/* LoadEffect(&g_xGameProc.m_xImage, _MONMAGIC_DIE);
m_bUseSwordEffect = TRUE;
*/ break;
case 40: // 倾荐酒厚.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_HUSU_DIE, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
/* LoadEffect(&g_xGameProc.m_xImage, _MONMAGIC_HUSU_DIE);
m_bUseSwordEffect = TRUE;
*/ break;
case 48: // 粱厚.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_ZOMBIE_DIE, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
/* LoadEffect(&g_xGameProc.m_xImage, _MONMAGIC_ZOMBIE_DIE);
m_bUseSwordEffect = TRUE;
*/ break;
case 99: // 官坷崔靛.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_BAODIE, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
break;
default :
break;
}
}
}
}
VOID CActor::OnBackStep(LPPACKETMSG lpPacketMsg)
{
BYTE bDir;
bDir = lpPacketMsg->stDefMsg.wSeries;
m_wPosX = lpPacketMsg->stDefMsg.wParam;
m_wPosY = lpPacketMsg->stDefMsg.wTag;
SetMotionFrame(_MT_MON_WALK, bDir);
if ( m_bCurrDir < 4 ) m_bMoveDir = m_bCurrDir + 4;
else m_bMoveDir = m_bCurrDir - 4;
m_bMoveSpeed = _SPEED_WALK;
m_bBackStepFrame = 0;
m_bBackStepFrameCnt = 6;
SetBackStepMoving();
}
VOID CActor::OnStruck(LPPACKETMSG lpPacketMsg)
{
MESSAGEBODYWL stMsgBodyWl;
FEATURE stFeature;
FLOAT wHPRate = (FLOAT)((FLOAT)lpPacketMsg->stDefMsg.wParam/(FLOAT)lpPacketMsg->stDefMsg.wTag);
WORD wDamage = lpPacketMsg->stDefMsg.wSeries;
m_wHP = lpPacketMsg->stDefMsg.wParam;
m_wMAXHP = lpPacketMsg->stDefMsg.wTag;
m_bHPPercent = wHPRate*100;
fnDecode6BitBuf(lpPacketMsg->szEncodeData, (char*)&stMsgBodyWl, sizeof(MESSAGEBODYWL));
memcpy(&stFeature, &stMsgBodyWl.lParam1, sizeof(LONG));
ChangeFeature(stFeature);
SetMotionFrame(_MT_MON_HITTED, m_bCurrDir);
// 阁胶磐老锭.
if ( m_stHitter.bGender == _GENDER_MON )
{
CMagic* pxMagic;
switch ( m_stHitter.bDress )
{
case 2: // 纳迫肺橇.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_KEPAL, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
break;
case 8: // 癌林俺固.
case 14: // 捍侩俺固.
case 16: // 靛抄俺固.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_GREATANT, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
break;
case 67: // 盟锋脚.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_BIGGINE_CHAR, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
break;
default :
break;
}
}
ZeroMemory(&m_stHitter, sizeof(FEATURE));
}
VOID CActor::OnLighting(LPPACKETMSG lpPacketMsg)
{
WORD wTargetX, wTargetY;
INT nTargetID;
CMagic* pxMagic;
m_wPosX = lpPacketMsg->stDefMsg.wParam;
m_wPosY = lpPacketMsg->stDefMsg.wTag;
m_bCurrDir = lpPacketMsg->stDefMsg.wSeries;
MESSAGEBODYWL stMsgBodyWl;
fnDecode6BitBuf(lpPacketMsg->szEncodeData, (char*)&stMsgBodyWl, sizeof(MESSAGEBODYWL));
wTargetX = stMsgBodyWl.lParam1;
wTargetY = stMsgBodyWl.lParam2;
nTargetID = MAKELONG(stMsgBodyWl.nTag1, stMsgBodyWl.nTag2);
switch ( m_stFeature.bDress )
{
case 48: // 粱厚. 8规氢.
pxMagic = new CMagic;
pxMagic->CreateMagic(_MONMAGIC_ZOMBIE, m_wPosX, m_wPosY, m_wPosX, m_wPosY, this, nTargetID);
g_xGameProc.m_xMagicList.AddNode(pxMagic);
SetMotionFrame(_MT_MON_ATTACK_A, m_bCurrDir);
break;
}
}
VOID CActor::OnFlyAxe(LPPACKETMSG lpPacketMsg)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -