[FL-2150] Dolphin animation refactoring (#938)

* Dolphin Animation Refactoring, part 1
* Remove animations from desktop
* Remove excess, first start
* Split animation_manager with callbacks
* allocate view inside animation_view
* Work on ViewComposed
* Draw white rectangles under bubble corners
* Fix bubbles sequence
* RPC: remove obsolete include "status.pb.h"
* Add animations manifest decoding
* Flipper file: add strict mode
* FFF: Animation structures parsing
* Assembling structure of animation
* Lot of view fixes:
  Add multi-line bubbles
  Add support for passive bubbles (frame_order values starts from passive now)
  Add hard-coded delay (active_shift) for active state enabling
  Fix active state handling
  Fix leaks
  Fix parsing uncorrect bubble_animation meta file
  Fix bubble rules of showing
* Animation load/unload & view freeze/unfreeze
* Blocking & system animations, fixes:
  View correct activation
  Refactoring + blocking animation
  Freeze first passive/active frames
  Many insert/eject SD tests fixes
  Add system animations
  Add Loader events app started/finished
  Add system no_sd animation
* Assets: dolphin packer. Scripts: minor refactoring.
* Desktop: update logging tags. Scripts: add metadata to dolphin bundling process, extra sorting for fs traversing. Make: phony assets rules.
* Github: rebuild assets on build
* Docker: add missing dependencies for assets compilation
* Docker: fix run command syntax
* ReadMe: update naming rules with link to source
* Assets: recompile icons
* Loader: add loader event
* Desktop, Gui, Furi Core: const shenanigans macros

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
Albert Kharisov
2022-01-03 01:39:56 +04:00
committed by GitHub
parent 065241fe5b
commit a39002ce22
349 changed files with 3531 additions and 1912 deletions

View File

@@ -52,6 +52,17 @@ class Main:
self.parser_copro.add_argument("mcu", help="MCU series as in copro folder")
self.parser_copro.set_defaults(func=self.copro)
self.parser_dolphin = self.subparsers.add_parser(
"dolphin", help="Assemble dolphin resources"
)
self.parser_dolphin.add_argument(
"dolphin_sources", help="Doplhin sources directory"
)
self.parser_dolphin.add_argument(
"dolphin_output", help="Doplhin output directory"
)
self.parser_dolphin.set_defaults(func=self.dolphin)
# logging
self.logger = logging.getLogger()
@@ -79,6 +90,7 @@ class Main:
for dirpath, dirnames, filenames in os.walk(self.args.source_directory):
self.logger.debug(f"Processing directory {dirpath}")
dirnames.sort()
filenames.sort()
if not filenames:
continue
if "frame_rate" in filenames:
@@ -193,7 +205,7 @@ class Main:
return extension in ICONS_SUPPORTED_FORMATS
def manifest(self):
from flipper.manifest import Manifest
from flipper.assets.manifest import Manifest
directory_path = os.path.normpath(self.args.local_path)
if not os.path.isdir(directory_path):
@@ -222,12 +234,17 @@ class Main:
self.logger.info(f"Complete")
def copro(self):
from flipper.copro import Copro
from flipper.assets.copro import Copro
copro = Copro(self.args.mcu)
copro.loadCubeInfo(self.args.cube_dir)
copro.bundle(self.args.output_dir)
def dolphin(self):
from flipper.assets.dolphin import pack_dolphin
pack_dolphin(self.args.dolphin_sources, self.args.dolphin_output)
if __name__ == "__main__":
Main()()