desktop_animation_i.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. #include <assets_icons.h>
  2. #include <stddef.h>
  3. #include <stdint.h>
  4. #include <gui/icon.h>
  5. #include "desktop_animation.h"
  6. // Calm/Mad Basic Idle Animations
  7. #define COMMON_BASIC_DURATION (2 * 60 * 60)
  8. #define COMMON_ACTIVE_CYCLES 1
  9. #define COMMON_ACTIVE_COOLDOWN 15
  10. #define COMMON_WEIGHT 3
  11. #define BUTTHURT_LEVEL(x) (1UL << (x))
  12. #define BUTTHURT_LEVEL_0 0
  13. // frames * cycles / frame_rate
  14. #define COMMON_ACTIVE_DURATION(x) ((x)*COMMON_ACTIVE_CYCLES / 2)
  15. static const BasicAnimation animation_TV = {
  16. .icon = &A_Tv_128x52,
  17. .duration = COMMON_BASIC_DURATION,
  18. .weight = COMMON_WEIGHT,
  19. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  20. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  21. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  22. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7)};
  23. static const ActiveAnimation animation_TV_active = {
  24. .icon = &A_TvActive_128x52,
  25. .duration = COMMON_ACTIVE_DURATION(6),
  26. };
  27. static const BasicAnimation animation_sleep = {
  28. .icon = &A_Sleep_128x52,
  29. .black_status_bar = true,
  30. .duration = COMMON_BASIC_DURATION,
  31. .weight = COMMON_WEIGHT,
  32. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  33. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  34. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  35. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8) |
  36. BUTTHURT_LEVEL(9) | BUTTHURT_LEVEL(10)};
  37. static const ActiveAnimation animation_sleep_active = {
  38. .icon = &A_SleepActive_128x52,
  39. .black_status_bar = true,
  40. .duration = COMMON_ACTIVE_DURATION(5),
  41. };
  42. static const BasicAnimation animation_leaving = {
  43. .icon = &A_Leaving_128x51,
  44. .duration = COMMON_BASIC_DURATION,
  45. .weight = COMMON_WEIGHT,
  46. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  47. .butthurt_level_mask = BUTTHURT_LEVEL(13) | BUTTHURT_LEVEL(14),
  48. };
  49. static const ActiveAnimation animation_leaving_active = {
  50. .icon = &A_LeavingActive_128x51,
  51. .duration = COMMON_ACTIVE_DURATION(2),
  52. };
  53. static const BasicAnimation animation_laptop = {
  54. .icon = &A_Laptop_128x52,
  55. .duration = COMMON_BASIC_DURATION,
  56. .weight = COMMON_WEIGHT,
  57. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  58. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  59. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5)};
  60. static const ActiveAnimation animation_laptop_active = {
  61. .icon = &A_LaptopActive_128x52,
  62. .duration = COMMON_ACTIVE_DURATION(8),
  63. };
  64. static const BasicAnimation animation_knife = {
  65. .icon = &A_Knife_128x51,
  66. .duration = COMMON_BASIC_DURATION,
  67. .weight = COMMON_WEIGHT,
  68. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  69. .butthurt_level_mask = BUTTHURT_LEVEL(5) | BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) |
  70. BUTTHURT_LEVEL(8) | BUTTHURT_LEVEL(9) | BUTTHURT_LEVEL(10) |
  71. BUTTHURT_LEVEL(11) | BUTTHURT_LEVEL(12) | BUTTHURT_LEVEL(13)};
  72. static const ActiveAnimation animation_knife_active = {
  73. .icon = &A_KnifeActive_128x51,
  74. .duration = COMMON_ACTIVE_DURATION(2),
  75. };
  76. static const BasicAnimation animation_cry = {
  77. .icon = &A_Cry_128x51,
  78. .duration = COMMON_BASIC_DURATION,
  79. .weight = COMMON_WEIGHT,
  80. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  81. .butthurt_level_mask = BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  82. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8) |
  83. BUTTHURT_LEVEL(9) | BUTTHURT_LEVEL(10) | BUTTHURT_LEVEL(11) |
  84. BUTTHURT_LEVEL(12) | BUTTHURT_LEVEL(13)};
  85. static const ActiveAnimation animation_cry_active = {
  86. .icon = &A_CryActive_128x51,
  87. .duration = COMMON_ACTIVE_DURATION(3),
  88. };
  89. static const BasicAnimation animation_box = {
  90. .icon = &A_Box_128x51,
  91. .duration = COMMON_BASIC_DURATION,
  92. .weight = COMMON_WEIGHT,
  93. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  94. .butthurt_level_mask = BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8) | BUTTHURT_LEVEL(9) |
  95. BUTTHURT_LEVEL(10) | BUTTHURT_LEVEL(11) | BUTTHURT_LEVEL(12) |
  96. BUTTHURT_LEVEL(13)};
  97. static const ActiveAnimation animation_box_active = {
  98. .icon = &A_BoxActive_128x51,
  99. .duration = COMMON_ACTIVE_DURATION(2),
  100. };
  101. static const BasicAnimation animation_waves = {
  102. .icon = &A_Waves_128x52,
  103. .duration = COMMON_BASIC_DURATION,
  104. .weight = COMMON_WEIGHT,
  105. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  106. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2)};
  107. static const ActiveAnimation animation_waves_active = {
  108. .icon = &A_WavesActive_128x52,
  109. .duration = COMMON_ACTIVE_DURATION(7),
  110. };
  111. // Level Idle Animations
  112. static const BasicAnimation animation_level1furippa = {
  113. .icon = &A_Level1Furippa_128x51,
  114. .duration = COMMON_BASIC_DURATION,
  115. .weight = COMMON_WEIGHT,
  116. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  117. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  118. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  119. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7)};
  120. static const ActiveAnimation animation_level1furippa_active = {
  121. .icon = &A_Level1FurippaActive_128x51,
  122. .duration = COMMON_ACTIVE_DURATION(6),
  123. };
  124. static const BasicAnimation animation_level1read = {
  125. .icon = &A_Level1Read_128x51,
  126. .duration = COMMON_BASIC_DURATION,
  127. .weight = COMMON_WEIGHT,
  128. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  129. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2)};
  130. static const ActiveAnimation animation_level1read_active = {
  131. .icon = &A_Level1ReadActive_128x51,
  132. .duration = COMMON_ACTIVE_DURATION(2),
  133. };
  134. static const BasicAnimation animation_level1toys = {
  135. .icon = &A_Level1Toys_128x51,
  136. .duration = COMMON_BASIC_DURATION,
  137. .weight = COMMON_WEIGHT,
  138. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  139. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  140. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  141. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8)};
  142. static const ActiveAnimation animation_level1toys_active = {
  143. .icon = &A_Level1ToysActive_128x51,
  144. .duration = COMMON_ACTIVE_DURATION(2),
  145. };
  146. static const BasicAnimation animation_level2furippa = {
  147. .icon = &A_Level2Furippa_128x51,
  148. .duration = COMMON_BASIC_DURATION,
  149. .weight = COMMON_WEIGHT,
  150. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  151. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  152. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  153. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7)};
  154. static const ActiveAnimation animation_level2furippa_active = {
  155. .icon = &A_Level2FurippaActive_128x51,
  156. .duration = COMMON_ACTIVE_DURATION(6),
  157. };
  158. static const BasicAnimation animation_level2soldering = {
  159. .icon = &A_Level2Soldering_128x51,
  160. .duration = COMMON_BASIC_DURATION,
  161. .weight = COMMON_WEIGHT,
  162. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  163. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  164. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  165. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8) |
  166. BUTTHURT_LEVEL(9)};
  167. static const ActiveAnimation animation_level2soldering_active = {
  168. .icon = &A_Level2SolderingActive_128x51,
  169. .duration = COMMON_ACTIVE_DURATION(2),
  170. };
  171. static const BasicAnimation animation_level2hack = {
  172. .icon = &A_Level2Hack_128x51,
  173. .duration = COMMON_BASIC_DURATION,
  174. .weight = COMMON_WEIGHT,
  175. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  176. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  177. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  178. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8)};
  179. static const ActiveAnimation animation_level2hack_active = {
  180. .icon = &A_Level2HackActive_128x51,
  181. .duration = COMMON_ACTIVE_DURATION(2),
  182. };
  183. static const BasicAnimation animation_level3furippa = {
  184. .icon = &A_Level3Furippa_128x51,
  185. .duration = COMMON_BASIC_DURATION,
  186. .weight = COMMON_WEIGHT,
  187. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  188. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  189. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  190. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7)};
  191. static const ActiveAnimation animation_level3furippa_active = {
  192. .icon = &A_Level3FurippaActive_128x51,
  193. .duration = COMMON_ACTIVE_DURATION(6),
  194. };
  195. static const BasicAnimation animation_level3hijack = {
  196. .icon = &A_Level3Hijack_128x51,
  197. .duration = COMMON_BASIC_DURATION,
  198. .weight = COMMON_WEIGHT,
  199. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  200. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  201. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  202. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8) |
  203. BUTTHURT_LEVEL(9)};
  204. static const ActiveAnimation animation_level3hijack_active = {
  205. .icon = &A_Level3HijackActive_128x51,
  206. .duration = COMMON_ACTIVE_DURATION(2),
  207. };
  208. static const BasicAnimation animation_level3lab = {
  209. .icon = &A_Level3Lab_128x51,
  210. .duration = COMMON_BASIC_DURATION,
  211. .weight = COMMON_WEIGHT,
  212. .active_cooldown = COMMON_ACTIVE_COOLDOWN,
  213. .butthurt_level_mask = BUTTHURT_LEVEL(0) | BUTTHURT_LEVEL(1) | BUTTHURT_LEVEL(2) |
  214. BUTTHURT_LEVEL(3) | BUTTHURT_LEVEL(4) | BUTTHURT_LEVEL(5) |
  215. BUTTHURT_LEVEL(6) | BUTTHURT_LEVEL(7) | BUTTHURT_LEVEL(8)};
  216. static const ActiveAnimation animation_level3lab_active = {
  217. .icon = &A_Level3LabActive_128x51,
  218. .duration = COMMON_ACTIVE_DURATION(2),
  219. };
  220. // System Idle Animations
  221. static const BasicAnimation animation_bad_battery = {
  222. .icon = &A_BadBattery_128x51,
  223. .duration = COMMON_BASIC_DURATION,
  224. .weight = 7,
  225. };
  226. static const BasicAnimation animation_no_sd_card = {
  227. .icon = &A_NoSdCard_128x51,
  228. .duration = COMMON_BASIC_DURATION,
  229. .weight = 7,
  230. };
  231. const Icon* animation_level2up[] = {
  232. &I_LevelUp2_01,
  233. &I_LevelUp2_02,
  234. &I_LevelUp2_03,
  235. &I_LevelUp2_04,
  236. &I_LevelUp2_05,
  237. &I_LevelUp2_06,
  238. &I_LevelUp2_07};
  239. const Icon* animation_level3up[] = {
  240. &I_LevelUp3_01,
  241. &I_LevelUp3_02,
  242. &I_LevelUp3_03,
  243. &I_LevelUp3_04,
  244. &I_LevelUp3_05,
  245. &I_LevelUp3_06,
  246. &I_LevelUp3_07};
  247. // Blocking Idle Animations & One shot Animations represented as naked Icon
  248. static const PairedAnimation calm_animation[] = {
  249. {.basic = &animation_TV, .active = &animation_TV_active},
  250. {.basic = &animation_waves, .active = &animation_waves_active},
  251. {.basic = &animation_sleep, .active = &animation_sleep_active},
  252. {.basic = &animation_laptop, .active = &animation_laptop_active},
  253. };
  254. static const PairedAnimation mad_animation[] = {
  255. {.basic = &animation_cry, .active = &animation_cry_active},
  256. {.basic = &animation_knife, .active = &animation_knife_active},
  257. {.basic = &animation_box, .active = &animation_box_active},
  258. {.basic = &animation_leaving, .active = &animation_leaving_active},
  259. };
  260. static const PairedAnimation level_1_animation[] = {
  261. {.basic = &animation_level1furippa, .active = &animation_level1furippa_active},
  262. {.basic = &animation_level1read, .active = &animation_level1read_active},
  263. {.basic = &animation_level1toys, .active = &animation_level1toys_active},
  264. };
  265. static const PairedAnimation level_2_animation[] = {
  266. {.basic = &animation_level2furippa, .active = &animation_level2furippa_active},
  267. {.basic = &animation_level2soldering, .active = &animation_level2soldering_active},
  268. {.basic = &animation_level2hack, .active = &animation_level2hack_active},
  269. };
  270. static const PairedAnimation level_3_animation[] = {
  271. {.basic = &animation_level3furippa, .active = &animation_level3furippa_active},
  272. {.basic = &animation_level3hijack, .active = &animation_level3hijack_active},
  273. {.basic = &animation_level3lab, .active = &animation_level3lab_active},
  274. };
  275. static const PairedAnimation no_sd_animation[] = {
  276. {.basic = &animation_no_sd_card, .active = NULL},
  277. };
  278. static const PairedAnimation check_battery_animation[] = {
  279. {.basic = &animation_bad_battery, .active = NULL},
  280. };