-
Notifications
You must be signed in to change notification settings - Fork 0
/
Extraterrestrial.cpp
160 lines (120 loc) · 3.3 KB
/
Extraterrestrial.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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include "Extraterrestrial.h"
#include <stdlib.h>
#include<iostream>
using namespace std;
Extraterrestrial::Extraterrestrial(int type,int value,int coolDown)
{
extraterrestrialType=type;
extraterrestrialValue=value;
timeTillFire = coolDown;
coord.setPositionX((rand() % (79-31)) + 31);
coord.setPositionY((rand() % 29) + 1);
isAlive = true;
lifeEt = 5;
UIKit::color((type) ? 2 : 4);
drawExtraterrestrial();//Just spawned, so should draw it
UIKit::color(8);
}
void Extraterrestrial::move()
{
//#add
int position = 2; // no change needed
int newposY = 1; // extreme top of the frame
int newposX = 31; // extreme left of the frame
Extraterrestrial* pp;
switch (extraterrestrialType) {
case 0:
// 25 is the bottom of the frame
if (coord.getPositionY() < 29) {
eraseExtraterrestrial();
pp = ETManager::etManager->getET(coord.getPositionX(), coord.getPositionY() + position);
while (pp != nullptr)
{
pp = ETManager::etManager->getET(coord.getPositionX(), coord.getPositionY() + position + 1);
position++;
}
coord.setPositionY(coord.getPositionY() + position);
drawExtraterrestrial();
}
else {
eraseExtraterrestrial();
pp = ETManager::etManager->getET(coord.getPositionX(), 30 + newposY);
while (pp != nullptr)
{
pp = ETManager::etManager->getET(coord.getPositionX(), 30 + newposY + 1);
newposY++;
}
coord.setPositionY(newposY);
drawExtraterrestrial();
}
break;
case 1:
//18 is the extreme right of the frame
if (coord.getPositionX() < 78 ){//|| coord.getPositionX() > 78) {
eraseExtraterrestrial();
pp = ETManager::etManager->getET(coord.getPositionX() + position, coord.getPositionY());
while (pp != nullptr)
{
pp = ETManager::etManager->getET(coord.getPositionX() + position + 1, coord.getPositionY());
position++;
}
coord.setPositionX(coord.getPositionX() + position);
drawExtraterrestrial();
}
else {
eraseExtraterrestrial();
pp = ETManager::etManager->getET(31 + newposX, coord.getPositionY());
while (pp != nullptr)
{
pp = ETManager::etManager->getET(31 + newposX + 1, coord.getPositionY());
newposX++;
}
coord.setPositionX(newposX);
drawExtraterrestrial();
}
break;
default:
cout << "unhandled switch at ET move";
}
}
void Extraterrestrial::fire()
{
timeTillFire = cooldown;
//#add
BulletManager::bulletManager->bulletManager->createBullet((rand()%2), coord.getPositionX(), coord.getPositionY() + 1, false);
}
void Extraterrestrial::update()
{
//Any logic in here needed, timers, etc
timeTillFire--;
if (timeTillFire < 0)
fire();
//remove the move();
}
//
void Extraterrestrial::eraseExtraterrestrial() const
{
coord.gotoXY(coord.getPositionX(),coord.getPositionY());
cout << " ";
}
void Extraterrestrial::drawExtraterrestrial() const
{
coord.gotoXY(coord.getPositionX(),coord.getPositionY());
cout << "E"; //char(98);//extraterrestrialType);
}
void Extraterrestrial::checkDeath()
{
//if(???) the tile we are going on has a laser (Check the board, or check bullet manager)
//Round::etManager->destroy(this);
//if () { }
}
int Extraterrestrial::addPoints() const
{
return extraterrestrialValue;
}
void Extraterrestrial::die() //This is called by the manager
{
//erase extraterrestial because it has died
isAlive = false;
eraseExtraterrestrial();
}