Alvaro Cassinelli / Mbed 2 deprecated skinGames_forktest

Dependencies:   mbed

Fork of scoreLight_Advanced by Alvaro Cassinelli

Committer:
mbedalvaro
Date:
Fri Sep 21 10:02:35 2012 +0000
Revision:
30:d8af03f01cd4
Parent:
28:44b7b6e35548
Child:
31:5f039cbddee8
first commit. Not yet functional. Added ghost and pacman game modes, but the behaviour of these "rigid spots" is not implemented yet

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedalvaro 0:345b3bc7a0ea 1
mbedalvaro 0:345b3bc7a0ea 2 #include "blobConfig.h"
mbedalvaro 0:345b3bc7a0ea 3
mbedalvaro 0:345b3bc7a0ea 4 blobConfig::blobConfig(): numBlobs(0) {
mbedalvaro 1:a4050fee11f7 5 //blobArray.clear();// there is no need to do this, the vector does not contains anything here.
mbedalvaro 0:345b3bc7a0ea 6 }
mbedalvaro 0:345b3bc7a0ea 7
mbedalvaro 0:345b3bc7a0ea 8 blobConfig::~blobConfig() {
mbedalvaro 1:a4050fee11f7 9 clearConfig();
mbedalvaro 0:345b3bc7a0ea 10 }
mbedalvaro 0:345b3bc7a0ea 11
mbedalvaro 0:345b3bc7a0ea 12 // =========================================== STANDARD CONFIGURATIONS =============================================================================
mbedalvaro 0:345b3bc7a0ea 13
mbedalvaro 30:d8af03f01cd4 14
mbedalvaro 0:345b3bc7a0ea 15
mbedalvaro 0:345b3bc7a0ea 16 void blobConfig::clearConfig() {
mbedalvaro 1:a4050fee11f7 17 for (int i=0; i<blobArray.size(); i++) delete blobArray[i]; // we must delete the pointer created with new, so the memory for the object is liberated (calls its destructor)
mbedalvaro 1:a4050fee11f7 18 blobArray.clear();
mbedalvaro 1:a4050fee11f7 19 numBlobs=0;// this is just equal to blobArray.size()
mbedalvaro 0:345b3bc7a0ea 20 }
mbedalvaro 0:345b3bc7a0ea 21
mbedalvaro 30:d8af03f01cd4 22 void blobConfig::initConfig(configType cfType, unsigned char numblobs) {
mbedalvaro 30:d8af03f01cd4 23 myConfigType=cfType;
mbedalvaro 30:d8af03f01cd4 24 numBlobs=numblobs;
mbedalvaro 30:d8af03f01cd4 25 switch(myConfigType) {
mbedalvaro 30:d8af03f01cd4 26 case ONE_ELASTIC_FOLLOWING:
mbedalvaro 30:d8af03f01cd4 27 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 28 clearConfig();
mbedalvaro 30:d8af03f01cd4 29 addOneElasticContourFollowing();
mbedalvaro 30:d8af03f01cd4 30 break;
mbedalvaro 30:d8af03f01cd4 31 case ONE_ELASTIC_MOUTH:
mbedalvaro 30:d8af03f01cd4 32 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 33 clearConfig();
mbedalvaro 30:d8af03f01cd4 34 addOneElasticLoopContractCentral();
mbedalvaro 30:d8af03f01cd4 35 break;
mbedalvaro 30:d8af03f01cd4 36 case ONE_ELASTIC_MOUTH_SMALL:
mbedalvaro 30:d8af03f01cd4 37 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 38 clearConfig();
mbedalvaro 30:d8af03f01cd4 39 addOneElasticLoopContractCentralFast();
mbedalvaro 30:d8af03f01cd4 40 break;
mbedalvaro 30:d8af03f01cd4 41 case BOUNCING_SPOTS:
mbedalvaro 30:d8af03f01cd4 42 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 43 clearConfig();
mbedalvaro 30:d8af03f01cd4 44 for (int i=0; i<numBlobs ; i++) addOneRigidLoopBouncing();
mbedalvaro 30:d8af03f01cd4 45 break;
mbedalvaro 30:d8af03f01cd4 46 case LORENTZ_SPOTS:
mbedalvaro 30:d8af03f01cd4 47 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 48 clearConfig();
mbedalvaro 30:d8af03f01cd4 49 for (int i=0; i<numBlobs ; i++) addOneRigidLoopLorentz();
mbedalvaro 30:d8af03f01cd4 50 break;
mbedalvaro 30:d8af03f01cd4 51 case FOLLOWING_SPOTS:
mbedalvaro 30:d8af03f01cd4 52 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 53 clearConfig();
mbedalvaro 30:d8af03f01cd4 54 for (int i=0; i<numBlobs ; i++) addOneRigidLoopFollowing();
mbedalvaro 30:d8af03f01cd4 55 break;
mbedalvaro 30:d8af03f01cd4 56 case AIR_HOCKEY_GAME:
mbedalvaro 30:d8af03f01cd4 57 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 58 clearConfig();
mbedalvaro 30:d8af03f01cd4 59 for (int i=0; i<numBlobs ; i++) addOneRigidLoopAirHockey();
mbedalvaro 30:d8af03f01cd4 60 break;
mbedalvaro 30:d8af03f01cd4 61 case CIRCULAR_PONG_GAME:
mbedalvaro 30:d8af03f01cd4 62 // computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 63 clearConfig();
mbedalvaro 30:d8af03f01cd4 64 // (1) One SPOT_TRACK to track the background. It will be the number 0 in the config.
mbedalvaro 30:d8af03f01cd4 65 addOneRigidTrackingSpot();
mbedalvaro 30:d8af03f01cd4 66
mbedalvaro 30:d8af03f01cd4 67 // (2) Add bouncing spots:
mbedalvaro 30:d8af03f01cd4 68 for (int i=0; i<numBlobs ; i++) addOneRigidLoopBouncing();
mbedalvaro 30:d8af03f01cd4 69 break;
mbedalvaro 30:d8af03f01cd4 70 case VERTICAL_PINBALL_GAME:
mbedalvaro 30:d8af03f01cd4 71 clearConfig();
mbedalvaro 30:d8af03f01cd4 72 // (1) One SPOT_TRACK to track the background - It will be the number 0 in the config.
mbedalvaro 30:d8af03f01cd4 73 addOneRigidTrackingSpot();
mbedalvaro 30:d8af03f01cd4 74
mbedalvaro 30:d8af03f01cd4 75 break;
mbedalvaro 30:d8af03f01cd4 76 case PAC_MAN_GAME:
mbedalvaro 30:d8af03f01cd4 77 clearConfig();
mbedalvaro 30:d8af03f01cd4 78 //(1) add one very slowly slidind-bouncing spot, the PACMAN (number 0 in the config)
mbedalvaro 30:d8af03f01cd4 79 addOneRigidLoopPacman(vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(2,0));
mbedalvaro 30:d8af03f01cd4 80
mbedalvaro 30:d8af03f01cd4 81 // (2) Add some initial SPOT_FOLLOWING or SPOT_GHOST spots (the ghosts):
mbedalvaro 30:d8af03f01cd4 82 //for (int i=0; i<numBlobs; i++)
mbedalvaro 30:d8af03f01cd4 83 addOneRigidLoopFollowing(vector2Df(CENTER_AD_MIRROR_X-200, CENTER_AD_MIRROR_Y-200), vector2Df(2,0));
mbedalvaro 30:d8af03f01cd4 84 addOneRigidLoopGhost(vector2Df(CENTER_AD_MIRROR_X+200, CENTER_AD_MIRROR_Y-200), vector2Df(2,0));
mbedalvaro 30:d8af03f01cd4 85 break;
mbedalvaro 30:d8af03f01cd4 86 default:
mbedalvaro 30:d8af03f01cd4 87 break;
mbedalvaro 30:d8af03f01cd4 88 }
mbedalvaro 30:d8af03f01cd4 89 }
mbedalvaro 30:d8af03f01cd4 90
mbedalvaro 30:d8af03f01cd4 91 // ==================== Template spots from which to create multi-spot configurations: =====================
mbedalvaro 30:d8af03f01cd4 92
mbedalvaro 30:d8af03f01cd4 93 void blobConfig::addOneElasticLoopRelax(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 1:a4050fee11f7 94 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 30:d8af03f01cd4 95 pBlob->createBlob(blobArray.size(), RELAX, initpos, initspeed);
mbedalvaro 1:a4050fee11f7 96 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 97 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 98
mbedalvaro 1:a4050fee11f7 99 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 100 numBlobs=blobArray.size();
mbedalvaro 1:a4050fee11f7 101
mbedalvaro 0:345b3bc7a0ea 102 }
mbedalvaro 0:345b3bc7a0ea 103
mbedalvaro 0:345b3bc7a0ea 104
mbedalvaro 30:d8af03f01cd4 105 void blobConfig::addOneElasticLoopContract(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 1:a4050fee11f7 106 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 30:d8af03f01cd4 107 pBlob->createBlob(blobArray.size(), CONTRACT, initpos, initspeed);
mbedalvaro 1:a4050fee11f7 108 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 109 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 110
mbedalvaro 1:a4050fee11f7 111 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 112 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 113 }
mbedalvaro 0:345b3bc7a0ea 114
mbedalvaro 30:d8af03f01cd4 115 void blobConfig::addOneElasticLoopContractCentral(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 1:a4050fee11f7 116 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 30:d8af03f01cd4 117 pBlob->createBlob(blobArray.size(), CONTRACT_CENTRAL, initpos, initspeed);
mbedalvaro 1:a4050fee11f7 118 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 119 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 120
mbedalvaro 1:a4050fee11f7 121 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 122 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 123 }
mbedalvaro 0:345b3bc7a0ea 124
mbedalvaro 30:d8af03f01cd4 125 void blobConfig::addOneElasticLoopContractCentralFast(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 19:228430f1350e 126 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 30:d8af03f01cd4 127 pBlob->createBlob(blobArray.size(), CONTRACT_CENTRAL_FAST, initpos, initspeed);
mbedalvaro 19:228430f1350e 128 // add this relaxing loop to the present config:
mbedalvaro 19:228430f1350e 129 blobArray.push_back(pBlob);
mbedalvaro 19:228430f1350e 130
mbedalvaro 19:228430f1350e 131 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 19:228430f1350e 132 numBlobs=blobArray.size();
mbedalvaro 19:228430f1350e 133 }
mbedalvaro 19:228430f1350e 134
mbedalvaro 30:d8af03f01cd4 135 void blobConfig::addOneElasticContourFollowing(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 1:a4050fee11f7 136
mbedalvaro 1:a4050fee11f7 137 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 30:d8af03f01cd4 138 pBlob->createBlob(blobArray.size(), CONTOUR_FOLLOWING, initpos, initspeed);
mbedalvaro 1:a4050fee11f7 139 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 140 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 141
mbedalvaro 1:a4050fee11f7 142 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 143 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 144 }
mbedalvaro 0:345b3bc7a0ea 145
mbedalvaro 0:345b3bc7a0ea 146
mbedalvaro 30:d8af03f01cd4 147 void blobConfig:: addOneElasticContourFollowingFAST(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 1:a4050fee11f7 148 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 30:d8af03f01cd4 149 pBlob->createBlob(blobArray.size(), CONTOUR_FOLLOWING_FAST, initpos, initspeed);
mbedalvaro 30:d8af03f01cd4 150 // add this relaxing loop to the present config:
mbedalvaro 30:d8af03f01cd4 151 blobArray.push_back(pBlob);
mbedalvaro 30:d8af03f01cd4 152
mbedalvaro 30:d8af03f01cd4 153 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 30:d8af03f01cd4 154 numBlobs=blobArray.size();
mbedalvaro 30:d8af03f01cd4 155 }
mbedalvaro 30:d8af03f01cd4 156
mbedalvaro 30:d8af03f01cd4 157 void blobConfig::addOneElasticBouncing(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 30:d8af03f01cd4 158 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 30:d8af03f01cd4 159 pBlob->createBlob(blobArray.size(), BOUNCING, initpos, initspeed);
mbedalvaro 0:345b3bc7a0ea 160 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 161 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 162
mbedalvaro 1:a4050fee11f7 163 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 164 numBlobs=blobArray.size();
mbedalvaro 1:a4050fee11f7 165 }
mbedalvaro 1:a4050fee11f7 166
mbedalvaro 30:d8af03f01cd4 167 void blobConfig::addOneRigidLoopBouncing(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 30:d8af03f01cd4 168 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 169 pBlob->createBlob(blobArray.size(), SPOT_BOUNCING, initpos, initspeed);
mbedalvaro 1:a4050fee11f7 170 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 171 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 172
mbedalvaro 1:a4050fee11f7 173 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 174 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 175 }
mbedalvaro 0:345b3bc7a0ea 176
mbedalvaro 30:d8af03f01cd4 177 void blobConfig::addOneRigidLoopPacman(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 1:a4050fee11f7 178 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 179 pBlob->createBlob(blobArray.size(), SPOT_PACMAN, initpos, initspeed);
mbedalvaro 30:d8af03f01cd4 180 // add this relaxing loop to the present config:
mbedalvaro 30:d8af03f01cd4 181 blobArray.push_back(pBlob);
mbedalvaro 30:d8af03f01cd4 182
mbedalvaro 30:d8af03f01cd4 183 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 30:d8af03f01cd4 184 numBlobs=blobArray.size();
mbedalvaro 30:d8af03f01cd4 185 }
mbedalvaro 30:d8af03f01cd4 186 void blobConfig::addOneRigidLoopGhost(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 30:d8af03f01cd4 187 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 188 pBlob->createBlob(blobArray.size(), SPOT_GHOST, initpos, initspeed);
mbedalvaro 0:345b3bc7a0ea 189 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 190 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 191
mbedalvaro 1:a4050fee11f7 192 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 193 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 194 }
mbedalvaro 0:345b3bc7a0ea 195
mbedalvaro 30:d8af03f01cd4 196
mbedalvaro 30:d8af03f01cd4 197 void blobConfig::addOneRigidLoopLorentz(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 27:1ce994629ffc 198 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 199 pBlob->createBlob(blobArray.size(), SPOT_LORENTZ_FORCE, initpos, initspeed);
mbedalvaro 27:1ce994629ffc 200 // add this loop to the present config:
mbedalvaro 27:1ce994629ffc 201 blobArray.push_back(pBlob);
mbedalvaro 27:1ce994629ffc 202
mbedalvaro 27:1ce994629ffc 203 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 27:1ce994629ffc 204 numBlobs=blobArray.size();
mbedalvaro 27:1ce994629ffc 205 }
mbedalvaro 27:1ce994629ffc 206
mbedalvaro 30:d8af03f01cd4 207 void blobConfig::addOneRigidLoopAirHockey(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 28:44b7b6e35548 208 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 209 pBlob->createBlob(blobArray.size(), SPOT_AIR_HOCKEY, initpos, initspeed);
mbedalvaro 28:44b7b6e35548 210 // add this loop to the present config:
mbedalvaro 28:44b7b6e35548 211 blobArray.push_back(pBlob);
mbedalvaro 28:44b7b6e35548 212
mbedalvaro 28:44b7b6e35548 213 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 28:44b7b6e35548 214 numBlobs=blobArray.size();
mbedalvaro 28:44b7b6e35548 215 }
mbedalvaro 28:44b7b6e35548 216
mbedalvaro 30:d8af03f01cd4 217 void blobConfig::addOneRigidLoopFollowing(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 1:a4050fee11f7 218 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 219 pBlob->createBlob(blobArray.size(), SPOT_FOLLOWING, initpos, initspeed);
mbedalvaro 1:a4050fee11f7 220 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 221 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 222
mbedalvaro 1:a4050fee11f7 223 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 224 numBlobs=blobArray.size();
mbedalvaro 1:a4050fee11f7 225 }
mbedalvaro 0:345b3bc7a0ea 226
mbedalvaro 30:d8af03f01cd4 227 void blobConfig::addOneRigidLoopTest(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 5:73cd58b58f95 228 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 229 pBlob->createBlob(blobArray.size(), SPOT_TEST, initpos, initspeed);
mbedalvaro 5:73cd58b58f95 230 // add this relaxing loop to the present config:
mbedalvaro 5:73cd58b58f95 231 blobArray.push_back(pBlob);
mbedalvaro 5:73cd58b58f95 232
mbedalvaro 5:73cd58b58f95 233 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 5:73cd58b58f95 234 numBlobs=blobArray.size();
mbedalvaro 5:73cd58b58f95 235 }
mbedalvaro 5:73cd58b58f95 236
mbedalvaro 30:d8af03f01cd4 237 void blobConfig::addOneRigidTrackingSpot(vector2Df initpos, vector2Df initspeed) {
mbedalvaro 30:d8af03f01cd4 238 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 30:d8af03f01cd4 239 pBlob->createBlob(blobArray.size(), SPOT_TRACK, initpos, initspeed);
mbedalvaro 30:d8af03f01cd4 240 // add this relaxing loop to the present config:
mbedalvaro 30:d8af03f01cd4 241 blobArray.push_back(pBlob);
mbedalvaro 30:d8af03f01cd4 242
mbedalvaro 30:d8af03f01cd4 243 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 30:d8af03f01cd4 244 numBlobs=blobArray.size();
mbedalvaro 30:d8af03f01cd4 245 }
mbedalvaro 0:345b3bc7a0ea 246
mbedalvaro 0:345b3bc7a0ea 247 // ==================================================================================================================================================
mbedalvaro 0:345b3bc7a0ea 248
mbedalvaro 0:345b3bc7a0ea 249
mbedalvaro 1:a4050fee11f7 250 void blobConfig::allKill() { // this put all the blobs in "dead" mode, meaning that neither rendering nor update is done (but they are not deleted).
mbedalvaro 1:a4050fee11f7 251 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 252 blobArray[i]->render = false;
mbedalvaro 1:a4050fee11f7 253 blobArray[i]->standByMode = false;
mbedalvaro 1:a4050fee11f7 254 }
mbedalvaro 1:a4050fee11f7 255 }
mbedalvaro 0:345b3bc7a0ea 256 void blobConfig::allAlive() {
mbedalvaro 1:a4050fee11f7 257 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 258 blobArray[i]->render = true;
mbedalvaro 1:a4050fee11f7 259 blobArray[i]->standByMode = true;
mbedalvaro 1:a4050fee11f7 260 }
mbedalvaro 1:a4050fee11f7 261 }
mbedalvaro 1:a4050fee11f7 262
mbedalvaro 0:345b3bc7a0ea 263 void blobConfig::allStandBy() {
mbedalvaro 1:a4050fee11f7 264 for (int i=0; i<blobArray.size(); i++) blobArray[i]->standByMode = true;
mbedalvaro 0:345b3bc7a0ea 265 }
mbedalvaro 0:345b3bc7a0ea 266
mbedalvaro 0:345b3bc7a0ea 267 void blobConfig::allResume() {
mbedalvaro 1:a4050fee11f7 268 for (int i=0; i<blobArray.size(); i++) blobArray[i]->standByMode = false;
mbedalvaro 0:345b3bc7a0ea 269 }
mbedalvaro 0:345b3bc7a0ea 270
mbedalvaro 1:a4050fee11f7 271 void blobConfig::allVisible() {
mbedalvaro 1:a4050fee11f7 272 for (int i=0; i<blobArray.size(); i++) blobArray[i]->render = true;
mbedalvaro 0:345b3bc7a0ea 273 }
mbedalvaro 0:345b3bc7a0ea 274
mbedalvaro 0:345b3bc7a0ea 275 void blobConfig::allInvisible() { // note that they may continue to evolve
mbedalvaro 1:a4050fee11f7 276 for (int i=0; i<blobArray.size(); i++) blobArray[i]->render = false;
mbedalvaro 0:345b3bc7a0ea 277 }
mbedalvaro 0:345b3bc7a0ea 278
mbedalvaro 25:74cb85b85fd2 279 void blobConfig::allSetColor(unsigned char c) {
mbedalvaro 25:74cb85b85fd2 280 for (int i=0; i<blobArray.size(); i++) blobArray[i]->setColor(c);
mbedalvaro 25:74cb85b85fd2 281 }
mbedalvaro 25:74cb85b85fd2 282
mbedalvaro 30:d8af03f01cd4 283 void blobConfig::update() { // update dynamics of the blob configuration:
mbedalvaro 30:d8af03f01cd4 284
mbedalvaro 30:d8af03f01cd4 285 // (1) First, update dynamics of each blob independently:
mbedalvaro 1:a4050fee11f7 286 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 3:b44ff6de81bd 287 if (blobArray[i]->standByMode==false) blobArray[i]->update();
mbedalvaro 1:a4050fee11f7 288 }
mbedalvaro 30:d8af03f01cd4 289 // (2) Then, depending on the config type, perform some special test and updates:
mbedalvaro 30:d8af03f01cd4 290 switch(myConfigType) {
mbedalvaro 30:d8af03f01cd4 291 // simple behaviours:
mbedalvaro 30:d8af03f01cd4 292 case ONE_ELASTIC_FOLLOWING:
mbedalvaro 30:d8af03f01cd4 293 break;
mbedalvaro 30:d8af03f01cd4 294 case ONE_ELASTIC_MOUTH:
mbedalvaro 30:d8af03f01cd4 295 break;
mbedalvaro 30:d8af03f01cd4 296 case ONE_ELASTIC_MOUTH_SMALL:
mbedalvaro 30:d8af03f01cd4 297 break;
mbedalvaro 30:d8af03f01cd4 298 case BOUNCING_SPOTS:
mbedalvaro 30:d8af03f01cd4 299 break;
mbedalvaro 30:d8af03f01cd4 300 case LORENTZ_SPOTS:
mbedalvaro 30:d8af03f01cd4 301 break;
mbedalvaro 30:d8af03f01cd4 302 case FOLLOWING_SPOTS:
mbedalvaro 30:d8af03f01cd4 303 break;
mbedalvaro 30:d8af03f01cd4 304 // more game-like:
mbedalvaro 30:d8af03f01cd4 305 case AIR_HOCKEY_GAME:
mbedalvaro 30:d8af03f01cd4 306 break;
mbedalvaro 30:d8af03f01cd4 307 case CIRCULAR_PONG_GAME:
mbedalvaro 30:d8af03f01cd4 308 break;
mbedalvaro 30:d8af03f01cd4 309 case VERTICAL_PINBALL_GAME:
mbedalvaro 30:d8af03f01cd4 310 break;
mbedalvaro 30:d8af03f01cd4 311 case PAC_MAN_GAME:
mbedalvaro 30:d8af03f01cd4 312 break;
mbedalvaro 30:d8af03f01cd4 313 default:
mbedalvaro 30:d8af03f01cd4 314 break;
mbedalvaro 30:d8af03f01cd4 315 }
mbedalvaro 30:d8af03f01cd4 316
mbedalvaro 30:d8af03f01cd4 317
mbedalvaro 30:d8af03f01cd4 318 }
mbedalvaro 30:d8af03f01cd4 319
mbedalvaro 30:d8af03f01cd4 320 void blobConfig::computeBoundingBox() {
mbedalvaro 30:d8af03f01cd4 321 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 30:d8af03f01cd4 322 blobArray[i]->computeBoundingBox();
mbedalvaro 30:d8af03f01cd4 323 }
mbedalvaro 0:345b3bc7a0ea 324 }
mbedalvaro 0:345b3bc7a0ea 325
mbedalvaro 1:a4050fee11f7 326 void blobConfig::draw() { // draw uses the opengl like renderer (if any), and save projected trajectory in the LaserSensingTrajectory object of each blob
mbedalvaro 1:a4050fee11f7 327 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 328 if (blobArray[i]->render==true) blobArray[i]->draw();
mbedalvaro 1:a4050fee11f7 329 }
mbedalvaro 0:345b3bc7a0ea 330 }
mbedalvaro 0:345b3bc7a0ea 331
mbedalvaro 1:a4050fee11f7 332 void blobConfig::sendConfData() {
mbedalvaro 1:a4050fee11f7 333 // For the time being, only "per blob" data sending:
mbedalvaro 1:a4050fee11f7 334 // (b) Per-spot sending of data (note: both are NOT exclusive; so if we want just packaged data, we need to make all the spot STOP sending data.
mbedalvaro 18:d72935b13858 335 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 336 if (blobArray[i]->render==true) blobArray[i]->sendData(); // a blob that is in stand-by mode may send data (good for testing with a fixed loop)
mbedalvaro 1:a4050fee11f7 337 }
mbedalvaro 0:345b3bc7a0ea 338 }
mbedalvaro 0:345b3bc7a0ea 339
mbedalvaro 0:345b3bc7a0ea 340
mbedalvaro 0:345b3bc7a0ea 341
mbedalvaro 0:345b3bc7a0ea 342