Saltuk 212

Dependencies:   mbed KS0108

Committer:
Bilgin
Date:
Fri May 31 15:13:48 2019 +0000
Revision:
0:c7dd8e13fa95
212 Saltuk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bilgin 0:c7dd8e13fa95 1 #include "TankList.h"
Bilgin 0:c7dd8e13fa95 2
Bilgin 0:c7dd8e13fa95 3 TankList::TankList(){
Bilgin 0:c7dd8e13fa95 4 tankCount = 0;
Bilgin 0:c7dd8e13fa95 5 head = 0;
Bilgin 0:c7dd8e13fa95 6 }
Bilgin 0:c7dd8e13fa95 7
Bilgin 0:c7dd8e13fa95 8 TankList::~TankList(){
Bilgin 0:c7dd8e13fa95 9 if (head != 0)
Bilgin 0:c7dd8e13fa95 10 {
Bilgin 0:c7dd8e13fa95 11 Tank* prev = head;
Bilgin 0:c7dd8e13fa95 12 Tank* cur = head;
Bilgin 0:c7dd8e13fa95 13 while (cur->getNext() != 0)
Bilgin 0:c7dd8e13fa95 14 {
Bilgin 0:c7dd8e13fa95 15 cur = cur->getNext();
Bilgin 0:c7dd8e13fa95 16 delete prev;
Bilgin 0:c7dd8e13fa95 17 prev = cur;
Bilgin 0:c7dd8e13fa95 18 }
Bilgin 0:c7dd8e13fa95 19 delete cur;
Bilgin 0:c7dd8e13fa95 20 }
Bilgin 0:c7dd8e13fa95 21 }
Bilgin 0:c7dd8e13fa95 22
Bilgin 0:c7dd8e13fa95 23 void TankList::addTank(short pixel, short x, short y, short dir){
Bilgin 0:c7dd8e13fa95 24 //add to beginning of the list
Bilgin 0:c7dd8e13fa95 25 if (head != 0)
Bilgin 0:c7dd8e13fa95 26 {
Bilgin 0:c7dd8e13fa95 27 Tank* newTank = new Tank(pixel, x, y, dir);
Bilgin 0:c7dd8e13fa95 28 newTank->setNext(head);
Bilgin 0:c7dd8e13fa95 29 head = newTank;
Bilgin 0:c7dd8e13fa95 30 tankCount++;
Bilgin 0:c7dd8e13fa95 31 }
Bilgin 0:c7dd8e13fa95 32 // add as the head if the head is empty
Bilgin 0:c7dd8e13fa95 33 else
Bilgin 0:c7dd8e13fa95 34 {
Bilgin 0:c7dd8e13fa95 35 head = new Tank(pixel, x, y, dir);
Bilgin 0:c7dd8e13fa95 36 tankCount++;
Bilgin 0:c7dd8e13fa95 37 }
Bilgin 0:c7dd8e13fa95 38 }
Bilgin 0:c7dd8e13fa95 39
Bilgin 0:c7dd8e13fa95 40 void TankList::removeCollisions(){
Bilgin 0:c7dd8e13fa95 41 Tank* cur = head->getNext();
Bilgin 0:c7dd8e13fa95 42 Tank* prev = head;
Bilgin 0:c7dd8e13fa95 43 Tank* temp;
Bilgin 0:c7dd8e13fa95 44
Bilgin 0:c7dd8e13fa95 45 if(head != 0){
Bilgin 0:c7dd8e13fa95 46 //check excluding head
Bilgin 0:c7dd8e13fa95 47 while(cur != 0){
Bilgin 0:c7dd8e13fa95 48 if(cur->willBeRemoved()){
Bilgin 0:c7dd8e13fa95 49 temp = cur->getNext();
Bilgin 0:c7dd8e13fa95 50 delete cur;
Bilgin 0:c7dd8e13fa95 51 cur = 0;
Bilgin 0:c7dd8e13fa95 52 cur = temp;
Bilgin 0:c7dd8e13fa95 53 prev->setNext(cur);
Bilgin 0:c7dd8e13fa95 54 }
Bilgin 0:c7dd8e13fa95 55 else{
Bilgin 0:c7dd8e13fa95 56 prev = cur;
Bilgin 0:c7dd8e13fa95 57 cur = cur->getNext();
Bilgin 0:c7dd8e13fa95 58 }
Bilgin 0:c7dd8e13fa95 59 }
Bilgin 0:c7dd8e13fa95 60 //check head
Bilgin 0:c7dd8e13fa95 61 if(head->willBeRemoved()){
Bilgin 0:c7dd8e13fa95 62 temp = head->getNext();
Bilgin 0:c7dd8e13fa95 63 delete head;
Bilgin 0:c7dd8e13fa95 64 head = 0;
Bilgin 0:c7dd8e13fa95 65 head = temp;
Bilgin 0:c7dd8e13fa95 66 }
Bilgin 0:c7dd8e13fa95 67 }
Bilgin 0:c7dd8e13fa95 68 }
Bilgin 0:c7dd8e13fa95 69
Bilgin 0:c7dd8e13fa95 70 void TankList::moveAll(BulletList* blist){
Bilgin 0:c7dd8e13fa95 71 Tank* cur = head;
Bilgin 0:c7dd8e13fa95 72 Bullet* fired;
Bilgin 0:c7dd8e13fa95 73
Bilgin 0:c7dd8e13fa95 74 while(cur != 0){
Bilgin 0:c7dd8e13fa95 75 fired = cur->move();
Bilgin 0:c7dd8e13fa95 76 if(fired != 0)
Bilgin 0:c7dd8e13fa95 77 blist->addBullet(2, fired->x, fired->y, fired->dir);
Bilgin 0:c7dd8e13fa95 78
Bilgin 0:c7dd8e13fa95 79 cur = cur->getNext();
Bilgin 0:c7dd8e13fa95 80 }
Bilgin 0:c7dd8e13fa95 81 }
Bilgin 0:c7dd8e13fa95 82
Bilgin 0:c7dd8e13fa95 83 void TankList::checkallBTcollisions(Bullet* listhead){
Bilgin 0:c7dd8e13fa95 84 Tank* cur = head;
Bilgin 0:c7dd8e13fa95 85
Bilgin 0:c7dd8e13fa95 86 while(cur != 0){
Bilgin 0:c7dd8e13fa95 87 cur->checkBTcollisions(listhead);
Bilgin 0:c7dd8e13fa95 88 cur = cur->getNext();
Bilgin 0:c7dd8e13fa95 89 }
Bilgin 0:c7dd8e13fa95 90 }
Bilgin 0:c7dd8e13fa95 91
Bilgin 0:c7dd8e13fa95 92 Tank* TankList::getHead(){
Bilgin 0:c7dd8e13fa95 93 return head;
Bilgin 0:c7dd8e13fa95 94 }