Dependencies:   mbed FATFileSystem

Committer:
rottenegg
Date:
Fri Apr 26 02:31:11 2019 +0000
Revision:
10:4fda7b01484a
Parent:
9:ac396c818874
Child:
11:7f3e9bc7366d
CaMove: Added Additional Chaser Character Model.; SceneCreator: Added RNG input to cause Minor Changes.; SceneFunctions: Added Scene 2, 3 Functions.; Ready For Main GAME MANAGER...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rottenegg 8:e3a76a808a4c 1 #include "SceneCreator.h"
rottenegg 8:e3a76a808a4c 2 #include "ScenePaths.h"
rottenegg 8:e3a76a808a4c 3
rottenegg 8:e3a76a808a4c 4 DigitalOut led(LED_BLUE);
rottenegg 8:e3a76a808a4c 5 Serial pc(USBTX,USBRX);
rottenegg 9:ac396c818874 6 SceneCreator::SceneCreator(PinName Button) {
rottenegg 9:ac396c818874 7 this->set_buttonPin(Button);
rottenegg 9:ac396c818874 8 dead = false;
rottenegg 8:e3a76a808a4c 9
rottenegg 8:e3a76a808a4c 10 }
rottenegg 8:e3a76a808a4c 11
rottenegg 8:e3a76a808a4c 12 SceneCreator::~SceneCreator() {
rottenegg 9:ac396c818874 13 this->deletebutton();
rottenegg 8:e3a76a808a4c 14 }
rottenegg 8:e3a76a808a4c 15
rottenegg 10:4fda7b01484a 16 void SceneCreator::Scenesp(N5110 &lcd, CaMove &CM,short int spl,short int spx,short int spy, Direction spd, int rng) {
rottenegg 8:e3a76a808a4c 17 CM.init(spx,spy,spd);
rottenegg 10:4fda7b01484a 18 CM.AIinit();
rottenegg 10:4fda7b01484a 19 lcd.normalMode();
rottenegg 8:e3a76a808a4c 20 this->set_sreg(CM,spl);
rottenegg 8:e3a76a808a4c 21 bool p[6] = {true,true,true,true,true,true};
rottenegg 9:ac396c818874 22 while(!dead && CM.in_screen()) {
rottenegg 8:e3a76a808a4c 23 lcd.clear();
rottenegg 8:e3a76a808a4c 24 Bitmap::renderBMP(SCN[spl],lcd,0,0);
rottenegg 8:e3a76a808a4c 25 if (p[0]) {
rottenegg 10:4fda7b01484a 26 this->pre_func0(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 27 }
rottenegg 8:e3a76a808a4c 28 if (p[1]) {
rottenegg 10:4fda7b01484a 29 this->pre_func1(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 30 }
rottenegg 8:e3a76a808a4c 31 if (p[2]) {
rottenegg 10:4fda7b01484a 32 this->pre_func2(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 33 }
rottenegg 8:e3a76a808a4c 34 if (p[3]) {
rottenegg 10:4fda7b01484a 35 this->pre_func3(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 36 }
rottenegg 8:e3a76a808a4c 37 if (p[4]) {
rottenegg 10:4fda7b01484a 38 this->pre_func4(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 39 }
rottenegg 8:e3a76a808a4c 40 if (p[5]) {
rottenegg 10:4fda7b01484a 41 this->pre_func5(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 42 }
rottenegg 8:e3a76a808a4c 43 CM.move(lcd);
rottenegg 10:4fda7b01484a 44 CM.chase(lcd,spl);
rottenegg 8:e3a76a808a4c 45 switch(CM.get_treg()) {
rottenegg 8:e3a76a808a4c 46 case 0:
rottenegg 8:e3a76a808a4c 47 if(p[0]) {
rottenegg 8:e3a76a808a4c 48 p[0] = false;
rottenegg 9:ac396c818874 49 this->flash(lcd);
rottenegg 8:e3a76a808a4c 50 }
rottenegg 10:4fda7b01484a 51 this->pos_func0(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 52 break;
rottenegg 8:e3a76a808a4c 53 case 1:
rottenegg 8:e3a76a808a4c 54 if(p[1]) {
rottenegg 8:e3a76a808a4c 55 p[1] = false;
rottenegg 9:ac396c818874 56 this->flash(lcd);
rottenegg 8:e3a76a808a4c 57 }
rottenegg 10:4fda7b01484a 58 this->pos_func1(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 59 break;
rottenegg 8:e3a76a808a4c 60 case 2:
rottenegg 8:e3a76a808a4c 61 if(p[2]) {
rottenegg 8:e3a76a808a4c 62 p[2] = false;
rottenegg 9:ac396c818874 63 this->flash(lcd);
rottenegg 8:e3a76a808a4c 64 }
rottenegg 10:4fda7b01484a 65 this->pos_func2(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 66 break;
rottenegg 8:e3a76a808a4c 67 case 3:
rottenegg 8:e3a76a808a4c 68 if(p[3]) {
rottenegg 8:e3a76a808a4c 69 p[3] = false;
rottenegg 9:ac396c818874 70 this->flash(lcd);
rottenegg 8:e3a76a808a4c 71 }
rottenegg 10:4fda7b01484a 72 this->pos_func3(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 73 break;
rottenegg 8:e3a76a808a4c 74 case 4:
rottenegg 8:e3a76a808a4c 75 if(p[4]) {
rottenegg 8:e3a76a808a4c 76 p[4] = false;
rottenegg 9:ac396c818874 77 this->flash(lcd);
rottenegg 8:e3a76a808a4c 78 }
rottenegg 10:4fda7b01484a 79 this->pos_func4(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 80 break;
rottenegg 8:e3a76a808a4c 81 case 5:
rottenegg 8:e3a76a808a4c 82 if(p[5]) {
rottenegg 8:e3a76a808a4c 83 p[5] = false;
rottenegg 9:ac396c818874 84 this->flash(lcd);
rottenegg 8:e3a76a808a4c 85 }
rottenegg 10:4fda7b01484a 86 this->pos_func5(spl,lcd,CM,rng);
rottenegg 8:e3a76a808a4c 87 break;
rottenegg 8:e3a76a808a4c 88 };
rottenegg 9:ac396c818874 89 if (CM.is_caught()) {
rottenegg 9:ac396c818874 90 dead = true;
rottenegg 9:ac396c818874 91 }
rottenegg 8:e3a76a808a4c 92 lcd.refresh();
rottenegg 8:e3a76a808a4c 93 wait(0.1);
rottenegg 8:e3a76a808a4c 94 };
rottenegg 8:e3a76a808a4c 95 CM.delete_regions();
rottenegg 8:e3a76a808a4c 96 };
rottenegg 8:e3a76a808a4c 97
rottenegg 9:ac396c818874 98 //settings
rottenegg 8:e3a76a808a4c 99 void SceneCreator::set_sreg(CaMove &CM,int sce) {
rottenegg 8:e3a76a808a4c 100 switch(sce) {
rottenegg 8:e3a76a808a4c 101 case 0:
rottenegg 9:ac396c818874 102 this->set_scene0(CM);
rottenegg 8:e3a76a808a4c 103 break;
rottenegg 8:e3a76a808a4c 104 case 1:
rottenegg 9:ac396c818874 105 this->set_scene1(CM);
rottenegg 8:e3a76a808a4c 106 break;
rottenegg 8:e3a76a808a4c 107 case 2:
rottenegg 10:4fda7b01484a 108 this->set_scene2(CM);
rottenegg 8:e3a76a808a4c 109 break;
rottenegg 8:e3a76a808a4c 110 case 3:
rottenegg 10:4fda7b01484a 111 this->set_scene3(CM);
rottenegg 8:e3a76a808a4c 112 break;
rottenegg 8:e3a76a808a4c 113 case 4:
rottenegg 8:e3a76a808a4c 114 break;
rottenegg 8:e3a76a808a4c 115 }
rottenegg 8:e3a76a808a4c 116 }
rottenegg 8:e3a76a808a4c 117
rottenegg 8:e3a76a808a4c 118 //Function Pointers Failing mbed in-capable
rottenegg 8:e3a76a808a4c 119 //pre-func
rottenegg 10:4fda7b01484a 120 void SceneCreator::pre_func0(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 121 switch(sce) {
rottenegg 8:e3a76a808a4c 122 case 0:
rottenegg 9:ac396c818874 123 this->obj0_scene0(lcd);
rottenegg 8:e3a76a808a4c 124 break;
rottenegg 8:e3a76a808a4c 125 case 1:
rottenegg 9:ac396c818874 126 this->obj0_scene1(lcd);
rottenegg 8:e3a76a808a4c 127 break;
rottenegg 8:e3a76a808a4c 128 case 2:
rottenegg 10:4fda7b01484a 129 this->obj0_scene2(lcd);
rottenegg 8:e3a76a808a4c 130 break;
rottenegg 8:e3a76a808a4c 131 case 3:
rottenegg 10:4fda7b01484a 132 this->obj0_scene3(lcd);
rottenegg 8:e3a76a808a4c 133 break;
rottenegg 8:e3a76a808a4c 134 case 4:
rottenegg 8:e3a76a808a4c 135 break;
rottenegg 8:e3a76a808a4c 136 }
rottenegg 8:e3a76a808a4c 137 }
rottenegg 8:e3a76a808a4c 138
rottenegg 10:4fda7b01484a 139 void SceneCreator::pre_func1(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 140 switch(sce) {
rottenegg 8:e3a76a808a4c 141 case 0:
rottenegg 8:e3a76a808a4c 142 break;
rottenegg 8:e3a76a808a4c 143 case 1:
rottenegg 9:ac396c818874 144 this->obj1_scene1(lcd);
rottenegg 8:e3a76a808a4c 145 break;
rottenegg 8:e3a76a808a4c 146 case 2:
rottenegg 10:4fda7b01484a 147 this->obj1_scene2(lcd,rng);
rottenegg 8:e3a76a808a4c 148 break;
rottenegg 8:e3a76a808a4c 149 case 3:
rottenegg 10:4fda7b01484a 150 this->obj1_scene3(lcd);
rottenegg 8:e3a76a808a4c 151 break;
rottenegg 8:e3a76a808a4c 152 case 4:
rottenegg 8:e3a76a808a4c 153 break;
rottenegg 8:e3a76a808a4c 154 }
rottenegg 8:e3a76a808a4c 155 }
rottenegg 8:e3a76a808a4c 156
rottenegg 10:4fda7b01484a 157 void SceneCreator::pre_func2(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 158 switch(sce) {
rottenegg 8:e3a76a808a4c 159 case 0:
rottenegg 8:e3a76a808a4c 160 break;
rottenegg 8:e3a76a808a4c 161 case 1:
rottenegg 8:e3a76a808a4c 162 break;
rottenegg 8:e3a76a808a4c 163 case 2:
rottenegg 8:e3a76a808a4c 164 break;
rottenegg 8:e3a76a808a4c 165 case 3:
rottenegg 8:e3a76a808a4c 166 break;
rottenegg 8:e3a76a808a4c 167 case 4:
rottenegg 8:e3a76a808a4c 168 break;
rottenegg 8:e3a76a808a4c 169 }
rottenegg 8:e3a76a808a4c 170 }
rottenegg 8:e3a76a808a4c 171
rottenegg 10:4fda7b01484a 172 void SceneCreator::pre_func3(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 173 switch(sce) {
rottenegg 8:e3a76a808a4c 174 case 0:
rottenegg 8:e3a76a808a4c 175 break;
rottenegg 8:e3a76a808a4c 176 case 1:
rottenegg 8:e3a76a808a4c 177 break;
rottenegg 8:e3a76a808a4c 178 case 2:
rottenegg 8:e3a76a808a4c 179 break;
rottenegg 8:e3a76a808a4c 180 case 3:
rottenegg 10:4fda7b01484a 181 this->obj3_scene3(lcd);
rottenegg 8:e3a76a808a4c 182 break;
rottenegg 8:e3a76a808a4c 183 case 4:
rottenegg 8:e3a76a808a4c 184 break;
rottenegg 8:e3a76a808a4c 185 }
rottenegg 8:e3a76a808a4c 186 }
rottenegg 8:e3a76a808a4c 187
rottenegg 10:4fda7b01484a 188 void SceneCreator::pre_func4(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 189 switch(sce) {
rottenegg 8:e3a76a808a4c 190 case 0:
rottenegg 8:e3a76a808a4c 191 break;
rottenegg 8:e3a76a808a4c 192 case 1:
rottenegg 8:e3a76a808a4c 193 break;
rottenegg 8:e3a76a808a4c 194 case 2:
rottenegg 8:e3a76a808a4c 195 break;
rottenegg 8:e3a76a808a4c 196 case 3:
rottenegg 10:4fda7b01484a 197 this->obj4_scene3(lcd);
rottenegg 8:e3a76a808a4c 198 break;
rottenegg 8:e3a76a808a4c 199 case 4:
rottenegg 8:e3a76a808a4c 200 break;
rottenegg 8:e3a76a808a4c 201 }
rottenegg 8:e3a76a808a4c 202 }
rottenegg 8:e3a76a808a4c 203
rottenegg 10:4fda7b01484a 204 void SceneCreator::pre_func5(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 205 switch(sce) {
rottenegg 8:e3a76a808a4c 206 case 0:
rottenegg 8:e3a76a808a4c 207 break;
rottenegg 8:e3a76a808a4c 208 case 1:
rottenegg 8:e3a76a808a4c 209 break;
rottenegg 8:e3a76a808a4c 210 case 2:
rottenegg 8:e3a76a808a4c 211 break;
rottenegg 8:e3a76a808a4c 212 case 3:
rottenegg 8:e3a76a808a4c 213 break;
rottenegg 8:e3a76a808a4c 214 case 4:
rottenegg 8:e3a76a808a4c 215 break;
rottenegg 8:e3a76a808a4c 216 }
rottenegg 8:e3a76a808a4c 217 }
rottenegg 8:e3a76a808a4c 218 //pos func
rottenegg 8:e3a76a808a4c 219
rottenegg 10:4fda7b01484a 220 void SceneCreator::pos_func0(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 221 switch(sce) {
rottenegg 8:e3a76a808a4c 222 case 0:
rottenegg 9:ac396c818874 223 this->event0_scene0(lcd);
rottenegg 8:e3a76a808a4c 224 break;
rottenegg 8:e3a76a808a4c 225 case 1:
rottenegg 9:ac396c818874 226 this->event0_scene1(lcd);
rottenegg 8:e3a76a808a4c 227 break;
rottenegg 8:e3a76a808a4c 228 case 2:
rottenegg 10:4fda7b01484a 229 this->event0_scene2(lcd,CM);
rottenegg 8:e3a76a808a4c 230 break;
rottenegg 8:e3a76a808a4c 231 case 3:
rottenegg 10:4fda7b01484a 232 this->event0_scene3(lcd);
rottenegg 8:e3a76a808a4c 233 break;
rottenegg 8:e3a76a808a4c 234 case 4:
rottenegg 8:e3a76a808a4c 235 break;
rottenegg 8:e3a76a808a4c 236 }
rottenegg 8:e3a76a808a4c 237 }
rottenegg 8:e3a76a808a4c 238
rottenegg 10:4fda7b01484a 239 void SceneCreator::pos_func1(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 240 switch(sce) {
rottenegg 8:e3a76a808a4c 241 case 0:
rottenegg 9:ac396c818874 242 this->event1_scene0(lcd);
rottenegg 8:e3a76a808a4c 243 break;
rottenegg 8:e3a76a808a4c 244 case 1:
rottenegg 9:ac396c818874 245 this->event1_scene1(lcd);
rottenegg 8:e3a76a808a4c 246 break;
rottenegg 8:e3a76a808a4c 247 case 2:
rottenegg 8:e3a76a808a4c 248 break;
rottenegg 8:e3a76a808a4c 249 case 3:
rottenegg 10:4fda7b01484a 250 this->event1_scene3(lcd);
rottenegg 8:e3a76a808a4c 251 break;
rottenegg 8:e3a76a808a4c 252 case 4:
rottenegg 8:e3a76a808a4c 253 break;
rottenegg 8:e3a76a808a4c 254 }
rottenegg 8:e3a76a808a4c 255 }
rottenegg 8:e3a76a808a4c 256
rottenegg 10:4fda7b01484a 257 void SceneCreator::pos_func2(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 10:4fda7b01484a 258 switch(sce) {
rottenegg 10:4fda7b01484a 259 case 0:
rottenegg 10:4fda7b01484a 260 break;
rottenegg 10:4fda7b01484a 261 case 1:
rottenegg 10:4fda7b01484a 262 break;
rottenegg 10:4fda7b01484a 263 case 2:
rottenegg 10:4fda7b01484a 264 break;
rottenegg 10:4fda7b01484a 265 case 3:
rottenegg 10:4fda7b01484a 266 this->event2_scene3(lcd);
rottenegg 10:4fda7b01484a 267 break;
rottenegg 10:4fda7b01484a 268 case 4:
rottenegg 10:4fda7b01484a 269 break;
rottenegg 10:4fda7b01484a 270 }
rottenegg 10:4fda7b01484a 271 }
rottenegg 10:4fda7b01484a 272
rottenegg 10:4fda7b01484a 273
rottenegg 10:4fda7b01484a 274 void SceneCreator::pos_func3(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 10:4fda7b01484a 275 switch(sce) {
rottenegg 10:4fda7b01484a 276 case 0:
rottenegg 10:4fda7b01484a 277 break;
rottenegg 10:4fda7b01484a 278 case 1:
rottenegg 10:4fda7b01484a 279 break;
rottenegg 10:4fda7b01484a 280 case 2:
rottenegg 10:4fda7b01484a 281 break;
rottenegg 10:4fda7b01484a 282 case 3:
rottenegg 10:4fda7b01484a 283 this->event3_scene3(lcd,CM);
rottenegg 10:4fda7b01484a 284 break;
rottenegg 10:4fda7b01484a 285 case 4:
rottenegg 10:4fda7b01484a 286 break;
rottenegg 10:4fda7b01484a 287 }
rottenegg 10:4fda7b01484a 288 }
rottenegg 10:4fda7b01484a 289
rottenegg 10:4fda7b01484a 290 void SceneCreator::pos_func4(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 291 switch(sce) {
rottenegg 8:e3a76a808a4c 292 case 0:
rottenegg 8:e3a76a808a4c 293 break;
rottenegg 8:e3a76a808a4c 294 case 1:
rottenegg 8:e3a76a808a4c 295 break;
rottenegg 8:e3a76a808a4c 296 case 2:
rottenegg 8:e3a76a808a4c 297 break;
rottenegg 8:e3a76a808a4c 298 case 3:
rottenegg 8:e3a76a808a4c 299 break;
rottenegg 8:e3a76a808a4c 300 case 4:
rottenegg 8:e3a76a808a4c 301 break;
rottenegg 8:e3a76a808a4c 302 }
rottenegg 8:e3a76a808a4c 303 }
rottenegg 8:e3a76a808a4c 304
rottenegg 10:4fda7b01484a 305 void SceneCreator::pos_func5(int sce,N5110 &lcd,CaMove &CM,int rng) {
rottenegg 8:e3a76a808a4c 306 switch(sce) {
rottenegg 8:e3a76a808a4c 307 case 0:
rottenegg 8:e3a76a808a4c 308 break;
rottenegg 8:e3a76a808a4c 309 case 1:
rottenegg 8:e3a76a808a4c 310 break;
rottenegg 8:e3a76a808a4c 311 case 2:
rottenegg 8:e3a76a808a4c 312 break;
rottenegg 8:e3a76a808a4c 313 case 3:
rottenegg 8:e3a76a808a4c 314 break;
rottenegg 8:e3a76a808a4c 315 case 4:
rottenegg 8:e3a76a808a4c 316 break;
rottenegg 8:e3a76a808a4c 317 }
rottenegg 8:e3a76a808a4c 318 }
rottenegg 8:e3a76a808a4c 319