Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Revision:
56:ef9521b7ed78
Parent:
51:4d0cd75e7ed3
Child:
57:1c12361b6e3d
--- a/Entity/Mobs/Headless/Headless.cpp	Thu May 09 08:18:36 2019 +0000
+++ b/Entity/Mobs/Headless/Headless.cpp	Thu May 09 08:42:52 2019 +0000
@@ -4,53 +4,59 @@
 
 Headless::Headless(float pos_x, float pos_y)
 {
-    _hp_drop_chance = 10; // out of 100
-    face = 0;
     hp = 4;
     attack = 1;
+    face = 0;
+    _hp_drop_chance = 10; // out of 100
+    
     hitbox.width = 6;
     hitbox.height = 5;
+    
     position.x = pos_x;
     position.y = pos_y;
+    
     sprite_size.width = 6;
     sprite_size.height = 9;
     sprite_size.offset_x = 0;
     sprite_size.offset_y = -4;
+    
     frame.count = 0;
     frame.number = 0;
     frame.max = 4;
+    
     velocity = 0.25;
 }
 
 void Headless::move(float player_x, float player_y, char * map, bool * doorways)
 {
-    std::complex<double> pos_diff(player_x - position.x, player_y - position.y); // defining difference in position as a vector
+    std::complex<double> pos_diff(player_x - position.x, player_y - position.y); // Defining difference in position as a vector for simplicity (magnitude is hard to calculate)
     position.x += velocity * pos_diff.real() / std::abs(pos_diff);
     position.y += velocity * pos_diff.imag() / std::abs(pos_diff);
-
+    // Setting face
     if (abs(pos_diff.real()) > abs(pos_diff.imag())) {
-        if (pos_diff.real() > 0) {
-            face = 1;
-        } else {
-            face = 3;
+        if (pos_diff.real() > 0) { face = 1;
+        } else { face = 3; 
         }
     } else {
-        if (pos_diff.imag() > 0) {
-            face = 2;
-        } else {
-            face = 0;
+        if (pos_diff.imag() > 0) { face = 2;
+        } else { face = 0;
         }
     }
-
+    // Wall Collision
     undo_move_x(entity_to_map_collision_test(position.x, prev_pos.y, map, doorways));
     undo_move_y(entity_to_map_collision_test(prev_pos.x, position.y, map, doorways));
+    // Animation
+    increment_frame();
+}
 
+void Headless::increment_frame()
+{
     if (frame.number < frame.max) {
         frame.count++;
     } else {
         frame.count = 0;
     }
-    frame.number = (frame.count/16) % frame.max;
+    frame.number = (frame.count/16) % frame.max; // Frame number is used in chosing sprite-frame for animation; the constant 16 is the number of frames per sprite-frame
 }
 
 void Headless::draw(N5110 &lcd)
@@ -67,7 +73,7 @@
     hp -= damage;
 }
 
-char * Headless::get_frame()
+char * Headless::get_frame()    // Returns the corresponding frame
 {
     return (char *) sprite_headless[face][frame.number];
 }
\ No newline at end of file