barry.c 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #include "barry.h"
  2. #include "game_sprites.h"
  3. #include <gui/gui.h>
  4. #include <furi.h>
  5. void barry_tick(BARRY* const barry) {
  6. // Do jetpack things
  7. if(barry->isBoosting) {
  8. barry->gravity += GRAVITY_BOOST; // Increase upward momentum
  9. } else {
  10. barry->gravity += GRAVITY_FALL; // Increase downward momentum faster
  11. }
  12. barry->point.y += barry->gravity;
  13. // Constrain barry's height within sprite_height and 64 - sprite_height
  14. if(barry->point.y > (64 - BARRY_HEIGHT)) {
  15. barry->point.y = 64 - BARRY_HEIGHT;
  16. barry->gravity = 0; // stop upward momentum
  17. } else if(barry->point.y < 0) {
  18. barry->point.y = 0;
  19. barry->gravity = 0; // stop downward momentum
  20. }
  21. }
  22. void draw_barry(const BARRY* barry, Canvas* const canvas, const GameSprites* sprites) {
  23. canvas_set_color(canvas, ColorBlack);
  24. canvas_draw_icon_animation(canvas, barry->point.x, barry->point.y, sprites->barry);
  25. canvas_set_color(canvas, ColorWhite);
  26. canvas_draw_icon(canvas, barry->point.x, barry->point.y, sprites->barry_infill);
  27. }