diff --git a/ReadMe.md b/ReadMe.md index dfab2460e36..d90e9e75efe 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -31,6 +31,7 @@ This software is for experimental purposes only and is not meant for any illegal - Last Synced/Checked OFW, changes in [commits](https://github.com/flipperdevices/flipperzero-firmware/commits/dev): `2023-11-09 23:20 EST` - Last Synced/Checked Unleashed, changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2023-11-09 23:20 EST` +- Switched to cleaner animation loader (By Leeroy) diff --git a/applications/services/desktop/animations/animation_storage.c b/applications/services/desktop/animations/animation_storage.c index 3869d60dcef..06682d7a206 100644 --- a/applications/services/desktop/animations/animation_storage.c +++ b/applications/services/desktop/animations/animation_storage.c @@ -17,6 +17,21 @@ #define ANIMATION_DIR EXT_PATH("dolphin") #define TAG "AnimationStorage" +//Animation Theme Filenames must match the menu! +const char* const anim_style_filenames[AnimStyleCount] = { + "%s/manifest_None.txt", "%s/manifest.txt", "%s/manifest_Minimal.txt", + "%s/manifest_420.txt", "%s/manifest_42018.txt", "%s/manifest_ALL.txt", + "%s/manifest_Anime.txt", "%s/manifest_Anime420.txt", "%s/manifest_Anime42018.txt", + "%s/manifest_BMO.txt", "%s/manifest_Cherry.txt", "%s/manifest_CorpLogos.txt", + "%s/manifest_Custom1.txt", "%s/manifest_Custom2.txt", "%s/manifest_DBZ.txt", + "%s/manifest_Digim0n.txt", "%s/manifest_Dolphin.txt", "%s/manifest_Hackz.txt", + "%s/manifest_Mario.txt", "%s/manifest_NYAN.txt", "%s/manifest_OnePiece.txt", + "%s/manifest_P0kemon.txt", "%s/manifest_RM18.txt", "%s/manifest_RMSelect.txt", + "%s/manifest_RMSelect18.txt", "%s/manifest_SAO.txt", "%s/manifest_Science.txt", + "%s/manifest_SJUMP.txt", "%s/manifest_Squatch.txt", "%s/manifest_Stock.txt", + "%s/manifest_WatchDogs.txt", +}; + static void animation_storage_free_bubbles(BubbleAnimation* animation); static void animation_storage_free_frames(BubbleAnimation* animation); static void animation_storage_free_animation(BubbleAnimation** storage_animation); @@ -37,105 +52,14 @@ static bool animation_storage_load_single_manifest_info( FuriString* anim_manifest; anim_manifest = furi_string_alloc(); AnimStyle my_anim_style = CFW_SETTINGS()->anim_style; - switch(my_anim_style) { - case AnimStyleNone: - furi_string_printf(anim_manifest, "%s/manifest_None.txt", ANIMATION_DIR); - break; - case AnimStyleDefault: - furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR); - break; - case AnimStyleMinimal: - furi_string_printf(anim_manifest, "%s/manifest_Minimal.txt", ANIMATION_DIR); - break; - case AnimStyle420: - furi_string_printf(anim_manifest, "%s/manifest_420.txt", ANIMATION_DIR); - break; - case AnimStyle42018: - furi_string_printf(anim_manifest, "%s/manifest_42018.txt", ANIMATION_DIR); - break; - case AnimStyleALL: - furi_string_printf(anim_manifest, "%s/manifest_ALL.txt", ANIMATION_DIR); - break; - case AnimStyleAnime: - furi_string_printf(anim_manifest, "%s/manifest_Anime.txt", ANIMATION_DIR); - break; - case AnimStyleAnime420: - furi_string_printf(anim_manifest, "%s/manifest_Anime420.txt", ANIMATION_DIR); - break; - case AnimStyleAnime42018: - furi_string_printf(anim_manifest, "%s/manifest_Anime42018.txt", ANIMATION_DIR); - break; - case AnimStyleBMO: - furi_string_printf(anim_manifest, "%s/manifest_BMO.txt", ANIMATION_DIR); - break; - case AnimStyleCherry: - furi_string_printf(anim_manifest, "%s/manifest_Cherry.txt", ANIMATION_DIR); - break; - case AnimStyleCorpLogos: - furi_string_printf(anim_manifest, "%s/manifest_CorpLogos.txt", ANIMATION_DIR); - break; - case AnimStyleCustom1: - furi_string_printf(anim_manifest, "%s/manifest_Custom1.txt", ANIMATION_DIR); - break; - case AnimStyleCustom2: - furi_string_printf(anim_manifest, "%s/manifest_Custom2.txt", ANIMATION_DIR); - break; - case AnimStyleDBZ: - furi_string_printf(anim_manifest, "%s/manifest_DBZ.txt", ANIMATION_DIR); - break; - case AnimStyleDigim0n: - furi_string_printf(anim_manifest, "%s/manifest_Digim0n.txt", ANIMATION_DIR); - break; - case AnimStyleDolphin: - furi_string_printf(anim_manifest, "%s/manifest_Dolphin.txt", ANIMATION_DIR); - break; - case AnimStyleHackz: - furi_string_printf(anim_manifest, "%s/manifest_Hackz.txt", ANIMATION_DIR); - break; - case AnimStyleMario: - furi_string_printf(anim_manifest, "%s/manifest_Mario.txt", ANIMATION_DIR); - break; - case AnimStyleNYAN: - furi_string_printf(anim_manifest, "%s/manifest_NYAN.txt", ANIMATION_DIR); - break; - case AnimStyleOnePiece: - furi_string_printf(anim_manifest, "%s/manifest_OnePiece.txt", ANIMATION_DIR); - break; - case AnimStyleP0kemon: - furi_string_printf(anim_manifest, "%s/manifest_P0kemon.txt", ANIMATION_DIR); - break; - case AnimStyleRM18: - furi_string_printf(anim_manifest, "%s/manifest_RM18.txt", ANIMATION_DIR); - break; - case AnimStyleRMSelect: - furi_string_printf(anim_manifest, "%s/manifest_RMSelect.txt", ANIMATION_DIR); - break; - case AnimStyleRMSelect18: - furi_string_printf(anim_manifest, "%s/manifest_RMSelect18.txt", ANIMATION_DIR); - break; - case AnimStyleSAO: - furi_string_printf(anim_manifest, "%s/manifest_SAO.txt", ANIMATION_DIR); - break; - case AnimStyleScience: - furi_string_printf(anim_manifest, "%s/manifest_Science.txt", ANIMATION_DIR); - break; - case AnimStyleSJUMP: - furi_string_printf(anim_manifest, "%s/manifest_SJUMP.txt", ANIMATION_DIR); - break; - case AnimStyleSquatch: - furi_string_printf(anim_manifest, "%s/manifest_Squatch.txt", ANIMATION_DIR); - break; - case AnimStyleStock: - furi_string_printf(anim_manifest, "%s/manifest_Stock.txt", ANIMATION_DIR); - break; - case AnimStyleWatchDogs: - furi_string_printf(anim_manifest, "%s/manifest_WatchDogs.txt", ANIMATION_DIR); - break; - default: + + //Get the filename to process. + if(my_anim_style < AnimStyleCount) + furi_string_printf(anim_manifest, anim_style_filenames[my_anim_style], ANIMATION_DIR); + else furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR); - break; - } + //Process the manifest file do { uint32_t u32value; if(FSE_OK != storage_sd_status(storage)) break; @@ -196,105 +120,14 @@ void animation_storage_fill_animation_list(StorageAnimationList_t* animation_lis FuriString* anim_manifest; anim_manifest = furi_string_alloc(); AnimStyle my_anim_style = CFW_SETTINGS()->anim_style; - switch(my_anim_style) { - case AnimStyleNone: - furi_string_printf(anim_manifest, "%s/manifest_None.txt", ANIMATION_DIR); - break; - case AnimStyleDefault: - furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR); - break; - case AnimStyleMinimal: - furi_string_printf(anim_manifest, "%s/manifest_Minimal.txt", ANIMATION_DIR); - break; - case AnimStyle420: - furi_string_printf(anim_manifest, "%s/manifest_420.txt", ANIMATION_DIR); - break; - case AnimStyle42018: - furi_string_printf(anim_manifest, "%s/manifest_42018.txt", ANIMATION_DIR); - break; - case AnimStyleALL: - furi_string_printf(anim_manifest, "%s/manifest_ALL.txt", ANIMATION_DIR); - break; - case AnimStyleAnime: - furi_string_printf(anim_manifest, "%s/manifest_Anime.txt", ANIMATION_DIR); - break; - case AnimStyleAnime420: - furi_string_printf(anim_manifest, "%s/manifest_Anime420.txt", ANIMATION_DIR); - break; - case AnimStyleAnime42018: - furi_string_printf(anim_manifest, "%s/manifest_Anime42018.txt", ANIMATION_DIR); - break; - case AnimStyleBMO: - furi_string_printf(anim_manifest, "%s/manifest_BMO.txt", ANIMATION_DIR); - break; - case AnimStyleCherry: - furi_string_printf(anim_manifest, "%s/manifest_Cherry.txt", ANIMATION_DIR); - break; - case AnimStyleCorpLogos: - furi_string_printf(anim_manifest, "%s/manifest_CorpLogos.txt", ANIMATION_DIR); - break; - case AnimStyleCustom1: - furi_string_printf(anim_manifest, "%s/manifest_Custom1.txt", ANIMATION_DIR); - break; - case AnimStyleCustom2: - furi_string_printf(anim_manifest, "%s/manifest_Custom2.txt", ANIMATION_DIR); - break; - case AnimStyleDBZ: - furi_string_printf(anim_manifest, "%s/manifest_DBZ.txt", ANIMATION_DIR); - break; - case AnimStyleDigim0n: - furi_string_printf(anim_manifest, "%s/manifest_Digim0n.txt", ANIMATION_DIR); - break; - case AnimStyleDolphin: - furi_string_printf(anim_manifest, "%s/manifest_Dolphin.txt", ANIMATION_DIR); - break; - case AnimStyleHackz: - furi_string_printf(anim_manifest, "%s/manifest_Hackz.txt", ANIMATION_DIR); - break; - case AnimStyleMario: - furi_string_printf(anim_manifest, "%s/manifest_Mario.txt", ANIMATION_DIR); - break; - case AnimStyleNYAN: - furi_string_printf(anim_manifest, "%s/manifest_NYAN.txt", ANIMATION_DIR); - break; - case AnimStyleOnePiece: - furi_string_printf(anim_manifest, "%s/manifest_OnePiece.txt", ANIMATION_DIR); - break; - case AnimStyleP0kemon: - furi_string_printf(anim_manifest, "%s/manifest_P0kemon.txt", ANIMATION_DIR); - break; - case AnimStyleRM18: - furi_string_printf(anim_manifest, "%s/manifest_RM18.txt", ANIMATION_DIR); - break; - case AnimStyleRMSelect: - furi_string_printf(anim_manifest, "%s/manifest_RMSelect.txt", ANIMATION_DIR); - break; - case AnimStyleRMSelect18: - furi_string_printf(anim_manifest, "%s/manifest_RMSelect18.txt", ANIMATION_DIR); - break; - case AnimStyleSAO: - furi_string_printf(anim_manifest, "%s/manifest_SAO.txt", ANIMATION_DIR); - break; - case AnimStyleScience: - furi_string_printf(anim_manifest, "%s/manifest_Science.txt", ANIMATION_DIR); - break; - case AnimStyleSJUMP: - furi_string_printf(anim_manifest, "%s/manifest_SJUMP.txt", ANIMATION_DIR); - break; - case AnimStyleSquatch: - furi_string_printf(anim_manifest, "%s/manifest_Squatch.txt", ANIMATION_DIR); - break; - case AnimStyleStock: - furi_string_printf(anim_manifest, "%s/manifest_Stock.txt", ANIMATION_DIR); - break; - case AnimStyleWatchDogs: - furi_string_printf(anim_manifest, "%s/manifest_WatchDogs.txt", ANIMATION_DIR); - break; - default: + + //Get the filename to process. + if(my_anim_style < AnimStyleCount) + furi_string_printf(anim_manifest, anim_style_filenames[my_anim_style], ANIMATION_DIR); + else furi_string_printf(anim_manifest, "%s/manifest.txt", ANIMATION_DIR); - break; - } + //Process the manifest file. do { uint32_t u32value; StorageAnimation* storage_animation = NULL; @@ -739,4 +572,4 @@ static void animation_storage_free_bubbles(BubbleAnimation* animation) { } free((void*)animation->frame_bubble_sequences); animation->frame_bubble_sequences = NULL; -} +} \ No newline at end of file