![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Meteor defense project
Weapon/Weapon.cpp@50:082feedcdd22, 2017-05-04 (annotated)
- Committer:
- jasper0712
- Date:
- Thu May 04 16:55:26 2017 +0000
- Revision:
- 50:082feedcdd22
converted library to folder
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jasper0712 | 50:082feedcdd22 | 1 | #include "Weapon.h" |
jasper0712 | 50:082feedcdd22 | 2 | |
jasper0712 | 50:082feedcdd22 | 3 | Weapon::Weapon() |
jasper0712 | 50:082feedcdd22 | 4 | { |
jasper0712 | 50:082feedcdd22 | 5 | |
jasper0712 | 50:082feedcdd22 | 6 | } |
jasper0712 | 50:082feedcdd22 | 7 | |
jasper0712 | 50:082feedcdd22 | 8 | Weapon::~Weapon() |
jasper0712 | 50:082feedcdd22 | 9 | { |
jasper0712 | 50:082feedcdd22 | 10 | |
jasper0712 | 50:082feedcdd22 | 11 | } |
jasper0712 | 50:082feedcdd22 | 12 | void Weapon::init() { //the wonderful thing about structs. |
jasper0712 | 50:082feedcdd22 | 13 | //printf("ld = %d, bd = %d, br = %d, bc = %d, dd = %d, dr = %d, sc = %d, srr = %d \n",laser.damage, bomb.damage, bomb.range, bomb.cooldown, drone.damage, drone.range, shield.capacity, shield.regenRate); |
jasper0712 | 50:082feedcdd22 | 14 | _bombRange = 10 + 2 * bomb.range ; |
jasper0712 | 50:082feedcdd22 | 15 | _laserDamage = 8 + laser.damage * 4; |
jasper0712 | 50:082feedcdd22 | 16 | _bombDamage = 40 + bomb.damage * 10; |
jasper0712 | 50:082feedcdd22 | 17 | _bombCooldown = 70 - bomb.cooldown * 5; |
jasper0712 | 50:082feedcdd22 | 18 | _shieldCapacity = 80 + shield.capacity * 50; |
jasper0712 | 50:082feedcdd22 | 19 | _shieldRegenRate = 4 + shield.regenRate; |
jasper0712 | 50:082feedcdd22 | 20 | _droneDamage = 1 + drone.damage; |
jasper0712 | 50:082feedcdd22 | 21 | _droneRange = 30 + drone.range; |
jasper0712 | 50:082feedcdd22 | 22 | _cannonDamage = 20 + 10 * cannon.damage; |
jasper0712 | 50:082feedcdd22 | 23 | _cannonCapacity = 1280 + 320 * cannon.capacity; |
jasper0712 | 50:082feedcdd22 | 24 | _cannonRegenRate = 4 + cannon.regenRate; |
jasper0712 | 50:082feedcdd22 | 25 | //printf("bombRange = %d \n",_bombRange); |
jasper0712 | 50:082feedcdd22 | 26 | //printf("shield init complete \n"); |
jasper0712 | 50:082feedcdd22 | 27 | } |
jasper0712 | 50:082feedcdd22 | 28 | void Weapon::droneInit(int x, int y, int a, int b, int damage, int range){ |
jasper0712 | 50:082feedcdd22 | 29 | d_x = x; |
jasper0712 | 50:082feedcdd22 | 30 | d_y = y; |
jasper0712 | 50:082feedcdd22 | 31 | d_side = a; |
jasper0712 | 50:082feedcdd22 | 32 | d_scan = b; |
jasper0712 | 50:082feedcdd22 | 33 | _droneDamage = damage; |
jasper0712 | 50:082feedcdd22 | 34 | _droneRange = range; |
jasper0712 | 50:082feedcdd22 | 35 | //printf("drone.damage = %d, drone.range = %d \n",drone.damage.drone.range); |
jasper0712 | 50:082feedcdd22 | 36 | //printf("actual drone damage = %d, drone range = %d \n",_droneDamage,_droneRange); |
jasper0712 | 50:082feedcdd22 | 37 | //printf("drone init done"); |
jasper0712 | 50:082feedcdd22 | 38 | } |
jasper0712 | 50:082feedcdd22 | 39 | void Weapon::drawPlayer(Gamepad &pad, N5110 &lcd){ |
jasper0712 | 50:082feedcdd22 | 40 | float angle = pad.get_direction(); |
jasper0712 | 50:082feedcdd22 | 41 | int lala = pad.get_angle(); |
jasper0712 | 50:082feedcdd22 | 42 | //printf("Direction = %f, Magnitude = %f \n",angle,mag); |
jasper0712 | 50:082feedcdd22 | 43 | //player position - fixed. |
jasper0712 | 50:082feedcdd22 | 44 | lcd.drawRect(42,46,3,2,FILL_BLACK); |
jasper0712 | 50:082feedcdd22 | 45 | //weapon position |
jasper0712 | 50:082feedcdd22 | 46 | if (angle == 0) { // |
jasper0712 | 50:082feedcdd22 | 47 | //printf("do nothing \n"); |
jasper0712 | 50:082feedcdd22 | 48 | } else if (angle == 1) { |
jasper0712 | 50:082feedcdd22 | 49 | lcd.setPixel(43,45); lcd.setPixel(43,44); |
jasper0712 | 50:082feedcdd22 | 50 | } else if (angle == 2 ) { |
jasper0712 | 50:082feedcdd22 | 51 | lcd.setPixel(45,45); lcd.setPixel(46,44); |
jasper0712 | 50:082feedcdd22 | 52 | } else if (angle == 8){ |
jasper0712 | 50:082feedcdd22 | 53 | lcd.setPixel(41,45); lcd.setPixel(40,44); |
jasper0712 | 50:082feedcdd22 | 54 | } else if (angle == 7){ |
jasper0712 | 50:082feedcdd22 | 55 | lcd.setPixel(41,46); lcd.setPixel(40,46); |
jasper0712 | 50:082feedcdd22 | 56 | } else if (angle == 3){ |
jasper0712 | 50:082feedcdd22 | 57 | lcd.setPixel(45,46); lcd.setPixel(46,46); |
jasper0712 | 50:082feedcdd22 | 58 | } |
jasper0712 | 50:082feedcdd22 | 59 | } |
jasper0712 | 50:082feedcdd22 | 60 | void Weapon::weaponMath(Gamepad &pad) { |
jasper0712 | 50:082feedcdd22 | 61 | //_laserDamage = 8 + var.laserDamage * 2; |
jasper0712 | 50:082feedcdd22 | 62 | //if button A is pressed. shoot laser |
jasper0712 | 50:082feedcdd22 | 63 | int joyangle = pad.get_angle(); |
jasper0712 | 50:082feedcdd22 | 64 | Vector2D mapped_coord = pad.get_mapped_coord(); |
jasper0712 | 50:082feedcdd22 | 65 | //printf("mapped coord = %f, %f\n",mapped_coord.x,mapped_coord.y); |
jasper0712 | 50:082feedcdd22 | 66 | //printf("pad.get_angle = %d \n",joyangle); |
jasper0712 | 50:082feedcdd22 | 67 | |
jasper0712 | 50:082feedcdd22 | 68 | //calculate the gradient of line |
jasper0712 | 50:082feedcdd22 | 69 | m = mapped_coord.y / mapped_coord.x ; |
jasper0712 | 50:082feedcdd22 | 70 | int x1 = 43; |
jasper0712 | 50:082feedcdd22 | 71 | int y1 = 46; |
jasper0712 | 50:082feedcdd22 | 72 | //printf("m = %f \n",m); |
jasper0712 | 50:082feedcdd22 | 73 | //calculate the y-intercept of the line |
jasper0712 | 50:082feedcdd22 | 74 | c = y1 + m * x1; |
jasper0712 | 50:082feedcdd22 | 75 | } |
jasper0712 | 50:082feedcdd22 | 76 | void Weapon::laser_Main(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 77 | //screen is divided into 4 parts for better line resolution |
jasper0712 | 50:082feedcdd22 | 78 | //and gradient sign is always changing. |
jasper0712 | 50:082feedcdd22 | 79 | if ( m > 1) { |
jasper0712 | 50:082feedcdd22 | 80 | laser1and4(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 81 | } |
jasper0712 | 50:082feedcdd22 | 82 | else if (m > 0){ |
jasper0712 | 50:082feedcdd22 | 83 | laser2(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 84 | } |
jasper0712 | 50:082feedcdd22 | 85 | else if ( m > -1 ){ |
jasper0712 | 50:082feedcdd22 | 86 | laser3(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 87 | } |
jasper0712 | 50:082feedcdd22 | 88 | else if (m < -1){ |
jasper0712 | 50:082feedcdd22 | 89 | laser1and4(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 90 | } |
jasper0712 | 50:082feedcdd22 | 91 | lineBreak = 0; |
jasper0712 | 50:082feedcdd22 | 92 | } |
jasper0712 | 50:082feedcdd22 | 93 | void Weapon::laser1and4(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 94 | for (int y = 46; y > 0; y--) { |
jasper0712 | 50:082feedcdd22 | 95 | //draw straight line |
jasper0712 | 50:082feedcdd22 | 96 | x = -(y - c)/m; |
jasper0712 | 50:082feedcdd22 | 97 | lcd.setPixel(x,y); |
jasper0712 | 50:082feedcdd22 | 98 | if( cArr2[x-1][y-1] == 'r' || cArr2[x+1][y-1] == 'l' ) { |
jasper0712 | 50:082feedcdd22 | 99 | laser_detectSpawnC(x, y, Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 100 | } else { |
jasper0712 | 50:082feedcdd22 | 101 | laser_detectSpawn(x, y, Arr2, lcd); |
jasper0712 | 50:082feedcdd22 | 102 | } |
jasper0712 | 50:082feedcdd22 | 103 | if (lineBreak == 1) { |
jasper0712 | 50:082feedcdd22 | 104 | break; |
jasper0712 | 50:082feedcdd22 | 105 | } |
jasper0712 | 50:082feedcdd22 | 106 | } |
jasper0712 | 50:082feedcdd22 | 107 | |
jasper0712 | 50:082feedcdd22 | 108 | //printf("Part 1 is drawing line \n"); |
jasper0712 | 50:082feedcdd22 | 109 | } |
jasper0712 | 50:082feedcdd22 | 110 | void Weapon::laser2(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 111 | for (int x = 43; x < 83; x++) { |
jasper0712 | 50:082feedcdd22 | 112 | //draw straight line |
jasper0712 | 50:082feedcdd22 | 113 | y = -m * x + c; |
jasper0712 | 50:082feedcdd22 | 114 | lcd.setPixel(x,y); |
jasper0712 | 50:082feedcdd22 | 115 | if( cArr2[x-1][y-1] == 'r' || cArr2[x+1][y-1] == 'l' ) { |
jasper0712 | 50:082feedcdd22 | 116 | laser_detectSpawnC(x, y, Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 117 | } else { |
jasper0712 | 50:082feedcdd22 | 118 | laser_detectSpawn(x, y, Arr2, lcd); |
jasper0712 | 50:082feedcdd22 | 119 | } |
jasper0712 | 50:082feedcdd22 | 120 | if (lineBreak == 1) { |
jasper0712 | 50:082feedcdd22 | 121 | break; |
jasper0712 | 50:082feedcdd22 | 122 | } |
jasper0712 | 50:082feedcdd22 | 123 | } |
jasper0712 | 50:082feedcdd22 | 124 | //printf("Part 2 is drawing line \n"); |
jasper0712 | 50:082feedcdd22 | 125 | } |
jasper0712 | 50:082feedcdd22 | 126 | void Weapon::laser3(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 127 | for (int x = 43; x > 0; x--) { |
jasper0712 | 50:082feedcdd22 | 128 | //draw a straight line for the laser |
jasper0712 | 50:082feedcdd22 | 129 | y = -m * x + c; |
jasper0712 | 50:082feedcdd22 | 130 | lcd.setPixel(x,y); |
jasper0712 | 50:082feedcdd22 | 131 | if( cArr2[x-1][y-1] == 'r' || cArr2[x+1][y-1] == 'l') { |
jasper0712 | 50:082feedcdd22 | 132 | laser_detectSpawnC(x, y, Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 133 | } else { |
jasper0712 | 50:082feedcdd22 | 134 | laser_detectSpawn(x, y, Arr2, lcd); |
jasper0712 | 50:082feedcdd22 | 135 | } |
jasper0712 | 50:082feedcdd22 | 136 | if (lineBreak == 1) { |
jasper0712 | 50:082feedcdd22 | 137 | break; |
jasper0712 | 50:082feedcdd22 | 138 | } |
jasper0712 | 50:082feedcdd22 | 139 | } |
jasper0712 | 50:082feedcdd22 | 140 | //printf("part 3 is drawing line \n"); |
jasper0712 | 50:082feedcdd22 | 141 | } |
jasper0712 | 50:082feedcdd22 | 142 | //this piece of code to stop drawing the line when a spawn is detected. |
jasper0712 | 50:082feedcdd22 | 143 | //hit box of the laser is only 5 pixel. |
jasper0712 | 50:082feedcdd22 | 144 | void Weapon::laser_detectSpawn(int i, int j, int Arr2[][Rows], N5110 & lcd) { |
jasper0712 | 50:082feedcdd22 | 145 | //printf("drawing at x= %d, y= %d \n",x,y); |
jasper0712 | 50:082feedcdd22 | 146 | if ( Arr2[i][j-1] > 0) { |
jasper0712 | 50:082feedcdd22 | 147 | //printf("spawn detected at x = %d, y= %d \n",i,j-1); |
jasper0712 | 50:082feedcdd22 | 148 | lineBreak = 1; |
jasper0712 | 50:082feedcdd22 | 149 | Arr2[i][j-1] = Arr2[i][j-1] - _laserDamage; |
jasper0712 | 50:082feedcdd22 | 150 | } else if (Arr2[i-1][j-1] > 0){ |
jasper0712 | 50:082feedcdd22 | 151 | //printf("spawn detected at x = %d, y= %d \n",i-1,j-1); |
jasper0712 | 50:082feedcdd22 | 152 | lineBreak = 1; |
jasper0712 | 50:082feedcdd22 | 153 | Arr2[i-1][j-1] = Arr2[i-1][j-1] - _laserDamage; |
jasper0712 | 50:082feedcdd22 | 154 | } else if (Arr2[i+1][j-1] > 0) { |
jasper0712 | 50:082feedcdd22 | 155 | //printf("spawn detected at x = %d, y= %d \n",i+1,j-1); |
jasper0712 | 50:082feedcdd22 | 156 | lineBreak = 1; |
jasper0712 | 50:082feedcdd22 | 157 | Arr2[i+1][j-1] = Arr2[i+1][j-1] - _laserDamage; |
jasper0712 | 50:082feedcdd22 | 158 | } else if (Arr2[i+1][j] > 0) { |
jasper0712 | 50:082feedcdd22 | 159 | lineBreak = 1; |
jasper0712 | 50:082feedcdd22 | 160 | Arr2[i+1][j] = Arr2[i+1][j] - _laserDamage; |
jasper0712 | 50:082feedcdd22 | 161 | } else if (Arr2[i-1][j] > 0) { |
jasper0712 | 50:082feedcdd22 | 162 | lineBreak = 1; |
jasper0712 | 50:082feedcdd22 | 163 | Arr2[i-1][j] = Arr2[i-1][j] - _laserDamage; |
jasper0712 | 50:082feedcdd22 | 164 | } |
jasper0712 | 50:082feedcdd22 | 165 | } |
jasper0712 | 50:082feedcdd22 | 166 | void Weapon::laser_detectSpawnC(int i, int j, int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 167 | //printf("either L or R is detected \n"); |
jasper0712 | 50:082feedcdd22 | 168 | if (cArr2[i+1][j-1] == 'l'){ |
jasper0712 | 50:082feedcdd22 | 169 | //printf("cArr2[%d][%d] = %c \n",i+1,j-1,cArr2[i+1][j-1]); |
jasper0712 | 50:082feedcdd22 | 170 | lineBreak = 1; |
jasper0712 | 50:082feedcdd22 | 171 | Arr2[i+2][j] = Arr2[i+2][j] - _laserDamage; |
jasper0712 | 50:082feedcdd22 | 172 | //printf("L found \n"); |
jasper0712 | 50:082feedcdd22 | 173 | } else if (cArr2[i-1][j-1] == 'r') { |
jasper0712 | 50:082feedcdd22 | 174 | //printf("cArr2[%d][%d] = %c \n",i-1,j-1,cArr2[i-1][j-1]); |
jasper0712 | 50:082feedcdd22 | 175 | lineBreak = 1; |
jasper0712 | 50:082feedcdd22 | 176 | Arr2[i-2][j] = Arr2[i-2][j] - _laserDamage; |
jasper0712 | 50:082feedcdd22 | 177 | //printf("R found \n"); |
jasper0712 | 50:082feedcdd22 | 178 | } |
jasper0712 | 50:082feedcdd22 | 179 | } |
jasper0712 | 50:082feedcdd22 | 180 | void Weapon::bomb_main(int Arr2[][Rows], Gamepad &pad, N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 181 | if (_bomb < _bombCooldown) { |
jasper0712 | 50:082feedcdd22 | 182 | //printf("bomb not ready yet \n"); |
jasper0712 | 50:082feedcdd22 | 183 | _bomb += 1; |
jasper0712 | 50:082feedcdd22 | 184 | int cd = 3 + ((30* _bomb) / _bombCooldown); |
jasper0712 | 50:082feedcdd22 | 185 | for (int x = 3; x < cd; x++) { //draw a line |
jasper0712 | 50:082feedcdd22 | 186 | lcd.setPixel(x,47); |
jasper0712 | 50:082feedcdd22 | 187 | } |
jasper0712 | 50:082feedcdd22 | 188 | } else { //allow bomb when cooldown is done. |
jasper0712 | 50:082feedcdd22 | 189 | //printf("bomb is ready to detonate \n"); |
jasper0712 | 50:082feedcdd22 | 190 | for (int x = 3; x < 34; x++) { //draw a line |
jasper0712 | 50:082feedcdd22 | 191 | lcd.setPixel(x,47); |
jasper0712 | 50:082feedcdd22 | 192 | } |
jasper0712 | 50:082feedcdd22 | 193 | checkBombTarget(pad); |
jasper0712 | 50:082feedcdd22 | 194 | if (bombTarget_flag == 1) { |
jasper0712 | 50:082feedcdd22 | 195 | drawBombTarget(pad, lcd); |
jasper0712 | 50:082feedcdd22 | 196 | if (pad.check_event(Gamepad::X_PRESSED)) { |
jasper0712 | 50:082feedcdd22 | 197 | spawnDamageByBomb(Arr2, lcd); |
jasper0712 | 50:082feedcdd22 | 198 | } |
jasper0712 | 50:082feedcdd22 | 199 | } |
jasper0712 | 50:082feedcdd22 | 200 | } |
jasper0712 | 50:082feedcdd22 | 201 | } |
jasper0712 | 50:082feedcdd22 | 202 | void Weapon::checkBombTarget(Gamepad &pad) { |
jasper0712 | 50:082feedcdd22 | 203 | if (pad.check_event(Gamepad::L_PRESSED)) { //press L button to toggle flag |
jasper0712 | 50:082feedcdd22 | 204 | if (bombTarget_flag == 1) { |
jasper0712 | 50:082feedcdd22 | 205 | //printf("button L pressed and flag toggled \n"); |
jasper0712 | 50:082feedcdd22 | 206 | bombTarget_flag = 0; |
jasper0712 | 50:082feedcdd22 | 207 | } else if(bombTarget_flag == 0) { |
jasper0712 | 50:082feedcdd22 | 208 | bombTarget_flag = 1; |
jasper0712 | 50:082feedcdd22 | 209 | } |
jasper0712 | 50:082feedcdd22 | 210 | } |
jasper0712 | 50:082feedcdd22 | 211 | } |
jasper0712 | 50:082feedcdd22 | 212 | Target Weapon::targetCoord(Gamepad &pad) { |
jasper0712 | 50:082feedcdd22 | 213 | Vector2D coord = pad.get_coord(); |
jasper0712 | 50:082feedcdd22 | 214 | //coord is used instead of mappedcoord because the bomb has to be able to go to the screen corner |
jasper0712 | 50:082feedcdd22 | 215 | int yy = 24 - coord.y * 24; |
jasper0712 | 50:082feedcdd22 | 216 | int xx = 42 + coord.x * 42; |
jasper0712 | 50:082feedcdd22 | 217 | |
jasper0712 | 50:082feedcdd22 | 218 | Target _coord = {xx,yy}; |
jasper0712 | 50:082feedcdd22 | 219 | return _coord; |
jasper0712 | 50:082feedcdd22 | 220 | } |
jasper0712 | 50:082feedcdd22 | 221 | void Weapon::drawBombTarget(Gamepad &pad, N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 222 | Target _coord = targetCoord(pad); //get the coordinate on the screen. |
jasper0712 | 50:082feedcdd22 | 223 | _y = _coord.yy; |
jasper0712 | 50:082feedcdd22 | 224 | _x = _coord.xx; |
jasper0712 | 50:082feedcdd22 | 225 | //draw a "+" on the screen using the coordinate for the target |
jasper0712 | 50:082feedcdd22 | 226 | lcd.setPixel(_x,_y); |
jasper0712 | 50:082feedcdd22 | 227 | lcd.setPixel(_x+1,_y); |
jasper0712 | 50:082feedcdd22 | 228 | lcd.setPixel(_x-1,_y); |
jasper0712 | 50:082feedcdd22 | 229 | lcd.setPixel(_x,_y+1); |
jasper0712 | 50:082feedcdd22 | 230 | lcd.setPixel(_x,_y-1); |
jasper0712 | 50:082feedcdd22 | 231 | } |
jasper0712 | 50:082feedcdd22 | 232 | void Weapon::spawnDamageByBomb(int Arr2[][Rows], N5110 &lcd){ //draw the bombed area and deal damage to the area when X is pressed. |
jasper0712 | 50:082feedcdd22 | 233 | _bomb = 0; |
jasper0712 | 50:082feedcdd22 | 234 | bombTarget_flag = 0; //clear flag |
jasper0712 | 50:082feedcdd22 | 235 | //printf("why u not working now?? omg \n"); |
jasper0712 | 50:082feedcdd22 | 236 | //printf("x = %d, y = %d, bombRange = %d \n",a,b,r); |
jasper0712 | 50:082feedcdd22 | 237 | printf("bombRange = %d \n",_bombRange); |
jasper0712 | 50:082feedcdd22 | 238 | _bombRange = 10 + bomb.range ; |
jasper0712 | 50:082feedcdd22 | 239 | int a = _x; //a and b is the origin of the circle, |
jasper0712 | 50:082feedcdd22 | 240 | int b = _y; |
jasper0712 | 50:082feedcdd22 | 241 | int r = _bombRange; //r is radius of circle |
jasper0712 | 50:082feedcdd22 | 242 | int c2 = r * r; |
jasper0712 | 50:082feedcdd22 | 243 | int x2 = a + r +1; |
jasper0712 | 50:082feedcdd22 | 244 | int y2 = b + r +1; |
jasper0712 | 50:082feedcdd22 | 245 | |
jasper0712 | 50:082feedcdd22 | 246 | drawCircle(a, b, r, c2, x2, y2, Arr2, lcd); |
jasper0712 | 50:082feedcdd22 | 247 | //printf("bomb detonated \n"); |
jasper0712 | 50:082feedcdd22 | 248 | } |
jasper0712 | 50:082feedcdd22 | 249 | void Weapon::drawCircle(int a, int b, int r, int c2, int x2, int y2, int Arr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 250 | //had to use this instead of lcd.drawcircle because it has to be able to manipulate the array. |
jasper0712 | 50:082feedcdd22 | 251 | //find all the coordinate in a square depending on the radius of circle. |
jasper0712 | 50:082feedcdd22 | 252 | for (int x1 = a - r; x1 < x2; x1 ++){ |
jasper0712 | 50:082feedcdd22 | 253 | for (int y1 = b - r; y1 < y2; y1 ++) { |
jasper0712 | 50:082feedcdd22 | 254 | //this code because when y1 get negative. The game crash. |
jasper0712 | 50:082feedcdd22 | 255 | int x3 = x1; int y3 = y1; |
jasper0712 | 50:082feedcdd22 | 256 | if (y3 < 0) { |
jasper0712 | 50:082feedcdd22 | 257 | y3 = 40; |
jasper0712 | 50:082feedcdd22 | 258 | } if (x3 < 0) { |
jasper0712 | 50:082feedcdd22 | 259 | x3 = 40; |
jasper0712 | 50:082feedcdd22 | 260 | } |
jasper0712 | 50:082feedcdd22 | 261 | int a2 = (x3 - a) * (x3 - a); |
jasper0712 | 50:082feedcdd22 | 262 | int b2 = (y3 - b) * (y3 - b); |
jasper0712 | 50:082feedcdd22 | 263 | if (a2 + b2 <= c2 +1) { //if the coordinate is within the circle ( c2 = a2 + b2 ) |
jasper0712 | 50:082feedcdd22 | 264 | //draw circle and deal damage to it . |
jasper0712 | 50:082feedcdd22 | 265 | lcd.setPixel(x3,y3); |
jasper0712 | 50:082feedcdd22 | 266 | Arr2[x3][y3] = Arr2[x3][y3] - _bombDamage; |
jasper0712 | 50:082feedcdd22 | 267 | } |
jasper0712 | 50:082feedcdd22 | 268 | } |
jasper0712 | 50:082feedcdd22 | 269 | } |
jasper0712 | 50:082feedcdd22 | 270 | } |
jasper0712 | 50:082feedcdd22 | 271 | void Weapon::shield_main(int Arr2[][Rows], char cArr2[][Rows], Gamepad &pad, N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 272 | if (pad.buttonhold_B == 1) { //if B pressed, generate shield. Shield doesnt have to be fully charged to be activated |
jasper0712 | 50:082feedcdd22 | 273 | if (_shield > 0) { //shield will only activate if the shield has not depleted. |
jasper0712 | 50:082feedcdd22 | 274 | shield_Rule(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 275 | } else { //or else, deactivate the shield and recharge the shield. |
jasper0712 | 50:082feedcdd22 | 276 | pad.buttonhold_B = 0; |
jasper0712 | 50:082feedcdd22 | 277 | } |
jasper0712 | 50:082feedcdd22 | 278 | } |
jasper0712 | 50:082feedcdd22 | 279 | if (pad.buttonhold_B == 0) { // recharge shield |
jasper0712 | 50:082feedcdd22 | 280 | if (_shield < _shieldCapacity ) { |
jasper0712 | 50:082feedcdd22 | 281 | _shield = _shield + _shieldRegenRate; |
jasper0712 | 50:082feedcdd22 | 282 | //printf("current shield = %d \n",weap._shield); |
jasper0712 | 50:082feedcdd22 | 283 | //printf("shield regen rate = %d \n",weap._shieldRegenRate); |
jasper0712 | 50:082feedcdd22 | 284 | } else { //when the shield is fully charged. It will automatically activate the shield. |
jasper0712 | 50:082feedcdd22 | 285 | pad.buttonhold_B = 1; |
jasper0712 | 50:082feedcdd22 | 286 | } |
jasper0712 | 50:082feedcdd22 | 287 | } |
jasper0712 | 50:082feedcdd22 | 288 | shieldMeter(lcd); |
jasper0712 | 50:082feedcdd22 | 289 | } |
jasper0712 | 50:082feedcdd22 | 290 | void Weapon::shield_Rule(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 291 | drawEnergyShield(lcd); |
jasper0712 | 50:082feedcdd22 | 292 | for (int x = 0; x < Cols; x++) { //from x = 0 to x = 83 |
jasper0712 | 50:082feedcdd22 | 293 | if (cArr2[x][45] == 'b') { //scan for spawn B |
jasper0712 | 50:082feedcdd22 | 294 | Arr2[x][45] = 0; |
jasper0712 | 50:082feedcdd22 | 295 | cArr2[x][45] = '\0'; |
jasper0712 | 50:082feedcdd22 | 296 | _shield -= 20; |
jasper0712 | 50:082feedcdd22 | 297 | } else if ( cArr2[x][45] == 'd' || cArr2[x][45] == 'e' ) { //scan for spawn D&E |
jasper0712 | 50:082feedcdd22 | 298 | Arr2[x][45] = 0; |
jasper0712 | 50:082feedcdd22 | 299 | cArr2[x][45] = '\0'; |
jasper0712 | 50:082feedcdd22 | 300 | _shield -= 30; |
jasper0712 | 50:082feedcdd22 | 301 | } |
jasper0712 | 50:082feedcdd22 | 302 | } |
jasper0712 | 50:082feedcdd22 | 303 | } |
jasper0712 | 50:082feedcdd22 | 304 | //draw a simple barrier at y = 45 |
jasper0712 | 50:082feedcdd22 | 305 | void Weapon::drawEnergyShield(N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 306 | for (int x = 0; x < Cols; x++) { |
jasper0712 | 50:082feedcdd22 | 307 | lcd.setPixel(x,45); |
jasper0712 | 50:082feedcdd22 | 308 | } |
jasper0712 | 50:082feedcdd22 | 309 | for (int x = 0; x < Cols; x += 3) { |
jasper0712 | 50:082feedcdd22 | 310 | lcd.setPixel(x,44); |
jasper0712 | 50:082feedcdd22 | 311 | } |
jasper0712 | 50:082feedcdd22 | 312 | } |
jasper0712 | 50:082feedcdd22 | 313 | void Weapon::shieldMeter(N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 314 | int cd = 50 + ((30 * _shield) / _shieldCapacity); |
jasper0712 | 50:082feedcdd22 | 315 | lcd.drawLine(50,47,cd,47,1); |
jasper0712 | 50:082feedcdd22 | 316 | } |
jasper0712 | 50:082feedcdd22 | 317 | void Weapon::drone_main(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 318 | lcd.setPixel(d_x,d_y); |
jasper0712 | 50:082feedcdd22 | 319 | //prioritize spawn D&E |
jasper0712 | 50:082feedcdd22 | 320 | droneScanForDE(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 321 | if (d_foundDE == 0) { |
jasper0712 | 50:082feedcdd22 | 322 | droneScanForAB(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 323 | } |
jasper0712 | 50:082feedcdd22 | 324 | d_foundDE = 0; |
jasper0712 | 50:082feedcdd22 | 325 | } |
jasper0712 | 50:082feedcdd22 | 326 | void Weapon::droneScanForAB(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 327 | for (int y = d_y; y > d_y - _droneRange; y--) { //scan through the given drone range from left to right |
jasper0712 | 50:082feedcdd22 | 328 | for (int x = d_side; x < d_scan; x++) { |
jasper0712 | 50:082feedcdd22 | 329 | if (cArr2[x][y] == 'a' || cArr2[x][y] == 'c') { //if detect something |
jasper0712 | 50:082feedcdd22 | 330 | //printf("drone detected spawn A/C at x = %d, y = %d \n",x ,y); |
jasper0712 | 50:082feedcdd22 | 331 | droneLaser(x, y, Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 332 | Arr2[x][y] = Arr2[x][y] - _droneDamage; |
jasper0712 | 50:082feedcdd22 | 333 | breakout = 1; |
jasper0712 | 50:082feedcdd22 | 334 | break; //break out of the first for loop. |
jasper0712 | 50:082feedcdd22 | 335 | } |
jasper0712 | 50:082feedcdd22 | 336 | } |
jasper0712 | 50:082feedcdd22 | 337 | if (breakout == 1){ |
jasper0712 | 50:082feedcdd22 | 338 | breakout = 0; |
jasper0712 | 50:082feedcdd22 | 339 | break; //break out of the second for loop. |
jasper0712 | 50:082feedcdd22 | 340 | } |
jasper0712 | 50:082feedcdd22 | 341 | } |
jasper0712 | 50:082feedcdd22 | 342 | } |
jasper0712 | 50:082feedcdd22 | 343 | void Weapon::droneScanForDE(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { //drone prioritize in killing spawnDE |
jasper0712 | 50:082feedcdd22 | 344 | for (int y = d_y; y > d_y - _droneRange; y--) { //scan through the given drone range from left to right |
jasper0712 | 50:082feedcdd22 | 345 | for (int x = d_side; x < d_scan; x++) { |
jasper0712 | 50:082feedcdd22 | 346 | if (cArr2[x][y] == 'd' || cArr2[x][y] == 'e') { //if detect something |
jasper0712 | 50:082feedcdd22 | 347 | //printf("drone detected spawn D&E at x = %d, y = %d \n",x ,y); |
jasper0712 | 50:082feedcdd22 | 348 | droneLaser(x, y, Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 349 | Arr2[x][y] = Arr2[x][y] - _droneDamage; |
jasper0712 | 50:082feedcdd22 | 350 | breakout = 1; |
jasper0712 | 50:082feedcdd22 | 351 | d_foundDE = 1; |
jasper0712 | 50:082feedcdd22 | 352 | break; //break out of the first for loop. |
jasper0712 | 50:082feedcdd22 | 353 | } |
jasper0712 | 50:082feedcdd22 | 354 | } |
jasper0712 | 50:082feedcdd22 | 355 | if (breakout == 1){ |
jasper0712 | 50:082feedcdd22 | 356 | breakout = 0; |
jasper0712 | 50:082feedcdd22 | 357 | break; //break out of the second for loop. |
jasper0712 | 50:082feedcdd22 | 358 | } |
jasper0712 | 50:082feedcdd22 | 359 | } |
jasper0712 | 50:082feedcdd22 | 360 | } |
jasper0712 | 50:082feedcdd22 | 361 | void Weapon::droneLaser(int x, int y, int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { //this is used to draw line (laser) for the drone |
jasper0712 | 50:082feedcdd22 | 362 | float m; |
jasper0712 | 50:082feedcdd22 | 363 | if ( x != d_x) { //to prevent m (gradient) from going to infinity. |
jasper0712 | 50:082feedcdd22 | 364 | m = (((float)y) - d_y) / (((float)x) - d_x); //to get the gradient of the line. y = mx + c |
jasper0712 | 50:082feedcdd22 | 365 | } else { |
jasper0712 | 50:082feedcdd22 | 366 | m = 50; //50 is more than enough since screen height is only 48 pixel. |
jasper0712 | 50:082feedcdd22 | 367 | } |
jasper0712 | 50:082feedcdd22 | 368 | int c = d_y - m * d_x; // y-intercept of the line |
jasper0712 | 50:082feedcdd22 | 369 | //printf("y intercept = %d and gradient = %f \n",c,m); |
jasper0712 | 50:082feedcdd22 | 370 | /*int lala = x - d_x; |
jasper0712 | 50:082feedcdd22 | 371 | if ( lala == 0 ) { |
jasper0712 | 50:082feedcdd22 | 372 | printf("m = %d at x = %d \n",m,x); |
jasper0712 | 50:082feedcdd22 | 373 | }*/ |
jasper0712 | 50:082feedcdd22 | 374 | for (int j = d_y ; j > y ; j--) { |
jasper0712 | 50:082feedcdd22 | 375 | int i = (j - c) / m; |
jasper0712 | 50:082feedcdd22 | 376 | lcd.setPixel(i,j); |
jasper0712 | 50:082feedcdd22 | 377 | } |
jasper0712 | 50:082feedcdd22 | 378 | } |
jasper0712 | 50:082feedcdd22 | 379 | void Weapon::cannon_main(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { //dividing the screen into 4 parts like the laser |
jasper0712 | 50:082feedcdd22 | 380 | //printf("cannonFiring_flag = %d, cannon_y = %d, cannon_x = %d \n",cannonFiring_flag,cannon_y,cannon_x); |
jasper0712 | 50:082feedcdd22 | 381 | if ( cannonFiring_flag == 0) { //save the current gradient and also the y-intercept |
jasper0712 | 50:082feedcdd22 | 382 | cannonDirection = m; |
jasper0712 | 50:082feedcdd22 | 383 | cannon_c = c; |
jasper0712 | 50:082feedcdd22 | 384 | cannon_y = 46; //initial pos of cannon |
jasper0712 | 50:082feedcdd22 | 385 | cannon_x = 43; |
jasper0712 | 50:082feedcdd22 | 386 | cannonFiring_flag = 1; |
jasper0712 | 50:082feedcdd22 | 387 | cannon_Damage = _cannonDamage; |
jasper0712 | 50:082feedcdd22 | 388 | _cannon = _cannon - 320; //each cannon clip costs 320. |
jasper0712 | 50:082feedcdd22 | 389 | //printf("firing a new cannon \n"); |
jasper0712 | 50:082feedcdd22 | 390 | } |
jasper0712 | 50:082feedcdd22 | 391 | //dividing the screen into 4 parts like the laser |
jasper0712 | 50:082feedcdd22 | 392 | if ( cannonFiring_flag == 1) { //cannon fired |
jasper0712 | 50:082feedcdd22 | 393 | if ( cannonDirection > 1) { |
jasper0712 | 50:082feedcdd22 | 394 | cannon1and4(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 395 | } |
jasper0712 | 50:082feedcdd22 | 396 | else if ( cannonDirection > 0){ |
jasper0712 | 50:082feedcdd22 | 397 | cannon2(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 398 | } |
jasper0712 | 50:082feedcdd22 | 399 | else if ( cannonDirection > -1 ){ |
jasper0712 | 50:082feedcdd22 | 400 | cannon3(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 401 | } |
jasper0712 | 50:082feedcdd22 | 402 | else if ( cannonDirection < -1){ |
jasper0712 | 50:082feedcdd22 | 403 | cannon1and4(Arr2, cArr2, lcd); |
jasper0712 | 50:082feedcdd22 | 404 | } |
jasper0712 | 50:082feedcdd22 | 405 | } |
jasper0712 | 50:082feedcdd22 | 406 | } |
jasper0712 | 50:082feedcdd22 | 407 | void Weapon::cannon1and4(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 408 | if ( cannon_y > 0 ) { |
jasper0712 | 50:082feedcdd22 | 409 | cannon_y --; |
jasper0712 | 50:082feedcdd22 | 410 | //printf("printing cannonball at (%d,%d) \n",x,cannon_y); |
jasper0712 | 50:082feedcdd22 | 411 | int x = -(cannon_y - cannon_c) / cannonDirection; |
jasper0712 | 50:082feedcdd22 | 412 | draw_CannonBall(x, cannon_y, lcd); |
jasper0712 | 50:082feedcdd22 | 413 | //search for spawn A, B and C |
jasper0712 | 50:082feedcdd22 | 414 | cannon_HitBox(x, cannon_y, Arr2, cArr2); |
jasper0712 | 50:082feedcdd22 | 415 | } else { |
jasper0712 | 50:082feedcdd22 | 416 | cannonFiring_flag = 0; |
jasper0712 | 50:082feedcdd22 | 417 | //printf("cannon1and4 is done \n"); |
jasper0712 | 50:082feedcdd22 | 418 | } |
jasper0712 | 50:082feedcdd22 | 419 | } |
jasper0712 | 50:082feedcdd22 | 420 | void Weapon::cannon2(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 421 | if ( cannon_x < 83 ) { |
jasper0712 | 50:082feedcdd22 | 422 | cannon_x ++; |
jasper0712 | 50:082feedcdd22 | 423 | int y = - cannonDirection * cannon_x + cannon_c; |
jasper0712 | 50:082feedcdd22 | 424 | //printf("printing cannonball at (%d,%d) \n",cannon_x,y); |
jasper0712 | 50:082feedcdd22 | 425 | draw_CannonBall(cannon_x, y, lcd); |
jasper0712 | 50:082feedcdd22 | 426 | //search for spawn A, B and C. |
jasper0712 | 50:082feedcdd22 | 427 | cannon_HitBox(cannon_x, y, Arr2, cArr2); |
jasper0712 | 50:082feedcdd22 | 428 | } else { |
jasper0712 | 50:082feedcdd22 | 429 | cannonFiring_flag = 0; |
jasper0712 | 50:082feedcdd22 | 430 | //printf("cannon2 is done \n"); |
jasper0712 | 50:082feedcdd22 | 431 | } |
jasper0712 | 50:082feedcdd22 | 432 | } |
jasper0712 | 50:082feedcdd22 | 433 | void Weapon::cannon3(int Arr2[][Rows], char cArr2[][Rows], N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 434 | if ( cannon_x > 0 ) { |
jasper0712 | 50:082feedcdd22 | 435 | cannon_x --; |
jasper0712 | 50:082feedcdd22 | 436 | int y = - cannonDirection * cannon_x + cannon_c; |
jasper0712 | 50:082feedcdd22 | 437 | //printf("printing cannonball at (%d,%d) \n",cannon_x,y); |
jasper0712 | 50:082feedcdd22 | 438 | draw_CannonBall(cannon_x, y, lcd); |
jasper0712 | 50:082feedcdd22 | 439 | //search for spawn A, B and C. |
jasper0712 | 50:082feedcdd22 | 440 | cannon_HitBox(cannon_x, y, Arr2, cArr2); |
jasper0712 | 50:082feedcdd22 | 441 | } else { |
jasper0712 | 50:082feedcdd22 | 442 | cannonFiring_flag = 0; |
jasper0712 | 50:082feedcdd22 | 443 | //printf("cannon3 is done \n"); |
jasper0712 | 50:082feedcdd22 | 444 | } |
jasper0712 | 50:082feedcdd22 | 445 | } |
jasper0712 | 50:082feedcdd22 | 446 | void Weapon::cannon_HitBox(int i, int j, int Arr2[][Rows], char cArr2[][Rows]) { |
jasper0712 | 50:082feedcdd22 | 447 | for (int x = i - 4; x < i + 5; x ++) { |
jasper0712 | 50:082feedcdd22 | 448 | for (int y = j - 4; y < j + 5; y ++) { |
jasper0712 | 50:082feedcdd22 | 449 | if (cannon_Damage > 0 ) { //if cannon can still deal damage, continue search for spawn |
jasper0712 | 50:082feedcdd22 | 450 | if (cArr2[x][y] == 'a') { |
jasper0712 | 50:082feedcdd22 | 451 | cannon_Damage = cannon_Damage - 2; |
jasper0712 | 50:082feedcdd22 | 452 | Arr2[x][y] = 0; |
jasper0712 | 50:082feedcdd22 | 453 | cArr2[x][y] = '\0'; |
jasper0712 | 50:082feedcdd22 | 454 | } |
jasper0712 | 50:082feedcdd22 | 455 | if (cArr2[x][y] == 'b') { |
jasper0712 | 50:082feedcdd22 | 456 | cannon_Damage = cannon_Damage - 5; |
jasper0712 | 50:082feedcdd22 | 457 | Arr2[x][y] = 0; |
jasper0712 | 50:082feedcdd22 | 458 | cArr2[x][y] = '\0'; |
jasper0712 | 50:082feedcdd22 | 459 | } |
jasper0712 | 50:082feedcdd22 | 460 | if (cArr2[x][y] == 'c') { |
jasper0712 | 50:082feedcdd22 | 461 | cannon_Damage = cannon_Damage - 5; |
jasper0712 | 50:082feedcdd22 | 462 | Arr2[x][y] = 0; |
jasper0712 | 50:082feedcdd22 | 463 | cArr2[x][y] = '\0'; |
jasper0712 | 50:082feedcdd22 | 464 | } |
jasper0712 | 50:082feedcdd22 | 465 | } else { //if the cannon cant deal any more damage, terminate search and clear flag |
jasper0712 | 50:082feedcdd22 | 466 | cannonFiring_flag = 0; |
jasper0712 | 50:082feedcdd22 | 467 | break; |
jasper0712 | 50:082feedcdd22 | 468 | } |
jasper0712 | 50:082feedcdd22 | 469 | } |
jasper0712 | 50:082feedcdd22 | 470 | } |
jasper0712 | 50:082feedcdd22 | 471 | } |
jasper0712 | 50:082feedcdd22 | 472 | void Weapon::cannon_recharge() { |
jasper0712 | 50:082feedcdd22 | 473 | if ( _cannon < _cannonCapacity ) { |
jasper0712 | 50:082feedcdd22 | 474 | _cannon = _cannon + _cannonRegenRate; |
jasper0712 | 50:082feedcdd22 | 475 | } |
jasper0712 | 50:082feedcdd22 | 476 | //printf("_cannon = %d \n",_cannon); |
jasper0712 | 50:082feedcdd22 | 477 | } |
jasper0712 | 50:082feedcdd22 | 478 | void Weapon::cannon_Meter(N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 479 | float zz = 83 * ( ((float)_cannon) / _cannonCapacity) ; |
jasper0712 | 50:082feedcdd22 | 480 | //printf(" zz = %f \n",zz); |
jasper0712 | 50:082feedcdd22 | 481 | for ( int x = 0 ; x < zz; x ++) { |
jasper0712 | 50:082feedcdd22 | 482 | lcd.setPixel(x,0); |
jasper0712 | 50:082feedcdd22 | 483 | } |
jasper0712 | 50:082feedcdd22 | 484 | } |
jasper0712 | 50:082feedcdd22 | 485 | void Weapon::draw_CannonBall(int x, int y, N5110 &lcd) { |
jasper0712 | 50:082feedcdd22 | 486 | //draw a diamond shape |
jasper0712 | 50:082feedcdd22 | 487 | lcd.setPixel(x-1,y-1); lcd.setPixel(x,y-1); lcd.setPixel(x+1,y+1); |
jasper0712 | 50:082feedcdd22 | 488 | lcd.setPixel(x-1,y); lcd.setPixel(x,y); lcd.setPixel(x+1,y); |
jasper0712 | 50:082feedcdd22 | 489 | lcd.setPixel(x-1,y+1); lcd.setPixel(x,y+1); lcd.setPixel(x+1,y-1); |
jasper0712 | 50:082feedcdd22 | 490 | lcd.setPixel(x-2,y); lcd.setPixel(x+2,y); |
jasper0712 | 50:082feedcdd22 | 491 | lcd.setPixel(x,y+2); lcd.setPixel(x,y-2); |
jasper0712 | 50:082feedcdd22 | 492 | } |
jasper0712 | 50:082feedcdd22 | 493 | void Weapon::setVar(int up, int up1) { |
jasper0712 | 50:082feedcdd22 | 494 | //printf("HI, ME FROM WEAP. up = %d, up1 = %d \n",up,up1); |
jasper0712 | 50:082feedcdd22 | 495 | if (up == 0){ //if laser picked |
jasper0712 | 50:082feedcdd22 | 496 | laser.damage ++; |
jasper0712 | 50:082feedcdd22 | 497 | } else if (up == 1) { //if bomb picked |
jasper0712 | 50:082feedcdd22 | 498 | if (up1 == 0) { |
jasper0712 | 50:082feedcdd22 | 499 | bomb.damage ++; |
jasper0712 | 50:082feedcdd22 | 500 | } else if (up1 == 1) { |
jasper0712 | 50:082feedcdd22 | 501 | bomb.range ++; |
jasper0712 | 50:082feedcdd22 | 502 | } else { |
jasper0712 | 50:082feedcdd22 | 503 | bomb.cooldown++; |
jasper0712 | 50:082feedcdd22 | 504 | } |
jasper0712 | 50:082feedcdd22 | 505 | } else if (up == 2) { //if drone picked |
jasper0712 | 50:082feedcdd22 | 506 | if (up1 == 0) { |
jasper0712 | 50:082feedcdd22 | 507 | drone.damage++; |
jasper0712 | 50:082feedcdd22 | 508 | } else { |
jasper0712 | 50:082feedcdd22 | 509 | drone.range++; |
jasper0712 | 50:082feedcdd22 | 510 | } |
jasper0712 | 50:082feedcdd22 | 511 | } else if (up == 3) { //if shield picked |
jasper0712 | 50:082feedcdd22 | 512 | if (up1 == 0) { |
jasper0712 | 50:082feedcdd22 | 513 | shield.capacity ++; |
jasper0712 | 50:082feedcdd22 | 514 | } else { |
jasper0712 | 50:082feedcdd22 | 515 | shield.regenRate ++; |
jasper0712 | 50:082feedcdd22 | 516 | } |
jasper0712 | 50:082feedcdd22 | 517 | } else if (up == 4) { //if cannon picked |
jasper0712 | 50:082feedcdd22 | 518 | if (up1 == 0) { |
jasper0712 | 50:082feedcdd22 | 519 | cannon.damage ++; |
jasper0712 | 50:082feedcdd22 | 520 | } else if (up1 == 1) { |
jasper0712 | 50:082feedcdd22 | 521 | cannon.capacity ++; |
jasper0712 | 50:082feedcdd22 | 522 | } else if (up1 == 2) { |
jasper0712 | 50:082feedcdd22 | 523 | cannon.regenRate ++; |
jasper0712 | 50:082feedcdd22 | 524 | } |
jasper0712 | 50:082feedcdd22 | 525 | } |
jasper0712 | 50:082feedcdd22 | 526 | } |
jasper0712 | 50:082feedcdd22 | 527 | void Weapon::reset_WeaponVariables() { |
jasper0712 | 50:082feedcdd22 | 528 | laser.damage = 0; |
jasper0712 | 50:082feedcdd22 | 529 | bomb.damage = 0; |
jasper0712 | 50:082feedcdd22 | 530 | bomb.range = 0; |
jasper0712 | 50:082feedcdd22 | 531 | bomb.cooldown = 0; |
jasper0712 | 50:082feedcdd22 | 532 | drone.damage = 0; |
jasper0712 | 50:082feedcdd22 | 533 | drone.range = 0; |
jasper0712 | 50:082feedcdd22 | 534 | shield.capacity = 0; |
jasper0712 | 50:082feedcdd22 | 535 | shield.regenRate = 0; |
jasper0712 | 50:082feedcdd22 | 536 | bomb.damage = 0; |
jasper0712 | 50:082feedcdd22 | 537 | bomb.capacity = 0; |
jasper0712 | 50:082feedcdd22 | 538 | bomb.regenRate = 0; |
jasper0712 | 50:082feedcdd22 | 539 | _cannon = 0; |
jasper0712 | 50:082feedcdd22 | 540 | _shield = 0; |
jasper0712 | 50:082feedcdd22 | 541 | _bomb = 0; |
jasper0712 | 50:082feedcdd22 | 542 | } |