-
Notifications
You must be signed in to change notification settings - Fork 0
/
Pillar.cpp
99 lines (79 loc) · 2.34 KB
/
Pillar.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "Pillar.h"
Pillar::Pillar( const Primitives& primitives, glm::vec3 iPosition ) {
this->upperRect = new Rectangle(
primitives,
Globals::PILLAR_WIDTH,
Globals::PILLAR_HEIGHT
);
this->lowerRect = new Rectangle(
primitives,
Globals::PILLAR_WIDTH,
Globals::PILLAR_HEIGHT
);
this->initialPosition = iPosition;
this->Reset();
}
void Pillar::Spawn() {
this->initialPosition.y = Mathematics::RandomInRange(
-Globals::Y_BOUND_DISTANCE, Globals::Y_BOUND_DISTANCE
);
this->translation = this->initialPosition;
this->shouldMove = true;
//std::cout << "Spawn Time: " << this->spawnTime << std::endl;
}
void Pillar::Update() {
//std::cout << "Time Difference: " << difftime( this->timer, this->startTime ) << std::endl;
if( this->shouldMove ) {
this->translation += this->currentVelocity;
this->MoveRectangles();
}
if( this->translation.x <= Globals::X_RESPAWN_LOCATION ) {
this->shouldMove = false;
}
}
void Pillar::Draw( Shader& shader, Camera& camera ) {
if( this->shouldMove ) {
this->upperRect->Draw( shader, camera );
this->lowerRect->Draw( shader, camera );
}
if( this->IsSelected ) this->IsSelected = false;
}
void Pillar::Reset() {
this->currentVelocity = glm::vec3( Globals::I_PILLAR_VELOCITY, 0, 0 );
this->translation = this->initialPosition;
this->shouldMove = false;
this->MoveRectangles();
}
void Pillar::MoveRectangles() {
this->upperRect->MoveTo(
glm::vec3(
this->translation.x,
this->translation.y +
( Globals::PILLAR_HEIGHT + Globals::UPPER_LOWER_GAP ) / 2,
0
)
);
this->lowerRect->MoveTo(
glm::vec3(
this->translation.x,
this->translation.y +
-( Globals::PILLAR_HEIGHT + Globals::UPPER_LOWER_GAP ) / 2,
0
)
);
}
void Pillar::IncreaseVelocity() {
this->currentVelocity += glm::vec3( -Globals::PILLAR_ACCEL, 0, 0 );
}
float Pillar::GetXPos() {
return this->translation.x;
}
float Pillar::GetYPos() {
return this->translation.y;
}
bool Pillar::CanMove() {
return this->shouldMove;
}
float Pillar::GetCurrentVelocity() {
return -this->currentVelocity.x;
}