void CSniper::OnCollision(float deltaTime, std::vector<CGameObject*>* listObjectCollision) { float normalX = 0; float normalY = 0; float moveX = 0.0f; float moveY = 0.0f; float timeCollision; for (std::vector<CBullet*>::iterator it = CPoolingObject::GetInstance()->m_listBulletOfObject.begin(); it != CPoolingObject::GetInstance()->m_listBulletOfObject.end();) { CGameObject* obj = *it; timeCollision = CCollision::GetInstance()->Collision(obj, this, normalX, normalY, moveX, moveY, deltaTime); if((timeCollision > 0.0f && timeCollision < 1.0f) || timeCollision == 2.0f) { if(obj->IsAlive() && obj->GetLayer() == LAYER::PLAYER) { // Gan trang thai die cho doi tuong this->m_stateCurrent = SN_IS_DIE; // Xoa vien dan ra khoi d.s it = CPoolingObject::GetInstance()->m_listBulletOfObject.erase(it); //Load sound die ManageAudio::GetInstance()->playSound(TypeAudio::ENEMY_DEAD_SFX); // Tang diem cua contra len CContra::GetInstance()->IncreateScore(500); } else ++it; } else { ++it; } } }
void CGroundCanon::OnCollision(float deltaTime, std::vector<CGameObject*>* listObjectCollision) { float normalX = 0; float normalY = 0; float moveX = 0.0f; float moveY = 0.0f; float timeCollision; for (std::vector<CBullet*>::iterator it = CPoolingObject::GetInstance()->m_listBulletOfObject.begin(); it != CPoolingObject::GetInstance()->m_listBulletOfObject.end();) { CGameObject* obj = *it; timeCollision = CCollision::GetInstance()->Collision(obj, this, normalX, normalY, moveX, moveY, deltaTime); if ((timeCollision > 0.0f && timeCollision < 1.0f) || timeCollision == 2.0f) { if (obj->IsAlive() && obj->GetLayer() == LAYER::PLAYER) { this->m_HP--; it = CPoolingObject::GetInstance()->m_listBulletOfObject.erase(it); CBulletEffect* effect = CPoolingObject::GetInstance()->GetBulletEffect(); effect->SetAlive(true); effect->SetPos(obj->GetPos()); } else ++it; if (this->m_HP == 0) { // Gan trang thai die cho doi tuong this->m_stateCurrent = GROUNDCANON_SHOOT_STATE::G_IS_SHOOTING_DIE; //Load sound die ManageAudio::GetInstance()->playSound(TypeAudio::ENEMY_DEAD_SFX); // Tang diem cua contra len CContra::GetInstance()->IncreateScore(300); } } else { ++it; } } }
void CScubaSolider::OnCollision(float deltaTime, std::vector<CGameObject*>* listObjectCollision) { float normalX = 0; float normalY = 0; float moveX = 0.0f; float moveY = 0.0f; float timeCollision; if ((this->m_currentFrame == 0) || (this->m_currentFrame == 1)) { return; } else { for (std::vector<CBullet*>::iterator it = CPoolingObject::GetInstance()->m_listBulletOfObject.begin(); it != CPoolingObject::GetInstance()->m_listBulletOfObject.end();) { CGameObject* obj = *it; if (obj->IsAlive() && obj->GetLayer() == LAYER::PLAYER) { timeCollision = CCollision::GetInstance()->Collision(obj, this, normalX, normalY, moveX, moveY, deltaTime); if ((timeCollision > 0.0f && timeCollision < 1.0f) || timeCollision == 2.0f) { // Gan trang thai die cho doi tuong this->m_stateCurrent = SCUBAR_SOLIDER_STATE::SBS_IS_DIE; // Xoa vien dan ra khoi d.s CGameObject* effect = CPoolingObject::GetInstance()->GetEnemyEffect(); effect->SetAlive(true); effect->SetPos(this->m_pos); this->m_isALive = false; it = CPoolingObject::GetInstance()->m_listBulletOfObject.erase(it); //Load sound die ManageAudio::GetInstance()->playSound(TypeAudio::ENEMY_DEAD_SFX); // Tang diem cua contra len CContra::GetInstance()->IncreateScore(1000); } else ++it; } else ++it; } } }