Dependencies:   mbed FATFileSystem

Revision:
12:ff8d26124c38
Parent:
11:7f3e9bc7366d
Child:
13:95323e0f2fcb
--- a/SceneCreator/SceneCreator.cpp	Sun May 05 03:45:29 2019 +0000
+++ b/SceneCreator/SceneCreator.cpp	Sun May 05 19:32:58 2019 +0000
@@ -1,9 +1,11 @@
 #include "SceneCreator.h"
 #include "ScenePaths.h"
 
+Timer dynatime;
+
 DigitalOut led(LED_BLUE);
 Serial pc(USBTX,USBRX);
-Timer t;
+
 SceneCreator::SceneCreator(PinName Button) {
     this->set_buttonPin(Button);
     dead = false;
@@ -14,17 +16,43 @@
    this->deletebutton();
 }
 
-void SceneCreator::Scenesp(N5110 &lcd, CaMove &CM,short int spl,short int spx,short int spy, Direction spd, int rng) {
-    t.start();
+void SceneCreator::Scenesp(N5110 &lcd, CaMove &CM,short int spl,short int spx,short int spy, Direction spd, int rng,WDplayer &wav) {
+    wav.ISRset();
     CM.init(spx,spy,spd);
     CM.AIinit();
     lcd.normalMode();
     this->set_sreg(CM,spl);
     bool p[6] = {true,true,true,true,true,true};
     while(!dead && CM.in_screen()) {
+        dynatime.start();
         lcd.clear();
+        wav.ISRpreload();
         Bitmap::renderBMP(SCN[spl],lcd,0,0);
-        if (p[0]) {
+        //CORE_1
+        this->Core_1(lcd, CM,spl,rng,p);
+        CM.move(lcd);
+        CM.chase(lcd,spl);
+        wav.ISRpreload();
+        //CORE_2
+        this->Core_2(lcd, CM,spl,rng,p,wav);
+        if (CM.is_caught()) {
+            dead = true;
+        }
+        lcd.refresh();
+        dynatime.stop();
+        float waittime = 0.15f - dynatime.read();
+        pc.printf("%f\n",waittime);
+        if (waittime > 0.00000f) {
+            wait(waittime);
+        }
+        dynatime.reset();
+    };
+    wav.ISRreset();
+    CM.delete_regions();
+};
+
+void SceneCreator::Core_1(N5110 &lcd, CaMove &CM,short int spl,int rng,bool p[6]) {
+    if (p[0]) {
             this->pre_func0(spl,lcd,CM,rng);
         }
         if (p[1]) {
@@ -42,62 +70,66 @@
         if (p[5]) {
             this->pre_func5(spl,lcd,CM,rng);
         }
-        CM.move(lcd);
-        CM.chase(lcd,spl);
-        switch(CM.get_treg()) {
+}
+
+void SceneCreator::Core_2(N5110 &lcd, CaMove &CM,short int spl,int rng,bool (&p)[6],WDplayer &wav) {
+    switch(CM.get_treg()) {
             case 0:
+                wav.ISRpause();
                 if(p[0]) {
-                    p[0] = false;
+                    p[0] *= false;
                     this->flash(lcd);
                 }
                 this->pos_func0(spl,lcd,CM,rng);
+                wav.ISRresume();
             break;
             case 1:
+                wav.ISRpause();
                 if(p[1]) {
-                    p[1] = false;
+                    p[1] *= false;
                     this->flash(lcd);
                 }
                 this->pos_func1(spl,lcd,CM,rng);
+                wav.ISRresume();
             break;
             case 2:
+                wav.ISRpause();
                 if(p[2]) {
-                    p[2] = false;
+                    p[2] *= false;
                     this->flash(lcd);
                 }
                 this->pos_func2(spl,lcd,CM,rng);
+                wav.ISRresume();
             break;
             case 3:
+                wav.ISRpause();
                 if(p[3]) {
-                    p[3] = false;
+                    p[3] *= false;
                     this->flash(lcd);
                 }
                 this->pos_func3(spl,lcd,CM,rng);
+                wav.ISRresume();
             break;
             case 4:
+                wav.ISRpause();
                 if(p[4]) {
-                    p[4] = false;
+                    p[4] *= false;
                     this->flash(lcd);
                 }
                 this->pos_func4(spl,lcd,CM,rng);
+                wav.ISRresume();
             break;
             case 5:
+                wav.ISRpause();
                 if(p[5]) {
-                    p[5] = false;
+                    p[5] *= false;
                     this->flash(lcd);
                 }
                 this->pos_func5(spl,lcd,CM,rng);
+                wav.ISRresume();
             break;
         };
-        if (CM.is_caught()) {
-            dead = true;
-        }
-        lcd.refresh();
-        t.stop();
-        pc.printf("%f\n",t.read());
-        wait(0.1);
-    };
-    CM.delete_regions();
-};
+}
 
 //settings
 void SceneCreator::set_sreg(CaMove &CM,int sce) {