-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcannone.cpp
132 lines (103 loc) · 2.56 KB
/
cannone.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "cannone.h"
Cannone::Cannone(int np,float cx,float cy,float cz):numeroProiettili(np),canX(cx),canY(cy),canZ(cz){
canRotX=180+90;
canRotY=0;
tempoDiCarica=1000;
velRotazioneCannone=10;
sparando=false;
attendiCarica=false;
contatoreProiettili=numeroProiettili;
}
Cannone::~Cannone(){
vProiettili.clear();
}
void Cannone::inserisciProiettiliCannone(float x,float y ,float z){
for (int i = 0; i < numeroProiettili; i++) {
vProiettili.push_back(new Proiettile(x,y,z));
}
}
float Cannone::getCanX()const{
return canX;
}
float Cannone::getCanY()const{
return canY;
}
float Cannone::getCanZ()const{
return canZ;
}
float Cannone::getCanRotX()const{
return canRotX;
}
float Cannone::getCanRotY()const{
return canRotY;
}
float Cannone::getTempoDiCarica()const{
return tempoDiCarica;
}
float Cannone::getVelRotazioneCannone()const{
return velRotazioneCannone;
}
void Cannone::addCanRotX(float r){
canRotX+=r;
}
void Cannone::addCanRotY(float r){
canRotY+=r;
}
void Cannone::setCanRotX(float r){
canRotX=r;
}
void Cannone::setCanRotY(float r){
canRotY=r;
}
bool Cannone::isSparando() const{
return sparando;
}
void Cannone::setSparando(bool b){
sparando=b;
}
Granata* Cannone::getProiettile(int i){
return vProiettili.at(i);
}
void Cannone::togliProiettileSparato(int i){
delete vProiettili.at(i);
vProiettili.at(i)=0;
}
int Cannone::getNumeroProiettili()const{
return vProiettili.size();
}
void Cannone::setAttendiCarica(bool b){
attendiCarica=b;
}
bool Cannone::isAttendiCarica() const{
return attendiCarica;
}
Granata* Cannone::getProiettileDaSparare(){
bool stop=false;
for(int i=vProiettili.size()-1;i>=0 && !stop;i--){
if(vProiettili.at(i)!=0){
if(vProiettili.at(i)->isSparata()==false){
return vProiettili.at(i);
}
}
else{//solo qui riduco la dimensione del vector, togliendo la posizione della bomba che è stata tolta del metodo togliBombaSganciata
//essendo che scorro in ordine il vector con il controllo che la bomba sia stata tolta. (qui non possono esserci buchi! altrimenti il pop_back usato altrove creerebbe inconsistenza)
vProiettili.pop_back();
}
}
return 0;
}
int Cannone::getNumeroProiettiliIniziale()const{
return numeroProiettili;
}
int Cannone::getContatoreProiettili()const{
return contatoreProiettili;
}
void Cannone::diminuisciContatoreProiettili(){
contatoreProiettili--;
}
float Cannone::getLunghezza(){
return lunghezza;
}
float Cannone::getLarghezza(){
return larghezza;
}