Skip to content

Commit

Permalink
Leeroys Animation Loader
Browse files Browse the repository at this point in the history
  • Loading branch information
RogueMaster committed Nov 10, 2023
1 parent be38265 commit b651299
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 195 deletions.
1 change: 1 addition & 0 deletions ReadMe.md
Expand Up @@ -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)

<a name="release">

Expand Down
223 changes: 28 additions & 195 deletions applications/services/desktop/animations/animation_storage.c
Expand Up @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -739,4 +572,4 @@ static void animation_storage_free_bubbles(BubbleAnimation* animation) {
}
free((void*)animation->frame_bubble_sequences);
animation->frame_bubble_sequences = NULL;
}
}

0 comments on commit b651299

Please sign in to comment.