-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathObjectsQueue.cpp
More file actions
118 lines (83 loc) · 1.91 KB
/
Copy pathObjectsQueue.cpp
File metadata and controls
118 lines (83 loc) · 1.91 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
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
#include "ObjectsQueue.h"
//**Construtores e Destrutores**
ObjectsQueue::ObjectsQueue(){
initializeQueue();
}
ObjectsQueue::~ObjectsQueue(){
std::cout << "Fila destruida" << std::endl;
}
Object ObjectsQueue::getFirst()
{
return (this->Primeiro)->info;
}
bool ObjectsQueue::isEmpty()
{
if (NroElementos == 0){
return true;
}
else{
return false;
}
}
//InitializeQueue(): Inicializa os atributos da Fila de objetos
void ObjectsQueue::initializeQueue(){
Primeiro = nullptr;
Ultimo = nullptr;
NroElementos = 0;
}
/*
* newObject(): Inicializa e insere um novo objeto na fila de objetos (sem prioridade ainda)
*/
void ObjectsQueue::newObject(int level, int w, int h, float dt, int ph, int pw, int key){
Nodeptr Aux;
Aux = new Node;
Aux->info.initializeObject(level, h, w, dt, ph, pw, key);
//Caso 1: Caso a fila esteja vazia
if (NroElementos == 0){
Primeiro = Aux;
Ultimo = Aux;
Aux->Next = Aux;
NroElementos++;
}
//Caso 2: Caso a fila tenha apenas um elemento
else if (NroElementos == 1){
Ultimo = Aux;
Primeiro->Next = Aux;
Aux->Next = Primeiro;
NroElementos++;
}
//Caso 3: Caso tenha mais de um elemento
else if (NroElementos > 1){
Ultimo->Next = Aux;
Ultimo = Aux;
Aux->Next = Primeiro;
NroElementos++;
}
}
/*
* removeObject(): Remove da fila o objeto para ser transferido para a lista de spawnados
*/
Object* ObjectsQueue::removeObject(){
Nodeptr Aux;
Aux = Primeiro;
//Caso 1: A fila está vazia
if (NroElementos == 0){
std::cout << "Falha no spawn do objeto (fila vazia)" << std::endl;
}
//Caso 2: A fila tem apenas um elemento
else if (NroElementos == 1){
Aux->Next = nullptr;
Primeiro = nullptr;
Ultimo = nullptr;
NroElementos--;
return &Aux->info;
}
//Caso 3: A fila tem mais de um elemento
else if (NroElementos > 1){
Primeiro = (Primeiro)->Next;
Ultimo->Next = Primeiro;
Aux->Next = nullptr;
NroElementos--;
return &Aux->info;
}
}