コード例 #1
0
ファイル: GCastle.cpp プロジェクト: daoopp/WebGame
void GCastle::ReceveAttack(gint32 iDamage)
{
	if( mCastleStateFlag == eDestroy )
		return;
	
	mCurrentHP -= iDamage;
	if( GetCurrentHP() <= 0 )
	{
		mCastleStateFlag = eDestroy;
		SetCurrentState();
		return;
	}
	else if( GetCurrentHP() < GetHP() / 2 )
	{
		mCastleStateFlag = eBreak;
		SetCurrentState();
	}	
	GetCastleGege()->SetProgressPercent( (float)GetCurrentHP() / (float)GetHP() * 100.0f );
	
	if( mIsDamage == false )
	{
		mIsDamage = true;
		mpTopDamageEffect->SetVisible( true );
		mpBottomDamageEffect->SetVisible( true );
		GnTimeController::StartTimeControllers( mpTopDamageEffect );
		GnTimeController::StartTimeControllers( mpBottomDamageEffect );
	}
}
コード例 #2
0
void CIdleEnemy::Update(float fElapsedTime)
{
	CBaseEnemy::Update(fElapsedTime);

	if(GetCurrentHP() <= 0)
		ChangeAIState(iDead);
	else
	{
		tVector2D Result;
		Result.fX = GetTargetPosition().fX - GetPosX();
		Result.fY = GetTargetPosition().fY - GetPosY();

		int Distance = int(sqrt(Result.fX*Result.fX + Result.fY*Result.fY));

		if(Distance <= GetSightRange())
		{
			ChangeAIState(iActive);
		}
		else
			ChangeAIState(Idle);
	}
	if( ReturnAIState() == iDead )
	{
	}
}
コード例 #3
0
ファイル: GCastle.cpp プロジェクト: daoopp/WebGame
void GCastle::UpdateHP(float fTime)
{
	if( mAutoRecoveryHPTimer.Update( fTime ) )
	{
		SetCurrentHP( GetCurrentHP() + GetAutoRecoveryHP() );
		mAutoRecoveryHPTimer.Reset();
	}
}
コード例 #4
0
void CPatrolEnemy::Update(float fElapsedTime)
{
	CBaseEnemy::Update(fElapsedTime);

	if(GetCurrentHP() <= 0)
		ChangeAIState(pDead);
	else
	{
		tVector2D Result;
		Result.fX = GetTargetPosition().fX - GetPosX();
		Result.fY = GetTargetPosition().fY - GetPosY();

		float Distance = sqrt(Result.fX*Result.fX + Result.fY*Result.fY);

		if(Distance <= GetSightRange())
		{
			ChangeAIState(pActive);
			this->ReturnAIState();
		}
		else
			ChangeAIState(Patrol);

		switch(ReturnAIState())
		{
		case Patrol:
			{
				SetPosX((GetPosX() + GetBaseVelX() * fElapsedTime));

				if(GetPosX() <= 0)
				{
					SetPosX(0);
					SetCurrentDist(0);
					SetSpeed(-1*GetSpeed());
				}

				SetCurrentDist(GetCurrentDist() + (fabs(GetBaseVelX()) * fElapsedTime));

				if(GetCurrentDist() >= GetMaxDist())
				{
					SetCurrentDist(0);
					SetSpeed(-1*GetSpeed());
				}

				SetBaseVelX(GetBaseVelX() + GetSpeed() * fElapsedTime);

				if(GetBaseVelX() > 50)
					SetBaseVelX(50);
				else if(GetBaseVelX() < -50)
					SetBaseVelX(-50);
			}
			break;
		case pActive:
			{
				SetSpeed(-1*GetSpeed());
				SetBaseVelX(0);
			}
			break;
		case pDead:
			{
			}
			break;
		};
	}
}