You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.1 KiB

6 months ago
#include "Collision.h"
#include "gamedefine.h"
QMutex mutex;
EnemyCollision::EnemyCollision(QObject* parent) : QObject(parent), mPlayer(nullptr), mEnemyList(nullptr) {
}
EnemyCollision::~EnemyCollision(){
}
void EnemyCollision::setupCollision(Player* player, QList<EnemyBase*> *enemyList) {
mPlayer = player;
mEnemyList = enemyList;
}
void EnemyCollision::player_enemyCollision(Player &mPlayer,QList<EnemyBase*> &mEnemyList)
{
QMutexLocker locker(&mutex);
if(mPlayer.isInvincible) emit EnemyCollisionFinished("return");//判断无敌
int enemyNum = mEnemyList.size();
for(int i=0;i<enemyNum;i++)
{
if(mPlayer.collidesWithItem(mEnemyList[i]))
{
mPlayer.getHurt(mEnemyList[i]->getAttackPoint());
emit EnemyCollisionFinished("hurt");
if(mPlayer.getHP() <= 0)//死亡
{
emit EnemyCollisionFinished("dead");
}
emit EnemyCollisionFinished("Invincibletime");
}
}
}
void EnemyCollision::processCollisions() {
if (!mPlayer || !mEnemyList) return;
player_enemyCollision(*mPlayer, *mEnemyList);
}