-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLayer.cpp
More file actions
65 lines (55 loc) · 1.64 KB
/
Layer.cpp
File metadata and controls
65 lines (55 loc) · 1.64 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
62
63
64
65
#include "Layer.hpp"
Layer::Layer() {
_speed = 0;
}
Layer::Layer(float speed) {
_speed = speed;
}
void Layer::setSpeed(float speed){
_speed = speed;
}
float Layer::getSpeed(){
return _speed;
}
void Layer::setFactor(float factor){
_factor = factor;
}
float Layer::getFactor(){
return _factor;
}
void Layer::setTexture(std::vector<sf::Texture>& textures, int qtty ){
for(int i = 0; i < qtty; ++i){
sf::Sprite s;
s.setTexture(textures[i%textures.size()]);
_sprites.push_back(s);
}
for(int i = 0; i < _sprites.size(); ++i){
_sprites[i].setPosition(sf::Vector2f(_sprites[i].getGlobalBounds().width*-i,0));
}
}
void Layer::update(float deltatime){
float movement;
movement = _speed*_factor*deltatime;
for(int i = 0; i < _sprites.size(); ++i){
_sprites[i].move(movement,0);
}
if(_speed < 0){
for(int i = 0; i < _sprites.size(); ++i){
if(_sprites[i].getPosition().x <= -1*(_sprites[i].getGlobalBounds().width)){
_sprites[i].setPosition(sf::Vector2f((_sprites[i].getGlobalBounds().width)*float((_sprites.size()-i)),0));
}
}
}
else if (_speed > 0){
for(int i = 0; i < _sprites.size(); ++i){
if(_sprites[i].getPosition().x >= (_sprites[i].getGlobalBounds().width)){
_sprites[i].setPosition(sf::Vector2f(-1.0*(_sprites[i].getGlobalBounds().width)*(float(_sprites.size()-i)),0));
}
}
}
}
void Layer::draw(sf::RenderTarget* renderTarget, sf::Transform* t){
for(int i = 0; i < _sprites.size(); ++i){
renderTarget->draw(_sprites[i], *t);
}
}