void World::moveBullets() { for (int q = 0; q < _bulletList.size(); q++) { if (_bulletList[q]->getKillAnimation() != 0) { if (_bulletList[q]->getKillAnimation() == 10) { delete _bulletList[q]; _bulletList.remove(q); } else { _bulletList[q]->animation(); } } else { QPoint pos = _bulletList[q]->getPos(); bool withTank; void *status = testCollision(_bulletList[q]->getSpeed(), _bulletList[q], false, &withTank); if (status == nullptr) { switch (_bulletList[q]->getAngle()) { case 0: { _bulletList[q]->setPos(QPoint(pos.x(), pos.y() - _bulletList[q]->getSpeed())); break; } case 1: { _bulletList[q]->setPos(QPoint(pos.x() + _bulletList[q]->getSpeed(), pos.y())); break; } case 2: { _bulletList[q]->setPos(QPoint(pos.x(), pos.y() + _bulletList[q]->getSpeed())); break; } case 3: { _bulletList[q]->setPos(QPoint(pos.x() - _bulletList[q]->getSpeed(), pos.y())); break; } } } else { if (withTank) { Tank *tank = ((Tank*)status); tank->hit(); if (tank->getHp() == 0) { tank->setSize(0); } } else { Wall *wall = ((Wall*)status); wall->hit(); if (wall->getHp() == 0) { for (int i = 0; i < _wallList.size(); i++) { if (_wallList[i] == wall) { if (_wallList[i] == _playerBase) { _playerBase = nullptr; } delete _wallList[i]; _wallList.remove(i); } } } } _bulletList[q]->animation(); } } } }
void World::playVideo() { if (_tankList.size() == 3) { _other++; if (_other % 30 == 0) { fire(_tankList[1]); } else if (_other % 51 == 0) { fire(_tankList[2]); } } else if (_tankList.size() == 2 & _other > 0 & _other < 1000) { _tankList[0]->move(false); _tankList[1]->move(false); _tankList[0]->rotate(3); _tankList[1]->rotate(1); _other = 0; } else if (_tankList.size() == 2 &_other == 0) { _other = -1; for (int q = 0; q < 8; q ++) { Tank *tank = new Tank; tank->setPos(QPoint(q * 50 + 12 * q + 6,-50)); tank->setTeam(0); tank->setAngle(2); tank->setSpeed(1); tank->move(true); _tankList.append(tank); } } else if (_other <= -1 & _other > -50) { _other--; } else if (_other == -50) { _other--; _tankList[0]->setAngle(2); _tankList[1]->setAngle(2); _tankList[0]->move(true); _tankList[1]->move(true); } else if (_other <= -51 & _tankList.size() == 10) { _other--; if (_other % 50 == 0) { for (int q = 0 ; q < 8; q ++) { fire(_tankList[q + 2]); } } } else if ( _tankList.size() == 8 & _other < 0) { Tank *tank = new Tank; tank->setTeam(2); tank->setPos(QPoint(156, - 70)); tank->setAngle(2); tank->setSpeed(1); tank->setSize(0); tank->move(true); _tankList.append(tank); } else if (_tankList.size() == 9 & _other < 0) { if (_tankList[8]->getPos().y() == 216) { _tankList[8]->move(false); _other = 0; } } else if (_tankList.size() == 9 & _other >= 0) { _other++; if (_other == 625) { for (int q = 0; q < _tankList.size() - 1; q++) { delete _tankList[0]; } _tankList.remove(0,8); for (int q = 0; q < 8; q ++) { Tank *tank = new Tank; tank->setPos(QPoint(-50,q * 50 + 12 * q + 6)); tank->setTeam(0); tank->setAngle(1); tank->setSpeed(rand() % 4 + 1); tank->move(true); _tankList.append(tank); } for (int q = 0; q < 8; q ++) { Tank *tank = new Tank; tank->setPos(QPoint(550,q * 50 + 12 * q + 6)); tank->setTeam(1); tank->setAngle(3); tank->setSpeed(rand() % 4 + 1); tank->move(true); _tankList.append(tank); } _other = 1000; } } else if (_other == 1000 & _tankList.size() != 1) { for (int q = 1; q < _tankList.size(); q ++) { int f = rand() % 2; if (f == 1) { fire(_tankList[q]); } } } else if (_other >= 1000 & _tankList.size() == 1){ _other++; if (_other == 1100) { delete _playerBase; delete _playerTank; gameOver(); loadMission(0); _isVideo = false; } } }