-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBullet.cpp
More file actions
61 lines (52 loc) · 1.3 KB
/
Copy pathBullet.cpp
File metadata and controls
61 lines (52 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "Bullet.h"
#include "BulletManager.h"
#include "Consts.h"
#include "World.h"
#include "SoldierManager.h"
#include "EnemyManager.h"
#include "MathUtility.hpp"
#include "TileMap.h"
#include "Tiled.h"
Bullet::Bullet(BulletManager *manager) {
this->manager = manager;
rect.setSize(Consts::BULLET_SIZE);
rect.setOrigin(Consts::BULLET_SIZE.x / 2, Consts::BULLET_SIZE.y / 2);
toDestroy = false;
passed = range = 0;
}
void Bullet::onEvent(sf::Event ev) {
}
void Bullet::update(sf::Time delta) {
move(direction * speed * delta.asSeconds());
if (friendly) {
Enemy *enemy = manager->getWorld()->getEnemies()->getEnemyAt(getPosition());
if (enemy) {
enemy->takeDmg(dmg);
toDestroy = true;
return;
}
} else {
Soldier *soldier = manager->getWorld()->getSoldiers()->getSoldierAt(getPosition());
if (soldier) {
soldier->takeDmg(dmg);
toDestroy = true;
return;
}
}
Tiled *tiledObj = manager->getWorld()->getTileMap()->getObjAtPos(getPosition());
if (tiledObj && !tiledObj->isDestroyed()) {
if (friendly)
tiledObj->onHit();
toDestroy = true;
return;
}
passed += delta.asSeconds();
if (passed >= range) {
toDestroy = true;
return;
}
}
void Bullet::draw(sf::RenderTarget& target, sf::RenderStates states) const {
states.transform *= getTransform();
target.draw(rect, states);
}