| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #pragma once
- #include "animation_storage.h"
- #include "assets_icons.h"
- #include "animation_manager.h"
- #include "gui/canvas.h"
- struct StorageAnimation {
- const BubbleAnimation* animation;
- bool external;
- StorageAnimationMeta meta;
- };
- // Hard-coded, always available idle animation
- FrameBubble tv_bubble1 = {
- .bubble =
- {.x = 1,
- .y = 23,
- .str = "Take the red pill",
- .horizontal = AlignRight,
- .vertical = AlignBottom},
- .starts_at_frame = 7,
- .ends_at_frame = 9,
- .next_bubble = NULL,
- };
- FrameBubble tv_bubble2 = {
- .bubble =
- {.x = 1,
- .y = 23,
- .str = "I can joke better",
- .horizontal = AlignRight,
- .vertical = AlignBottom},
- .starts_at_frame = 7,
- .ends_at_frame = 9,
- .next_bubble = NULL,
- };
- FrameBubble* tv_bubbles[] = {&tv_bubble1, &tv_bubble2};
- const Icon* tv_icons[] = {
- &I_tv1,
- &I_tv2,
- &I_tv3,
- &I_tv4,
- &I_tv5,
- &I_tv6,
- &I_tv7,
- &I_tv8,
- };
- const BubbleAnimation tv_bubble_animation = {
- .icons = tv_icons,
- .frame_bubbles = tv_bubbles,
- .frame_bubbles_count = COUNT_OF(tv_bubbles),
- .passive_frames = 6,
- .active_frames = 2,
- .active_cycles = 2,
- .frame_rate = 2,
- .duration = 3600,
- .active_cooldown = 5,
- };
- // System animation - no SD card
- const Icon* no_sd_icons[] = {
- &I_no_sd1,
- &I_no_sd2,
- &I_no_sd1,
- &I_no_sd2,
- &I_no_sd1,
- &I_no_sd3,
- &I_no_sd4,
- &I_no_sd5,
- &I_no_sd4,
- &I_no_sd6,
- };
- FrameBubble no_sd_bubble = {
- .bubble =
- {.x = 40,
- .y = 18,
- .str = "Need an\nSD card",
- .horizontal = AlignRight,
- .vertical = AlignBottom},
- .starts_at_frame = 0,
- .ends_at_frame = 9,
- .next_bubble = NULL,
- };
- FrameBubble* no_sd_bubbles[] = {&no_sd_bubble};
- const BubbleAnimation no_sd_bubble_animation = {
- .icons = no_sd_icons,
- .frame_bubbles = no_sd_bubbles,
- .frame_bubbles_count = COUNT_OF(no_sd_bubbles),
- .passive_frames = 10,
- .active_frames = 0,
- .frame_rate = 2,
- .duration = 3600,
- .active_cooldown = 0,
- .active_cycles = 0,
- };
- // BLOCKING ANIMATION - no_db, bad_sd, sd_ok, url
- const Icon* no_db_icons[] = {
- &I_no_databases1,
- &I_no_databases2,
- &I_no_databases3,
- &I_no_databases4,
- };
- const BubbleAnimation no_db_bubble_animation = {
- .icons = no_db_icons,
- .passive_frames = COUNT_OF(no_db_icons),
- .frame_rate = 2,
- };
- const Icon* bad_sd_icons[] = {
- &I_card_bad1,
- &I_card_bad2,
- };
- const BubbleAnimation bad_sd_bubble_animation = {
- .icons = bad_sd_icons,
- .passive_frames = COUNT_OF(bad_sd_icons),
- .frame_rate = 2,
- };
- const Icon* url_icons[] = {
- &I_url1,
- &I_url2,
- &I_url3,
- &I_url4,
- };
- const BubbleAnimation url_bubble_animation = {
- .icons = url_icons,
- .passive_frames = COUNT_OF(url_icons),
- .frame_rate = 2,
- };
- const Icon* sd_ok_icons[] = {
- &I_card_ok1,
- &I_card_ok2,
- &I_card_ok3,
- &I_card_ok4,
- };
- const BubbleAnimation sd_ok_bubble_animation = {
- .icons = sd_ok_icons,
- .passive_frames = COUNT_OF(sd_ok_icons),
- .frame_rate = 2,
- };
- static StorageAnimation StorageAnimationInternal[] = {
- {.animation = &tv_bubble_animation,
- .external = false,
- .meta =
- {
- .min_butthurt = 0,
- .max_butthurt = 11,
- .min_level = 1,
- .max_level = 3,
- .weight = 3,
- }},
- {.animation = &no_sd_bubble_animation,
- .external = false,
- .meta =
- {
- .min_butthurt = 0,
- .max_butthurt = 14,
- .min_level = 1,
- .max_level = 3,
- .weight = 6,
- }},
- {
- .animation = &no_db_bubble_animation,
- .external = false,
- },
- {
- .animation = &bad_sd_bubble_animation,
- .external = false,
- },
- {
- .animation = &sd_ok_bubble_animation,
- .external = false,
- },
- {
- .animation = &url_bubble_animation,
- .external = false,
- },
- };
- void animation_storage_initialize_internal_animations(void) {
- /* not in constructor - no memory pool yet */
- /* called in 1 thread - no need in double check */
- static bool initialized = false;
- if(!initialized) {
- initialized = true;
- string_init_set_str(StorageAnimationInternal[0].meta.name, HARDCODED_ANIMATION_NAME);
- string_init_set_str(StorageAnimationInternal[1].meta.name, NO_SD_ANIMATION_NAME);
- string_init_set_str(StorageAnimationInternal[2].meta.name, NO_DB_ANIMATION_NAME);
- string_init_set_str(StorageAnimationInternal[3].meta.name, BAD_SD_ANIMATION_NAME);
- string_init_set_str(StorageAnimationInternal[4].meta.name, SD_OK_ANIMATION_NAME);
- string_init_set_str(StorageAnimationInternal[5].meta.name, URL_ANIMATION_NAME);
- }
- }
|