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; } }
void CChest::OpenChest(void) { if(!AUDIO->SFXIsSoundPlaying(m_sndChest)) AUDIO->SFXPlaySound(m_sndChest); GetAnimationPlayer(GetCurrentAnimation())->Play(); //TEMPORARY EFFECT TODO CPlayer::GetInstance()->AcquirePotion(); }
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());} }
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(); }
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); }
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; }
void CChest::LoadAnimations(char const * const szFilename) { CNPC::LoadAnimations(szFilename); GetAnimationPlayer(GetCurrentAnimation())->SetLooping(false); GetAnimationPlayer(GetCurrentAnimation())->Pause(); }
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); } }