desktop_animation.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include <stdint.h>
  3. #include <gui/icon.h>
  4. typedef struct DesktopAnimation DesktopAnimation;
  5. typedef struct ActiveAnimation ActiveAnimation;
  6. typedef struct BasicAnimation BasicAnimation;
  7. typedef enum {
  8. DesktopAnimationStateBasic,
  9. DesktopAnimationStateActive,
  10. DesktopAnimationStateLevelUpIsPending,
  11. DesktopAnimationStateSDEmpty,
  12. DesktopAnimationStateSDEmptyURL,
  13. DesktopAnimationStateSDCorrupted,
  14. } DesktopAnimationState;
  15. struct BasicAnimation {
  16. const Icon* icon;
  17. uint16_t duration; // sec
  18. uint16_t active_cooldown;
  19. uint8_t weight;
  20. uint16_t butthurt_level_mask;
  21. };
  22. struct ActiveAnimation {
  23. const Icon* icon;
  24. uint16_t duration; // sec
  25. };
  26. typedef struct {
  27. const BasicAnimation* basic;
  28. const ActiveAnimation* active;
  29. } PairedAnimation;
  30. typedef void (*AnimationChangedCallback)(void*);
  31. DesktopAnimation* desktop_animation_alloc(void);
  32. void desktop_animation_free(DesktopAnimation*);
  33. void desktop_animation_activate(DesktopAnimation* instance);
  34. void desktop_animation_set_animation_changed_callback(
  35. DesktopAnimation* instance,
  36. AnimationChangedCallback callback,
  37. void* context);
  38. DesktopAnimationState desktop_animation_handle_right(DesktopAnimation* animation);
  39. void desktop_animation_start_oneshot_levelup(DesktopAnimation* animation);
  40. const Icon* desktop_animation_get_animation(DesktopAnimation* animation);
  41. const Icon* desktop_animation_get_oneshot_frame(DesktopAnimation* animation);
  42. void desktop_start_new_idle_animation(DesktopAnimation* animation);