📄 actor.cpp
字号:
if ( /*stFeature.bGender >= 0 && stFeature.bGender < _MAX_GENDER && */CheckFeatureValidate(stFeature) )
{
switch ( stFeature.bGender )
{
case _GENDER_MAN:
{
if ( stFeature.bDress < 0 && stFeature.bDress >= _MAX_HERO_KIND )
return FALSE;
else
{
m_bActorImgIdx = _IMAGE_M_HUMAN;
m_dwFstFrame = g_xSpriteInfo.m_stHeroSpr[m_bCurrMtn].wFstFrm + stFeature.bDress*_MAX_HERO_FRAME + m_bCurrDir*10;
m_dwEndFrame = m_dwFstFrame + g_xSpriteInfo.m_stHeroSpr[m_bCurrMtn].wFrmCnt;
m_wDelay = g_xSpriteInfo.m_stHeroSpr[m_bCurrMtn].wDelay;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
stFeature.bHair = 2;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
break;
case _GENDER_WOMAN:
{
if ( stFeature.bDress < 0 && stFeature.bDress >= _MAX_HERO_KIND )
return FALSE;
else
{
m_bActorImgIdx = _IMAGE_WM_HUMAN;
m_dwFstFrame = g_xSpriteInfo.m_stHeroSpr[m_bCurrMtn].wFstFrm + stFeature.bDress*_MAX_HERO_FRAME + m_bCurrDir*10;
m_dwEndFrame = m_dwFstFrame + g_xSpriteInfo.m_stHeroSpr[m_bCurrMtn].wFrmCnt;
m_wDelay = g_xSpriteInfo.m_stHeroSpr[m_bCurrMtn].wDelay;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
stFeature.bHair = 2;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
break;
case _GENDER_MON:
{
if ( stFeature.bDress < 0 && stFeature.bDress >= _MAX_MON_KIND )
return FALSE;
else
{
g_xSpriteInfo.SetMonFrameInfo(stFeature.bDress);
m_bActorImgIdx = _IMAGE_MONSTER1 + (stFeature.bDress/10);
m_dwFstFrame = g_xSpriteInfo.m_stMonSpr[m_bCurrMtn].wFstFrm + (stFeature.bDress%10)*_MAX_MON_FRAME + m_bCurrDir*10;
m_dwEndFrame = m_dwFstFrame + g_xSpriteInfo.m_stMonSpr[m_bCurrMtn].wFrmCnt;
m_wDelay = g_xSpriteInfo.m_stMonSpr[m_bCurrMtn].wDelay;
}
}
break;
// NPC绰 橇饭烙捞 老沥窍瘤 臼栏骨肺 蝶肺 利侩矫挪促.
case _GENDER_NPC:
default:
return FALSE;
}
m_stFeature = stFeature;
m_pxActorImage = &(pxImgHandler->m_xImageList[m_bActorImgIdx]);
m_dwCurrFrame = m_dwFstFrame;
return TRUE;
}
return FALSE;
}
/******************************************************************************************************************
窃荐疙 : CActor::SetMotionFrame()
累己磊 :
累己老 :
格利 :
涝仿 : BYTE bMtn
BYTE bDir
免仿 : BOOL
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
BOOL CActor::SetMotionFrame(BYTE bMtn, BYTE bDir)
{
if ( /*(bMtn < 0 && bMtn >= _MAX_HERO_MTN) || */(bDir < 0 && bDir >= _MAX_DIRECTION) )
return FALSE;
switch ( m_stFeature.bGender )
{
case _GENDER_MAN:
{
m_dwFstFrame = g_xSpriteInfo.m_stHeroSpr[bMtn].wFstFrm + m_stFeature.bDress*_MAX_HERO_FRAME + bDir*10;
m_dwEndFrame = m_dwFstFrame + g_xSpriteInfo.m_stHeroSpr[bMtn].wFrmCnt;
m_wDelay = g_xSpriteInfo.m_stHeroSpr[bMtn].wDelay;
}
break;
case _GENDER_WOMAN:
{
m_dwFstFrame = g_xSpriteInfo.m_stHeroSpr[bMtn].wFstFrm + m_stFeature.bDress*_MAX_HERO_FRAME + bDir*10;
m_dwEndFrame = m_dwFstFrame + g_xSpriteInfo.m_stHeroSpr[bMtn].wFrmCnt;
m_wDelay = g_xSpriteInfo.m_stHeroSpr[bMtn].wDelay;
}
break;
case _GENDER_MON:
{
if ( m_stFeature.bDress == 31 && bMtn == _MT_MON_STAND )
bDir = 0;
switch ( m_stFeature.bDress )
{
case 31: // 侥牢檬.
case 67: // 盟锋脚.
case 73: // 厚阜盔面.
case 104: // 利岿付.
bDir = 0;
case 106: // 气救芭固.
bDir = 1;
break;
default:
break;
}
g_xSpriteInfo.SetMonFrameInfo(m_stFeature.bDress);
m_dwFstFrame = g_xSpriteInfo.m_stMonSpr[bMtn].wFstFrm + (m_stFeature.bDress%10)*_MAX_MON_FRAME + bDir*10;
m_dwEndFrame = m_dwFstFrame + g_xSpriteInfo.m_stMonSpr[bMtn].wFrmCnt;
m_wDelay = g_xSpriteInfo.m_stMonSpr[bMtn].wDelay;
}
break;
case _GENDER_NPC:
{
bDir++; // bDir篮 0捞 瞪荐档 乐扁锭巩捞促.
bDir = bDir/3;
m_dwFstFrame = g_xSpriteInfo.m_stNPCSpr[bMtn].wFstFrm + m_stFeature.bDress*_MAX_NPC_FRAME + bDir*10;
m_dwEndFrame = m_dwFstFrame + g_xSpriteInfo.m_stNPCSpr[bMtn].wFrmCnt;
m_wDelay = g_xSpriteInfo.m_stNPCSpr[bMtn].wDelay;
}
break;
default:
return FALSE;
}
m_bCurrMtn = bMtn;
m_bCurrDir = bDir;
m_bMoveDir = bDir;
m_dwCurrFrame = m_dwFstFrame;
m_wCurrDelay = 0;
if ( m_bCurrDir == _DIRECTION_LIST_8 )
m_bMoveNextFrmCnt = 2;
else
m_bMoveNextFrmCnt = 5;
return TRUE;
}
VOID CActor::PlayActSound()
{
INT nWaveNum = -1;
const INT nActorSndTbl[100] =
{
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0 - 9
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 10 - 19
160, 161, 100, 101, 102, 163, 0, 162, 83, 80, // 20 - 29
1, 10, 20, 21, 22, 23, 150, 24, 25, 26, // 30 - 39
27, 30, 32, 31, 151, 34, 28, 18, 40, 50, // 40 - 49
51, 52, 53, 152, 36, 72, 37, 38, 43, 44, // 50 - 59
45, 48, 49, 90, 91, 70, 73, 140, 74, 120, // 60 - 69
121, 81, 82, 41, 42, 39, 110, 111, 112, 130, // 70 - 79
164, 46, 47, 61, 62, 63, 71, -1, -1, 170, // 80 - 89
171, 33, -1, -1, -1, -1, -1, -1, -1, -1, // 90 - 99
};
if ( m_dwCurrFrame == m_dwFstFrame+1 && m_bCurrMtn == _MT_MON_APPEAR ) // 唱鸥唱扁.
{
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10;
}
else if ( (m_dwCurrFrame == m_dwFstFrame+1) && (m_bCurrMtn == _MT_MON_STAND || _MT_MON_WALK) ) // 肛苗乐扁.
{
INT nRand = rand();
if ( m_bFstSoundPlayed && !m_bIsDead )
{
if ( !(nRand%25) )
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10 + 1;
else
nWaveNum = -1;
}
else
{
if ( !(nRand%3) && !m_bIsDead )
{
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10 + 1;
m_bFstSoundPlayed = TRUE;
}
else
nWaveNum = -1;
}
}
else if ( m_dwCurrFrame == m_dwFstFrame+1 && m_bCurrMtn == _MT_MON_ATTACK_A ) // 老馆傍拜1.
{
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10 + 2;
}
else if ( m_dwCurrFrame == m_dwFstFrame+2 && m_bCurrMtn == _MT_MON_ATTACK_A ) // 老馆傍拜1.
{
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10 + 3;
}
else if ( m_dwCurrFrame == m_dwFstFrame+1 && m_bCurrMtn == _MT_MON_HITTED )
{
if ( m_stFeature.bGender < 2 )
{
switch ( m_stHitter.bWeapon )
{
case 21: case 24: // 窜八, 厚窜八.
case 8: case 9: // 格八, 酒府荐格八.
case 18: case 22: case 23: case 26: case 27: case 28: case 30: // 荤葛八. 没悼八. 枚八. 没澜八. 寒荤八. 玫飞. 邦己八.
case 1: case 4: case 11: case 13: case 14: case 20: case 25: case 29: case 31: // 蜡岿档. 宫没措档. 腊钦档. 焙档. 档锋焊档. 荤阿档. 技梅档. 抗档. 檬去档.
nWaveNum = 70;
break;
case 5: case 10: case 12: // 伙利措何. 没悼档尝. 楷磊何.
case 15: // 颇锄柳寸.
nWaveNum = 71;
break;
case 2: case 3: case 6: case 7: case 16: case 17: case 19: // 伙瘤芒. 玫屈格. 全酒芒. 邦豹捞. 没付芒, 侩酒厘. 力付豪
nWaveNum = 72;
break;
default:
nWaveNum = 73; // 盖颊.
break;
}
}
}
else if ( m_dwCurrFrame == m_dwFstFrame+2 && m_bCurrMtn == _MT_MON_HITTED ) // 嘎扁.
{
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10 + 4;
}
else if ( m_dwCurrFrame == m_dwFstFrame+2 && m_bCurrMtn == _MT_MON_DIE ) // 磷扁1.
{
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10 + 5;
}
else if ( m_dwCurrFrame == m_dwFstFrame+3 && m_bCurrMtn == _MT_MON_DIE ) // 磷扁2.
{
nWaveNum = 200 + nActorSndTbl[m_stFeature.bDress]*10 + 6;
}
/* if ( nWaveNum != -1 )
g_xSound.PlayActorWav(m_wPosX, m_wPosY, g_xGameProc.m_xMyHero.m_wPosX, g_xGameProc.m_xMyHero.m_wPosY, nWaveNum);
*/
}
/******************************************************************************************************************
窃荐疙 : CActor::SetMoving()
累己磊 :
累己老 :
格利 :
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CActor::SetMoving()
{
WORD wFrmCnt = m_dwEndFrame - m_dwFstFrame;
WORD wCurrFrm = m_dwCurrFrame - m_dwFstFrame;
switch ( m_bMoveDir )
{
case _DIRECTION_LIST_1:
m_shShiftPixelX = 0;
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = -(_CELL_HEIGHT/wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelY = (_CELL_HEIGHT/wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
break;
case _DIRECTION_LIST_2:
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = (_CELL_WIDTH /wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelX = -(_CELL_WIDTH /wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = -(_CELL_HEIGHT/wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelY = (_CELL_HEIGHT/wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
break;
case _DIRECTION_LIST_3:
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = (_CELL_WIDTH /wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelX = -(_CELL_WIDTH /wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
m_shShiftPixelY = 0;
break;
case _DIRECTION_LIST_4:
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = (_CELL_WIDTH /wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelX = -(_CELL_WIDTH /wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = (_CELL_HEIGHT/wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelY = -(_CELL_HEIGHT/wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
break;
case _DIRECTION_LIST_5:
m_shShiftPixelX = 0;
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = (_CELL_HEIGHT/wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelY = -(_CELL_HEIGHT/wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
break;
case _DIRECTION_LIST_6:
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = -(_CELL_WIDTH /wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelX = (_CELL_WIDTH /wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = (_CELL_HEIGHT/wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelY = -(_CELL_HEIGHT/wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
break;
case _DIRECTION_LIST_7:
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = -(_CELL_WIDTH /wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelX = (_CELL_WIDTH /wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
m_shShiftPixelY = 0;
break;
case _DIRECTION_LIST_8:
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = -(_CELL_WIDTH /wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelX = (_CELL_WIDTH /wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
if ( wCurrFrm < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelY = -(_CELL_HEIGHT/wFrmCnt * (wCurrFrm+1))*m_bMoveSpeed;
else
m_shShiftPixelY = (_CELL_HEIGHT/wFrmCnt * (wFrmCnt - wCurrFrm -1))*m_bMoveSpeed;
break;
}
}
/******************************************************************************************************************
窃荐疙 : CActor::SetBackStepMoving()
累己磊 :
累己老 :
格利 :
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CActor::SetBackStepMoving()
{
switch ( m_bMoveDir )
{
case _DIRECTION_LIST_1:
m_shShiftPixelX = 0;
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_2:
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;
case _DIRECTION_LIST_3:
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_4:
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;
case _DIRECTION_LIST_5:
m_shShiftPixelX = 0;
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_6:
if ( m_bBackStepFrame < (6-m_bMoveNextFrmCnt) )
m_shShiftPixelX = -(_CELL_WIDTH /m_bBackStepFrameCnt * (m_bBackStepFrame+1))*m_bMoveSpeed;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -