把锁定功能修改为只生效一次

来源:互联网 发布:ajax获取servlet数据 编辑:程序博客网 时间:2024/05/17 03:07

/////程序流程

//////////////////////GameWorld.__UpdateInputEvent 

if (hge->Input_KeyUp(HGEK_S))

{
pKeyManager->OnLockIsRelease(true);

}


//////////////////

void dteKeyManager::OnLockIsRelease(bool _bLock)
{
if ( nSelfID >= 0 && nSelfID < g_World->GetMaxPlayerCount() )
{
dtePlayer *player = g_World->GetPlayer( nSelfID );

bLock = !bLock;


if ( bLock )
{
player->OnDownIsDown();
}
else
{
player->OnDownIsReleased();
}
}
}


void dtePlayer::OnDownIsDown()
{
if ( enable && bEnableKey )
{
pTurret->OnLockStart();
}
}


void dteTurret::OnLockStart()
{
// 进入锁定高分怪状态
if ( !bLockHighScoreFish )
{
bLockHighScoreFish = true;
pLockState->EnterLockHighScoreFish();
}
}



void dteLockState::Update( float dt )
{

if ( bLockHighScoreFish )
{
//
if ( !bLockFlagArrived )
{
if ( pLockTargetNpc )
{
LockFlagTargetPos = *(pLockTargetNpc->GetPosition());
}
if ( Trace( &LockFlagCurPos, LockFlagTargetPos, fLockFlagMoveSpeed*dt ) )
{
bLockFlagArrived = true;
}
}
else
{
if ( pLockTargetNpc )
{
LockFlagCurPos = LockFlagTargetPos = *(pLockTargetNpc->GetPosition());
}
else
{
LockFlagCurPos= LockFlagTargetPos = TurretPos;
bShowLockFlag = false;
}
}


if ( bLockHighScoreFish )
{
bool bChangeLockTarget = false;
if ( !pLockTargetNpc || !pLockTargetNpc->IsEnabled() )
{
bChangeLockTarget = true;
}
if ( __IsLockFlagOutRange() )
{
bChangeLockTarget = true;
}
if ( bChangeLockTarget )
{
pLockTargetNpc = NULL;
pLockTargetLogo = NULL;
//__ChangeLockHighScoreFish();//此注释掉的是当锁定的鱼消失后重锁定鱼

dtePlayer *pPlayer = g_World->GetPlayer( nPlayerID );
if (pPlayer&&!pPlayer->IsAI())
{
g_World->GetKeyManager()->OnLockIsRelease(true);//自己添加的解锁鱼状态
}

}
}
}
else
{
if ( Trace( &LockFlagCurPos, LockFlagTargetPos, fLockFlagMoveSpeed*dt ) )
{
bLockFlagArrived= true;
bShowLockFlag = false;
}
}


//
if ( bShowLockFlag )
{
hgeVector dir = LockFlagCurPos - TurretPos;
float length = dir.Length();
float angle = dir.Angle();
nElementNum = (int)length/64;
for ( int i = 0; i < nElementNum; i ++ )
{
hgeVector pos, outPos;
pos = TurretPos;
pos.x += (i+1)*64.0f;
Rotate( TurretPos, pos, outPos, angle );
LockLineElementPos[i] = outPos;
}
}
}

0 0
原创粉丝点击