Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Revision:
12:a1c1991835ca
Parent:
10:1a3499f6b583
Child:
13:d04a6caba40d
--- a/Entity/Headless/Headless.cpp	Tue Apr 23 03:10:09 2019 +0000
+++ b/Entity/Headless/Headless.cpp	Tue Apr 23 22:59:12 2019 +0000
@@ -3,7 +3,7 @@
 #include <complex>
 
 Headless::Headless(float pos_x, float pos_y){
-    moving = false;
+    moving = true;
     face = 0;
     hp = 0;
     hitbox.width = 6;
@@ -14,6 +14,9 @@
     sprite_size.height = 9;
     sprite_size.offset_x = 0;
     sprite_size.offset_y = 4;
+    frame.count = 0;
+    frame.number = 0;
+    frame.max = 4;
 }
 
 void Headless::move(float player_x, float player_y){
@@ -26,23 +29,31 @@
 //    }
 //    if(!matrix_collision_test(position.x, position.y - mapped_y, 0)){
 //        position.y -= mapped_y;
-//        
-//        
-    if (std::abs(pos_diff) > 0.1f){
-        moving = true;
-        if (pos_diff.imag() / std::abs(pos_diff) < 0 && abs(pos_diff.imag() / std::abs(pos_diff)) > abs(pos_diff.real() / std::abs(pos_diff))){
-            face = 2;
-        }
-        else if (pos_diff.imag() / std::abs(pos_diff) > 0 && abs(pos_diff.imag() / std::abs(pos_diff)) > abs(pos_diff.real() / std::abs(pos_diff))){
-            face = 0;
-        }
-        else if (pos_diff.real() / std::abs(pos_diff) > 0 && abs(pos_diff.real() / std::abs(pos_diff)) > abs(pos_diff.imag() / std::abs(pos_diff))){
-            face = 1;
-        }
-        else if (pos_diff.real() / std::abs(pos_diff) < 0 && abs(pos_diff.real() / std::abs(pos_diff)) > abs(pos_diff.imag() / std::abs(pos_diff))){
-            face = 3;
-        }
+
+    if (pos_diff.imag() / std::abs(pos_diff) < 0 && abs(pos_diff.imag() / std::abs(pos_diff)) > abs(pos_diff.real() / std::abs(pos_diff))){
+        face = 2;
+    }
+    else if (pos_diff.imag() / std::abs(pos_diff) > 0 && abs(pos_diff.imag() / std::abs(pos_diff)) > abs(pos_diff.real() / std::abs(pos_diff))){
+        face = 0;
+    }
+    else if (pos_diff.real() / std::abs(pos_diff) > 0 && abs(pos_diff.real() / std::abs(pos_diff)) > abs(pos_diff.imag() / std::abs(pos_diff))){
+        face = 1;
+    }
+    else if (pos_diff.real() / std::abs(pos_diff) < 0 && abs(pos_diff.real() / std::abs(pos_diff)) > abs(pos_diff.imag() / std::abs(pos_diff))){
+        face = 3;
     }
+    
+    if (frame.number < frame.max){
+        frame.count++;
+    }
+    else {
+        frame.count = 0;
+    }
+    frame.number = (frame.count/5) % frame.max;
+}
+
+int * Headless::get_frame(){
+    return (int *) sprite_headless[face][frame.number];
 }
 
 void Headless::chkdmg(){