Game for Leeds University Gamepad for the FRDM-K64F: Game is a RPG Horror Title.

Dependencies:   mbed FATFileSystem

Committer:
rottenegg
Date:
Sun May 05 03:45:29 2019 +0000
Revision:
11:7f3e9bc7366d
Parent:
10:4fda7b01484a
Child:
12:ff8d26124c38
WDplayer: Added new ISR Ticker compatible Functions and updated Documents.

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