ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Revision:
9:5915fc800824
Parent:
8:a667bc5050c1
Child:
10:07a23afd5088
--- a/main.cpp	Tue Feb 26 09:35:03 2019 +0000
+++ b/main.cpp	Tue Mar 19 10:27:37 2019 +0000
@@ -21,79 +21,60 @@
 Serial pc(USBTX, USBRX); // tx, rx
 Ticker ticker;
 Gamepad gamepad;
-std::vector<Cube> cubeVector; 
+std::vector<Cube> cubeVector;
+std::vector<Face> faceVector;
 
-void spawnCubes()
-{
-    cubeVector.clear();
-    for (int i = 0; i<20;i++){
-        Cube cube(rand()%80-40,rand()%80-40,i*40,5);
-        cubeVector.push_back(cube);
-    }
-}
 
 int main()
 {
     
     gamepad.init();
     Rasturizer renderer;
-    ticker.attach(&spawnCubes,10);
-    
-    for (int i = 0; i<20;i++){
-        Cube cube(rand()%80-40,rand()%80-40,i*40,5);
+    for(int i = 0; i < 1; i++){
+        Cube cube(rand()%80-40,0,i*10,5);
         cubeVector.push_back(cube);
     }
-
-    int i = 0;
     while(1) {
         renderer.clear();
         Vector2D coord = gamepad.get_coord();
-        bool right = false;
-        bool left = false;
-        bool up = false;
-        bool down = false;
-        
-        //pc.printf("%f", 
-        
-        if(gamepad.check_event(Gamepad::R_PRESSED) == true){ 
-            right = true;
+        bool rotate1 = false;
+        if(gamepad.check_event(Gamepad::B_PRESSED) == true){
+            rotate1 = true;
         }
-        else if( gamepad.check_event(Gamepad::L_PRESSED) == true){ 
-            left = true;
-        }
-        else if(gamepad.check_event(Gamepad::Y_PRESSED) == true){ 
-            up = true;
-        }
-        else if( gamepad.check_event(Gamepad::A_PRESSED) == true){ 
-            down = true;
+        bool rotate2 = false;
+        if(gamepad.check_event(Gamepad::X_PRESSED) == true){
+            rotate2 = true;
         }
         
-
         for (int c = 0; c< cubeVector.size(); c++)
         {  
+            if(rotate1){
+                cubeVector[c].rotateY(0.2);
+            }
+            if(rotate2){
+                cubeVector[c].rotateY(-0.2);
+            }
             for (int i = 0; i < 6; i++){
                 renderer.drawFace(cubeVector[c].getFace(i));
-            }
-            cubeVector[c].translate(0,0,-3);//-coord.x*2,0,-coord.y*2);
-            cubeVector[c].rotateY(coord.x/10);
-            cubeVector[c].rotateX(-coord.y/10);
-            /*
-            if(right == true){ 
-                cubeVector[c].rotateY(0.2);
+                faceVector.push_back(cubeVector[c].getFace(i));
+                cubeVector[c].translate(-coord.x*2,0,-coord.y*2);
             }
-            else if(left == true){ 
-                cubeVector[c].rotateY(-0.2);
+        }
+        for (int f = 0; f< faceVector.size()-1; f++){
+            for (int f2 = 0; f2< faceVector.size()-1; f2++){
+                if(faceVector[f].getAvgZ() < faceVector[f+1].getAvgZ()){
+                    Face temp = faceVector[f+1];
+                    faceVector[f+1] = faceVector[f];
+                    faceVector[f] = temp;
+                }
             }
-            else if(up == true){ 
-                cubeVector[c].rotateX(0.2);
-            }
-            else if(down == true){ 
-                cubeVector[c].rotateX(-0.2);
-            }*/
         }
+        for (int f = 0; f< faceVector.size() ; f++){
+            renderer.drawFace(faceVector[f]);
+        }
+        faceVector.clear();
         
         renderer.refresh(); // refresh the LCD so the pixels appear
         wait_ms(1000/30);  // this gives a refresh rate of 10 frames per second
-        //i++;
     }
 }