Beispiel #1
0
void CChest::Render(void)
{
	if(GetAnimationPlayer(GetCurrentAnimation())->GetFrameNumber() == 3 && m_bOpened == false )
	{
		m_bOpened = true;
		CPlayer::GetInstance()->AcquirePotion();
		GetAnimationPlayer(GetCurrentAnimation())->Pause();
	}
	CNPC::Render();
}
AnimationsParser::AnimationsParser(const char * path){

	xmlFilePath = path;
	
	rapidxml::xml_document<> doc;
	//open path and read
	std::ifstream theFile (xmlFilePath);
	std::vector<char> buffer = std::vector<char>((std::istreambuf_iterator<char>(theFile)), std::istreambuf_iterator<char>());
	buffer.push_back('\0');
	//parse
	doc.parse<0>( &buffer[0] );

	DNEWPTR( rapidxml::xml_node<>, rootNode);
	rootNode = doc.first_node("animations");
	DASSERT( rootNode );

	DNEWPTR( char,  _totalSpritesNum );
	_totalSpritesNum = rootNode->first_attribute("totalAnimations")->value();
	DASSERT( _totalSpritesNum );

	unsigned int totalAnimations = atoi( _totalSpritesNum );
	DASSERT( totalAnimations > 0 );

	for(rapidxml::xml_node<>* iterate = rootNode->first_node(); iterate; iterate = iterate->next_sibling()){
		Animation* animation = GetCurrentAnimation( iterate );
		DASSERT( animation );
		animName.push_back( iterate->name() );
		map[ iterate->name() ] = animation;
	}
}
Beispiel #3
0
void CChest::OpenChest(void)
{
	if(!AUDIO->SFXIsSoundPlaying(m_sndChest))
		AUDIO->SFXPlaySound(m_sndChest);

	GetAnimationPlayer(GetCurrentAnimation())->Play();

	//TEMPORARY EFFECT TODO
	CPlayer::GetInstance()->AcquirePotion();
}
Beispiel #4
0
void RuntimeSpriteObject::GetPropertyForDebugger(std::size_t propertyNb, gd::String & name, gd::String & value) const
{
    if      ( propertyNb == 0 ) {name = _("Animation");     value = gd::String::From(GetCurrentAnimation());}
    else if ( propertyNb == 1 ) {name = _("Direction");     value = gd::String::From(GetCurrentDirection());}
    else if ( propertyNb == 2 ) {name = _("Image");         value = gd::String::From(GetSpriteNb());}
    else if ( propertyNb == 3 ) {name = _("Opacity");       value = gd::String::From(GetOpacity());}
    else if ( propertyNb == 4 ) {name = _("Blend mode");   if ( blendMode == 0) value = "0 (Alpha)";
                                                                    else if ( blendMode == 1) value = "1 (Add)";
                                                                    else if ( blendMode == 2) value = "2 (Multiply)";
                                                                    else if ( blendMode == 3) value = "3 (None)";}
    else if ( propertyNb == 5 ) {name = _("X Scale");       value = gd::String::From(GetScaleX());}
    else if ( propertyNb == 6 ) {name = _("Y Scale");       value = gd::String::From(GetScaleY());}
}
Beispiel #5
0
void CCrossBow::ShootArrow(void)
{
	m_pArrow = new CArrow();
	m_pArrow->SetSpeed(580);
	m_pArrow->SetImageID(m_imgArrow);
	m_pArrow->SetHeight(128);
	m_pArrow->SetWidth(32);
	m_pArrow->Activate();
	CObjectManager::GetInstance()->AddObject(m_pArrow);
	PointD temp = CPlayer::GetInstance()->GetPosition();
	if(GetCurrentAnimation() == ANM_ATK_UP)
	{
		m_pArrow->SetVelX(0.0f);
		m_pArrow->SetVelY(-1.0f *m_pArrow->GetSpeed());
		m_pArrow->SetPosX(temp.x - 11 - 16);
		m_pArrow->SetPosY(temp.y - 67 - 64);
	}
	else if(GetCurrentAnimation() == ANM_ATK_DOWN)
	{
		m_pArrow->SetVelX(0.0f);
		m_pArrow->SetVelY(1.0f * m_pArrow->GetSpeed());
		m_pArrow->SetPosX(temp.x + 12 - 16);
		m_pArrow->SetPosY(temp.y - 20 - 64);
	}
	else if(GetCurrentAnimation() == ANM_ATK_LEFT)
	{
		m_pArrow->SetVelX(-1.0f *(int)m_pArrow->GetSpeed());
		m_pArrow->SetVelY(0.0f);
		m_pArrow->SetPosX(temp.x - 44 - 64);
		m_pArrow->SetPosY(temp.y - 48 - 64);
	}
	else if(GetCurrentAnimation() == ANM_ATK_RIGHT)
	{
		m_pArrow->SetVelX(1.0f *m_pArrow->GetSpeed());
		m_pArrow->SetVelY(0.0f);
		m_pArrow->SetPosX(temp.x + 43 - 64);
		m_pArrow->SetPosY(temp.y - 51 - 64);
	}
} 
void AnimationMaster::Play(PBase::String const& anim) {

	if (GetCurrentAnimation() == anim) {
		return;
	}

	if (animationSets_.find(anim) == animationSets_.end()) {
		PBase::Log::LogMessage("AnimationMaster", "Listing potential animations");
		for (auto it = animationSets_.begin(); it != animationSets_.end(); it++) {
			PBase::Log::LogMessage("AnimationMaster", it->first);
		}
		THROW_PEXCEPTION(PBase::String("Animation set ").Append(anim).Append(" does not exist"));
	}

	current_ = animationSets_.find(anim)->second.getSet();
	playing_ = anim;
	Reset();
}
Beispiel #7
0
void CSmashBot::Update(float fDelta)
{
	if(m_fIsFading > 0.0f)
	{
		m_fIsFading -= fDelta;
		D3DXMATRIX tempCurr = GetMatrix();
		tempCurr[13] -= m_fIsFading * 0.05f;
		SetMatrix(tempCurr);

		if(m_fIsFading <= 0.0f)
			CGame::GetInstance()->GetOF()->Destroy(this);
		return;
	}
	if(m_fDying)
	{
		m_fDying += fDelta;

		if( m_fDying > m_fDieTime )
		{
			m_fIsFading = 2.0f;
			return;
		}
		float animTime = GetAnimationTime();
		animTime += fDelta;
		if(animTime > m_fDieTime)
			animTime = m_fDieTime;
		CAnimationProcessor::UpdateTime(GetCurrentAnimation(), animTime);
		CAnimationProcessor::Interpolator(GetCurrentAnimation(), animTime, PassCurrFrame());
		SetAnimationTime(animTime);
		return;
	}

	if( m_bIsSmashing )
		SetColor(COLOR_SMASHBOT_VUL);
	else
	{
		SetColor(COLOR_SMASHBOT);
		m_fScrollTime -= fDelta;
	}

	float animTime = GetAnimationTime();
	animTime += fDelta;
	if(GetWalking() != SMASH_WALK)
		animTime = min(animTime, m_fMaxAnim);
	CAnimationProcessor::UpdateTime(GetCurrentAnimation(), animTime);
	CAnimationProcessor::Interpolator(GetCurrentAnimation(), animTime, PassCurrFrame());
	SetAnimationTime(animTime);

	if(GetWasHit() == true)
	{
		float temp = GetHitDuration();
		temp += fDelta;
		SetHitDuration(temp);
		SetBeingHit(1);
		SetColor(COLOR_SMASHBOT_HIT);

		if(HIT_CAP < temp)
		{
			SetWasHit(false);
			SetHitDuration(0.0f);
			SetBeingHit(0);
		}
	}

	if( GetHealth() <= 0 )
	{
		CPickup* pPickup = nullptr;
		if(CGame::GetInstance()->GetOF()->Create(OBJ_PICKUP,(IBaseObject**)&pPickup))
		{
			pPickup->SetMatrix(GetMatrix());
		}

		m_bIsSmashing = false;
		D3DXMATRIX d3dMat=GetMatrix();
		WwiseNS::PlaySFX(WwiseNS::EVENT_SOUND_EXPLOSION);
		CGameplayState::GetInstance()->GetFX()->CreateEffect(EFFECT_MEDEXP,d3dMat);
		TAnimation* tempAnim = CAssetManager::GetInstance()->GetAnimation(GetID(), SMASH_DEATH);
		m_fDieTime = tempAnim->m_fDuration;
		m_fDying = .00001f;
		SetBeingHit(0);
		ChangeAnimation(SMASH_DEATH);
		SetAlive(false);
		return;
	}

	m_cAI.Update(fDelta);
}
Beispiel #8
0
RectD CCrossBow::GetCollisionRect(void)
{
	RectD rectCollision;
	if(ANM_ATK_UP == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -24;
				rectCollision.top = -500;
				rectCollision.right = 24;
				rectCollision.bottom = 500;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	else if(ANM_ATK_DOWN == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -24;
				rectCollision.top = -500;
				rectCollision.right = 24;
				rectCollision.bottom = 500;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	else if(ANM_ATK_LEFT == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -500;
				rectCollision.top = -24;
				rectCollision.right = 500;
				rectCollision.bottom = 24;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	else if(ANM_ATK_RIGHT == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -500;
				rectCollision.top = -24;
				rectCollision.right = 500;
				rectCollision.bottom = 24;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	return rectCollision;
}
Beispiel #9
0
void CChest::LoadAnimations(char const * const szFilename)
{
	CNPC::LoadAnimations(szFilename);
	GetAnimationPlayer(GetCurrentAnimation())->SetLooping(false);
	GetAnimationPlayer(GetCurrentAnimation())->Pause();
}
Beispiel #10
0
void CBurnBot::Update(float fDelta)
{
	if(m_fDying)
	{
		m_fDying += fDelta;

		if( m_fDying > m_fDieTime )
		{
			CGame::GetInstance()->GetOF()->Destroy(this);
			SetIsActive(false);
		}
		float animTime = GetAnimationTime();
		animTime += fDelta;
		if(animTime > m_fDieTime)
			animTime = m_fDieTime;
		CAnimationProcessor::UpdateTime(GetCurrentAnimation(), animTime);
		CAnimationProcessor::Interpolator(GetCurrentAnimation(), animTime, PassCurrFrame());
		SetAnimationTime(animTime);
		return;
	}

	if(m_bDontDropPool && m_fDropWait > 0.0f)
	{
		m_fDropWait -= fDelta;
		if(m_fDropWait <= 0.0f)
		{
			m_fDropWait = 0.0f;
			m_bDontDropPool = false;
		}
	}

	KillCurrFrame();

	if(GetWasHit() == true)
	{
		float ftemp = GetHitDuration();
		ftemp += fDelta;
		SetHitDuration(ftemp);
		SetBeingHit(1);
		
		SetColor(COLOR_PATROLBOT_HIT);

		if(HIT_CAP < ftemp)
		{
			SetWasHit(false);
			SetHitDuration(0.0f);
			SetBeingHit(0);
			SetColor(COLOR_PATROLBOT);
		}
	}

	m_cAI.Update(fDelta);

	if( GetHealth() <= 0 )
	{
		WwiseNS::PlaySFX(WwiseNS::EVENT_SOUND_EXPLOSION);
		CGameplayState::GetInstance()->GetFX()->CreateEffect(EFFECT_DMGEXPLOSION,GetMatrix());
		if(!m_bDontDropPool)
		{
			CMoltenPool* pMoltenPool = nullptr;
			if(CGame::GetInstance()->GetOF()->Create(OBJ_POOL, (IBaseObject**)&pMoltenPool))
			{
				pMoltenPool->SetMatrix(GetMatrix());
				pMoltenPool->SetOriginalMatrix(GetMatrix());
				pMoltenPool->SetRadius(1.0f);
				pMoltenPool->SetScale(1.25f);
				pMoltenPool->SetScaleMod(1.4f);
				pMoltenPool->SetScaleTimer(1.0f);
				pMoltenPool->SetPoolStage(1);
				pMoltenPool->SetScalingMod(0.0f);
				pMoltenPool->SetDroppedID(1);
			}
		}
		CGameplayState::GetInstance()->GetFX()->CreateEffect(EFFECT_SMALLEXP,GetMatrix());
		SetBeingHit(0);
		TAnimation* tempAnim = CAssetManager::GetInstance()->GetAnimation(GetID(), 1);
		m_fDieTime = tempAnim->m_fDuration;
		m_fDying = .00001f;
		ChangeAnimation(1);
		SetAlive(false);
	}

	if(m_bCloseToTarget)
	{
		int nTemp = ((int)(m_fExplodeTimer*10)%2);

		float animTime = GetAnimationTime();
		animTime += fDelta;
		CAnimationProcessor::UpdateTime(GetCurrentAnimation(), animTime);
		CAnimationProcessor::Interpolator(GetCurrentAnimation(), animTime, PassCurrFrame());
		SetAnimationTime(animTime);

		if(nTemp)
			SetBeingHit(NOTHIT);
		else
			SetBeingHit(BURNEXPLODE);
	}
}