-
Notifications
You must be signed in to change notification settings - Fork 0
/
Pipes.cpp
73 lines (54 loc) · 1.69 KB
/
Pipes.cpp
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
62
63
64
65
66
67
68
69
70
71
#include "Headers/Pipes.hpp"
Pipes::Pipes(sf::Vector2f position, float const width, float const height)
: Moveable(position, width, height)
{
setVelocity(sf::Vector2f(-5.0f, 0.0f));
};
void Pipes::draw(sf::RenderWindow& i_window)
{
rectangle_.setFillColor(sf::Color::Green);
rectangle_.setPosition(position_);
rectangle_.setSize(sf::Vector2f(width_, height_));
i_window.draw(rectangle_);
rectangle_.setPosition(sf::Vector2f(position_.x, position_.y
- height_
- static_cast<float>(pipesClearance_)));
i_window.draw(rectangle_);
}
void Pipes::updateVertexes()
{
Sprite::updateVertexes();
sf::Vector2f auxiliaryVector{0.0, height_ + pipesClearance_};
topVertex_[0] = position_ - auxiliaryVector;
topVertex_[1] = position_ + sf::Vector2f{width_, 0.0} - auxiliaryVector;
topVertex_[2] = position_ + sf::Vector2f{0.0, height_} - auxiliaryVector;
topVertex_[3] = position_ + sf::Vector2f{width_, height_} - auxiliaryVector;
}
void Pipes::updatePosition()
{
Moveable::updatePosition();
Pipes::updateVertexes();
}
bool Pipes::isGone()
{
return this-> passedScreen;
}
int Pipes::getRandom()
{
std::random_device randDev;
std::mt19937 randGenerator(randDev());
std::uniform_int_distribution<int> distribution(minimumYPosition_, maximumYPosition_);
return distribution(randGenerator);
}
int Pipes::getPipesClearance() const
{
return this-> pipesClearance_;
}
std::array<sf::Vector2f, 4> Pipes::getTopVertexes() const
{
return this-> topVertex_;
}
void Pipes::setIsGone(bool status)
{
passedScreen = status;
}