desktop_animation_i.h 12 KB

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