Ver Fonte

flashing powerups when expiring

SimplyMinimal há 3 anos atrás
pai
commit
97f08666af
1 ficheiros alterados com 16 adições e 1 exclusões
  1. 16 1
      app.c

+ 16 - 1
app.c

@@ -351,6 +351,18 @@ void draw_left_lives(Canvas* const canvas, AsteroidsApp* app) {
     }
     }
 }
 }
 
 
+bool should_draw_powerUp(PowerUp* const p) {
+    // Just return if power up has already been picked up
+    if(p->display_ttl == 0) return false;
+
+    // Begin flashing power up when it is about to expire
+    if(p->display_ttl < 100) {
+        return p->display_ttl % 8 > 0;
+    }
+
+    return true;
+}
+
 void draw_powerUps(Canvas* const canvas, PowerUp* const p) {
 void draw_powerUps(Canvas* const canvas, PowerUp* const p) {
     /*
     /*
     
     
@@ -380,6 +392,7 @@ void draw_powerUps(Canvas* const canvas, PowerUp* const p) {
     // Just return if power up has already been picked up
     // Just return if power up has already been picked up
     // FURI_LOG_I(TAG, "[draw_powerUps] Display TTL: %lu", p->display_ttl);
     // FURI_LOG_I(TAG, "[draw_powerUps] Display TTL: %lu", p->display_ttl);
     if(p->display_ttl == 0) return;
     if(p->display_ttl == 0) return;
+    if(!should_draw_powerUp(p)) return;
 
 
     canvas_set_color(canvas, ColorXOR);
     canvas_set_color(canvas, ColorXOR);
 
 
@@ -691,7 +704,7 @@ PowerUp* add_powerUp(AsteroidsApp* app) {
     //@todo Disable Velocity
     //@todo Disable Velocity
     p->vx = 0; //2 * (-.5 + ((float)rand() / RAND_MAX));
     p->vx = 0; //2 * (-.5 + ((float)rand() / RAND_MAX));
     p->vy = 0; //2 * (-.5 + ((float)rand() / RAND_MAX));
     p->vy = 0; //2 * (-.5 + ((float)rand() / RAND_MAX));
-    p->display_ttl = 500;
+    p->display_ttl = 200;
     p->ttl = POWERUPSTTL;
     p->ttl = POWERUPSTTL;
     p->size = (int)size;
     p->size = (int)size;
     // p->size = size;
     // p->size = size;
@@ -866,6 +879,8 @@ void update_powerUp_status(AsteroidsApp* app) {
             // Time to remove it
             // Time to remove it
             app->powerUps[j].isPowerUpActive = false;
             app->powerUps[j].isPowerUpActive = false;
             remove_powerUp(app, j);
             remove_powerUp(app, j);
+        } else if(app->powerUps[j].display_ttl > 0) {
+            app->powerUps[j].display_ttl--;
         }
         }
     }
     }
 }
 }