[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

@@ -2,20 +2,35 @@ PROJECT_ROOT = $(abspath $(dir $(abspath $(firstword $(MAKEFILE_LIST))))..)
include $(PROJECT_ROOT)/assets/assets.mk
all: icons protobuf
.PHONY: all
all: icons protobuf dolphin
$(ASSETS): $(ASSETS_SOURCES) $(ASSETS_COMPILLER)
@echo "\tASSETS\t\t" $@
@$(ASSETS_COMPILLER) icons "$(ASSETS_SOURCE_DIR)" "$(ASSETS_COMPILED_DIR)"
.PHONY: icons
icons: $(ASSETS)
$(PROTOBUF) &: $(PROTOBUF_SOURCES) $(PROTOBUF_COMPILER)
@echo "\tPROTOBUF\t" $(PROTOBUF_FILENAMES)
@$(PROJECT_ROOT)/lib/nanopb/generator/nanopb_generator.py -q -I$(PROTOBUF_SOURCE_DIR) -D$(PROTOBUF_COMPILED_DIR) $(PROTOBUF_SOURCES)
@$(PROTOBUF_COMPILER) -q -I$(PROTOBUF_SOURCE_DIR) -D$(PROTOBUF_COMPILED_DIR) $(PROTOBUF_SOURCES)
.PHONY: protobuf
protobuf: $(PROTOBUF)
$(PROTOBUF_FILE_ANIMATIONS): $(PROTOBUF_SOURCES_FILE_ANIMATIONS) $(PROTOBUF_COMPILER)
@echo "\tFILE ANIMATIONS\t" $(PROTOBUF_FILE_ANIMATIONS_FILENAMES)
@$(PROTOBUF_COMPILER) -q -I$(PROTOBUF_FILE_ANIMATIONS_SOURCE_DIR) -D$(PROTOBUF_FILE_ANIMATIONS_COMPILED_DIR) $(PROTOBUF_FILE_ANIMATIONS_SOURCES)
$(DOLPHIN_OUTPUT_DIR): $(DOLPHIN_SOURCE_DIR)
@echo "\tDOLPHIN"
@$(ASSETS_COMPILLER) dolphin "$(DOLPHIN_SOURCE_DIR)" "$(DOLPHIN_OUTPUT_DIR)"
.PHONY: dolphin
dolphin: $(DOLPHIN_OUTPUT_DIR)
clean:
@echo "\tCLEAN\t"
@$(RM) $(ASSETS_COMPILED_DIR)/*
@$(RM) -rf $(DOLPHIN_OUTPUT_DIR)

View File

@@ -23,6 +23,11 @@ make all
Image names will be automatically prefixed with `I_`, animation names with `A_`.
Icons and Animations will be gathered into `icon.h` and `icon.c`.
## Dolphin and Games assets
Rules are same as for Images and Animations plus assets are grouped by level and level prepends `NAME`.
Good starting point: https://docs.unrealengine.com/4.27/en-US/ProductionPipelines/AssetNaming/
# Important notes
Don't include assets that you are not using, compiler is not going to strip unused assets.

View File

@@ -6,11 +6,13 @@ ASSETS_SOURCE_DIR := $(ASSETS_DIR)/icons
ASSETS_SOURCES += $(shell find $(ASSETS_SOURCE_DIR) -type f -iname '*.png' -or -iname 'frame_rate')
ASSETS += $(ASSETS_COMPILED_DIR)/assets_icons.c
DOLPHIN_SOURCE_DIR := $(ASSETS_DIR)/dolphin
DOLPHIN_OUTPUT_DIR := $(ASSETS_DIR)/resources/dolphin
PROTOBUF_SOURCE_DIR := $(ASSETS_DIR)/protobuf
PROTOBUF_COMPILER := $(PROJECT_ROOT)/lib/nanopb/generator/nanopb_generator.py
PROTOBUF_COMPILED_DIR := $(ASSETS_COMPILED_DIR)
PROTOBUF_SOURCES := $(shell find $(PROTOBUF_SOURCE_DIR) -type f -iname '*.proto')
#PROTOBUF_FILENAMES := $(notdir $(PROTOBUF))
PROTOBUF_FILENAMES := $(notdir $(addsuffix .pb.c,$(basename $(PROTOBUF_SOURCES))))
PROTOBUF := $(addprefix $(PROTOBUF_COMPILED_DIR)/,$(PROTOBUF_FILENAMES))
PROTOBUF_CFLAGS += -DPB_ENABLE_MALLOC

File diff suppressed because it is too large Load Diff

View File

@@ -1,145 +1,118 @@
#pragma once
#include <gui/icon.h>
extern const Icon I_Certification2_119x30;
extern const Icon I_Certification1_103x23;
extern const Icon A_BadBattery_128x51;
extern const Icon A_BoxActive_128x51;
extern const Icon A_Box_128x51;
extern const Icon A_CardBad_128x51;
extern const Icon A_CardNoDBUrl_128x51;
extern const Icon A_CardNoDB_128x51;
extern const Icon A_CardOk_128x51;
extern const Icon A_CryActive_128x51;
extern const Icon A_Cry_128x51;
extern const Icon A_KnifeActive_128x51;
extern const Icon A_Knife_128x51;
extern const Icon A_LaptopActive_128x52;
extern const Icon A_Laptop_128x52;
extern const Icon A_LeavingActive_128x51;
extern const Icon A_Leaving_128x51;
extern const Icon A_Level1FurippaActive_128x51;
extern const Icon A_Level1Furippa_128x51;
extern const Icon A_Level1ReadActive_128x51;
extern const Icon A_Level1Read_128x51;
extern const Icon A_Level1ToysActive_128x51;
extern const Icon A_Level1Toys_128x51;
extern const Icon A_Level2FurippaActive_128x51;
extern const Icon A_Level2Furippa_128x51;
extern const Icon A_Level2HackActive_128x51;
extern const Icon A_Level2Hack_128x51;
extern const Icon A_Level2SolderingActive_128x51;
extern const Icon A_Level2Soldering_128x51;
extern const Icon A_Level3FurippaActive_128x51;
extern const Icon A_Level3Furippa_128x51;
extern const Icon A_Level3HijackActive_128x51;
extern const Icon A_Level3Hijack_128x51;
extern const Icon A_Level3LabActive_128x51;
extern const Icon A_Level3Lab_128x51;
extern const Icon I_LevelUp2_03;
extern const Icon I_LevelUp2_02;
extern const Icon I_LevelUp2_05;
extern const Icon I_LevelUp2_04;
extern const Icon I_LevelUp2_01;
extern const Icon I_LevelUp2_06;
extern const Icon I_LevelUp2_07;
extern const Icon I_LevelUp3_05;
extern const Icon I_LevelUp3_06;
extern const Icon I_LevelUp3_02;
extern const Icon I_LevelUp3_07;
extern const Icon I_LevelUp3_04;
extern const Icon I_LevelUp3_03;
extern const Icon I_LevelUp3_01;
extern const Icon A_LevelUpPending_128x51;
extern const Icon A_NoSdCard_128x51;
extern const Icon A_SleepActive_128x52;
extern const Icon A_Sleep_128x52;
extern const Icon A_TvActive_128x52;
extern const Icon A_Tv_128x52;
extern const Icon A_WavesActive_128x52;
extern const Icon A_Waves_128x52;
extern const Icon I_ble_10px;
extern const Icon I_ibutt_10px;
extern const Icon I_Certification2_119x30;
extern const Icon I_card_bad1;
extern const Icon I_card_bad2;
extern const Icon I_card_ok1;
extern const Icon I_card_ok2;
extern const Icon I_card_ok3;
extern const Icon I_card_ok4;
extern const Icon I_no_databases1;
extern const Icon I_no_databases2;
extern const Icon I_no_databases3;
extern const Icon I_no_databases4;
extern const Icon I_no_sd1;
extern const Icon I_no_sd2;
extern const Icon I_no_sd3;
extern const Icon I_no_sd4;
extern const Icon I_no_sd5;
extern const Icon I_no_sd6;
extern const Icon I_tv1;
extern const Icon I_tv2;
extern const Icon I_tv3;
extern const Icon I_tv4;
extern const Icon I_tv5;
extern const Icon I_tv6;
extern const Icon I_tv7;
extern const Icon I_tv8;
extern const Icon I_url1;
extern const Icon I_url2;
extern const Icon I_url3;
extern const Icon I_url4;
extern const Icon I_125_10px;
extern const Icon I_sub1_10px;
extern const Icon I_dir_10px;
extern const Icon I_ir_10px;
extern const Icon I_Nfc_10px;
extern const Icon I_ble_10px;
extern const Icon I_dir_10px;
extern const Icon I_ibutt_10px;
extern const Icon I_ir_10px;
extern const Icon I_sub1_10px;
extern const Icon I_unknown_10px;
extern const Icon I_BLE_Pairing_128x64;
extern const Icon I_Volup_8x6;
extern const Icon I_Circles_47x47;
extern const Icon I_Ble_connected_38x34;
extern const Icon I_Ble_disconnected_24x34;
extern const Icon I_Space_65x18;
extern const Icon I_Button_18x18;
extern const Icon I_Circles_47x47;
extern const Icon I_Ok_btn_9x9;
extern const Icon I_Pressed_Button_13x13;
extern const Icon I_Space_65x18;
extern const Icon I_Voldwn_6x6;
extern const Icon I_Ble_connected_38x34;
extern const Icon I_Button_18x18;
extern const Icon I_EviSmile2_18x21;
extern const Icon I_Volup_8x6;
extern const Icon I_Clock_18x18;
extern const Icon I_Error_18x18;
extern const Icon I_EviSmile1_18x21;
extern const Icon I_UsbTree_48x22;
extern const Icon I_EviSmile2_18x21;
extern const Icon I_EviWaiting1_18x21;
extern const Icon I_EviWaiting2_18x21;
extern const Icon I_Percent_10x14;
extern const Icon I_Smile_18x18;
extern const Icon I_Error_18x18;
extern const Icon I_Clock_18x18;
extern const Icon I_ButtonRightSmall_3x5;
extern const Icon I_ButtonLeftSmall_3x5;
extern const Icon I_UsbTree_48x22;
extern const Icon I_ButtonCenter_7x7;
extern const Icon I_ButtonDown_7x4;
extern const Icon I_ButtonRight_4x7;
extern const Icon I_DFU_128x50;
extern const Icon I_ButtonUp_7x4;
extern const Icon I_Warning_30x23;
extern const Icon I_ButtonLeftSmall_3x5;
extern const Icon I_ButtonLeft_4x7;
extern const Icon I_DolphinFirstStart7_61x51;
extern const Icon I_DolphinOkay_41x43;
extern const Icon I_DolphinFirstStart5_54x49;
extern const Icon I_Flipper_young_80x60;
extern const Icon I_DolphinFirstStart2_59x51;
extern const Icon I_DolphinFirstStart8_56x51;
extern const Icon I_DolphinFirstStart3_57x48;
extern const Icon I_ButtonRightSmall_3x5;
extern const Icon I_ButtonRight_4x7;
extern const Icon I_ButtonUp_7x4;
extern const Icon I_DFU_128x50;
extern const Icon I_Warning_30x23;
extern const Icon I_DolphinFirstStart0_70x53;
extern const Icon I_DolphinFirstStart4_67x53;
extern const Icon I_DolphinFirstStart6_58x54;
extern const Icon I_DolphinFirstStart1_59x53;
extern const Icon I_DolphinFirstStart2_59x51;
extern const Icon I_DolphinFirstStart3_57x48;
extern const Icon I_DolphinFirstStart4_67x53;
extern const Icon I_DolphinFirstStart5_54x49;
extern const Icon I_DolphinFirstStart6_58x54;
extern const Icon I_DolphinFirstStart7_61x51;
extern const Icon I_DolphinFirstStart8_56x51;
extern const Icon I_DolphinOkay_41x43;
extern const Icon I_Flipper_young_80x60;
extern const Icon I_ArrowDownEmpty_14x15;
extern const Icon I_ArrowDownFilled_14x15;
extern const Icon I_ArrowUpEmpty_14x15;
extern const Icon I_ArrowUpFilled_14x15;
extern const Icon I_ArrowDownEmpty_14x15;
extern const Icon I_DoorLeft_70x55;
extern const Icon I_DoorLocked_10x56;
extern const Icon I_DoorRight_70x55;
extern const Icon I_LockPopup_100x49;
extern const Icon I_PassportBottom_128x17;
extern const Icon I_PassportLeft_6x47;
extern const Icon I_DoorLeft_70x55;
extern const Icon I_LockPopup_100x49;
extern const Icon I_DoorRight_70x55;
extern const Icon I_IrdaArrowDown_4x8;
extern const Icon I_Power_25x27;
extern const Icon I_Mute_25x27;
extern const Icon I_Down_hvr_25x27;
extern const Icon I_Vol_up_25x27;
extern const Icon I_IrdaLearnShort_128x31;
extern const Icon I_Up_25x27;
extern const Icon I_Vol_down_hvr_25x27;
extern const Icon I_Vol_down_25x27;
extern const Icon I_Vol_up_hvr_25x27;
extern const Icon I_Fill_marker_7x7;
extern const Icon I_Up_hvr_25x27;
extern const Icon I_IrdaArrowUp_4x8;
extern const Icon I_Down_25x27;
extern const Icon I_DolphinReadingSuccess_59x63;
extern const Icon I_IrdaSendShort_128x34;
extern const Icon I_IrdaLearn_128x64;
extern const Icon I_Mute_hvr_25x27;
extern const Icon I_IrdaSend_128x64;
extern const Icon I_Power_hvr_25x27;
extern const Icon I_Back_15x10;
extern const Icon I_KeySaveSelected_24x11;
extern const Icon I_KeySave_24x11;
extern const Icon I_DolphinReadingSuccess_59x63;
extern const Icon I_Down_25x27;
extern const Icon I_Down_hvr_25x27;
extern const Icon I_Fill_marker_7x7;
extern const Icon I_IrdaArrowDown_4x8;
extern const Icon I_IrdaArrowUp_4x8;
extern const Icon I_IrdaLearnShort_128x31;
extern const Icon I_IrdaLearn_128x64;
extern const Icon I_IrdaSendShort_128x34;
extern const Icon I_IrdaSend_128x64;
extern const Icon I_Mute_25x27;
extern const Icon I_Mute_hvr_25x27;
extern const Icon I_Power_25x27;
extern const Icon I_Power_hvr_25x27;
extern const Icon I_Up_25x27;
extern const Icon I_Up_hvr_25x27;
extern const Icon I_Vol_down_25x27;
extern const Icon I_Vol_down_hvr_25x27;
extern const Icon I_Vol_up_25x27;
extern const Icon I_Vol_up_hvr_25x27;
extern const Icon I_KeyBackspaceSelected_16x9;
extern const Icon I_KeyBackspace_16x9;
extern const Icon I_KeySaveSelected_24x11;
extern const Icon I_KeySave_24x11;
extern const Icon A_125khz_14;
extern const Icon A_BadUsb_14;
extern const Icon A_Bluetooth_14;
@@ -157,58 +130,58 @@ extern const Icon A_Sub1ghz_14;
extern const Icon A_Tamagotchi_14;
extern const Icon A_U2F_14;
extern const Icon A_iButton_14;
extern const Icon I_Medium_chip_22x21;
extern const Icon I_Detailed_chip_17x13;
extern const Icon I_passport_happy3_46x49;
extern const Icon I_Medium_chip_22x21;
extern const Icon I_passport_bad1_46x49;
extern const Icon I_passport_left_6x46;
extern const Icon I_passport_bad2_46x49;
extern const Icon I_passport_happy1_46x49;
extern const Icon I_passport_bottom_128x18;
extern const Icon I_passport_okay3_46x49;
extern const Icon I_passport_okay2_46x49;
extern const Icon I_passport_bad3_46x49;
extern const Icon I_passport_okay1_46x49;
extern const Icon I_passport_bottom_128x18;
extern const Icon I_passport_happy1_46x49;
extern const Icon I_passport_happy2_46x49;
extern const Icon I_Health_16x16;
extern const Icon I_Voltage_16x16;
extern const Icon I_passport_happy3_46x49;
extern const Icon I_passport_left_6x46;
extern const Icon I_passport_okay1_46x49;
extern const Icon I_passport_okay2_46x49;
extern const Icon I_passport_okay3_46x49;
extern const Icon I_BatteryBody_52x28;
extern const Icon I_FaceNormal_29x14;
extern const Icon I_FaceCharging_29x14;
extern const Icon I_Battery_16x16;
extern const Icon I_FaceCharging_29x14;
extern const Icon I_FaceConfused_29x14;
extern const Icon I_Temperature_16x16;
extern const Icon I_FaceNopower_29x14;
extern const Icon I_RFIDDolphinSuccess_108x57;
extern const Icon I_FaceNormal_29x14;
extern const Icon I_Health_16x16;
extern const Icon I_Temperature_16x16;
extern const Icon I_Voltage_16x16;
extern const Icon I_RFIDBigChip_37x36;
extern const Icon I_RFIDDolphinReceive_97x61;
extern const Icon I_RFIDDolphinSend_97x61;
extern const Icon I_RFIDDolphinSuccess_108x57;
extern const Icon I_SDError_43x35;
extern const Icon I_SDQuestion_35x43;
extern const Icon I_Cry_dolph_55x52;
extern const Icon I_Battery_19x8;
extern const Icon I_SDcardFail_11x8;
extern const Icon I_Bluetooth_5x8;
extern const Icon I_PlaceholderR_30x13;
extern const Icon I_Battery_26x8;
extern const Icon I_Lock_8x8;
extern const Icon I_SDcardMounted_11x8;
extern const Icon I_Charging_lightning_9x10;
extern const Icon I_BadUsb_9x8;
extern const Icon I_BT_Pair_9x8;
extern const Icon I_Charging_lightning_mask_9x10;
extern const Icon I_PlaceholderL_11x13;
extern const Icon I_Background_128x11;
extern const Icon I_BadUsb_9x8;
extern const Icon I_Battery_19x8;
extern const Icon I_Battery_26x8;
extern const Icon I_Bluetooth_5x8;
extern const Icon I_Charging_lightning_9x10;
extern const Icon I_Charging_lightning_mask_9x10;
extern const Icon I_Lock_8x8;
extern const Icon I_PlaceholderL_11x13;
extern const Icon I_PlaceholderR_30x13;
extern const Icon I_SDcardFail_11x8;
extern const Icon I_SDcardMounted_11x8;
extern const Icon I_USBConnected_15x8;
extern const Icon I_Quest_7x8;
extern const Icon I_Lock_7x8;
extern const Icon I_MHz_25x11;
extern const Icon I_Quest_7x8;
extern const Icon I_Scanning_123x52;
extern const Icon I_Unlock_7x8;
extern const Icon I_Lock_7x8;
extern const Icon I_DolphinNice_96x59;
extern const Icon I_iButtonDolphinSuccess_109x60;
extern const Icon I_DolphinExcited_64x63;
extern const Icon I_iButtonKey_49x44;
extern const Icon I_iButtonDolphinVerySuccess_108x52;
extern const Icon I_DolphinWait_61x59;
extern const Icon I_DolphinMafia_115x62;
extern const Icon I_DolphinNice_96x59;
extern const Icon I_DolphinWait_61x59;
extern const Icon I_iButtonDolphinSuccess_109x60;
extern const Icon I_iButtonDolphinVerySuccess_108x52;
extern const Icon I_iButtonKey_49x44;

View File

@@ -1,15 +0,0 @@
/* Automatically generated nanopb constant definitions */
/* Generated by nanopb-0.4.5 */
#include "status.pb.h"
#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif
PB_BIND(PB_Status_PingRequest, PB_Status_PingRequest, AUTO)
PB_BIND(PB_Status_PingResponse, PB_Status_PingResponse, AUTO)

View File

@@ -1,62 +0,0 @@
/* Automatically generated nanopb header */
/* Generated by nanopb-0.4.5 */
#ifndef PB_PB_STATUS_STATUS_PB_H_INCLUDED
#define PB_PB_STATUS_STATUS_PB_H_INCLUDED
#include <pb.h>
#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif
/* Struct definitions */
typedef struct _PB_Status_PingRequest {
pb_bytes_array_t *data;
} PB_Status_PingRequest;
typedef struct _PB_Status_PingResponse {
pb_bytes_array_t *data;
} PB_Status_PingResponse;
#ifdef __cplusplus
extern "C" {
#endif
/* Initializer values for message structs */
#define PB_Status_PingRequest_init_default {NULL}
#define PB_Status_PingResponse_init_default {NULL}
#define PB_Status_PingRequest_init_zero {NULL}
#define PB_Status_PingResponse_init_zero {NULL}
/* Field tags (for use in manual encoding/decoding) */
#define PB_Status_PingRequest_data_tag 1
#define PB_Status_PingResponse_data_tag 1
/* Struct field encoding specification for nanopb */
#define PB_Status_PingRequest_FIELDLIST(X, a) \
X(a, POINTER, SINGULAR, BYTES, data, 1)
#define PB_Status_PingRequest_CALLBACK NULL
#define PB_Status_PingRequest_DEFAULT NULL
#define PB_Status_PingResponse_FIELDLIST(X, a) \
X(a, POINTER, SINGULAR, BYTES, data, 1)
#define PB_Status_PingResponse_CALLBACK NULL
#define PB_Status_PingResponse_DEFAULT NULL
extern const pb_msgdesc_t PB_Status_PingRequest_msg;
extern const pb_msgdesc_t PB_Status_PingResponse_msg;
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
#define PB_Status_PingRequest_fields &PB_Status_PingRequest_msg
#define PB_Status_PingResponse_fields &PB_Status_PingResponse_msg
/* Maximum encoded size of messages (where known) */
/* PB_Status_PingRequest_size depends on runtime parameters */
/* PB_Status_PingResponse_size depends on runtime parameters */
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,32 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 51
Passive frames: 6
Active frames: 2
Frames order: 0 1 2 3 4 5 6 7
Active cycles: 3
Frame rate: 2
Duration: 3600
Active cooldown: 5
Bubble slots: 1
Slot: 0
X: 60
Y: 23
Text: I have to rest
AlignH: Left
AlignV: Bottom
StartFrame: 7
EndFrame: 9
Slot: 0
X: 60
Y: 23
Text: but not today
AlignH: Left
AlignV: Bottom
StartFrame: 10
EndFrame: 12

View File

@@ -0,0 +1,34 @@
Filetype: Flipper Animation Manifest
Version: 1
# Animation 1
Name: waves
Min butthurt: 0
Max butthurt: 5
Min level: 1
Max level: 3
Weight: 3
# Animation 2
Name: laptop
Min butthurt: 0
Max butthurt: 9
Min level: 1
Max level: 3
Weight: 3
# Animation 3
Name: sleep
Min butthurt: 0
Max butthurt: 10
Min level: 1
Max level: 3
Weight: 3
# Animation 4
Name: recording
Min butthurt: 0
Max butthurt: 8
Min level: 1
Max level: 1
Weight: 3

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,14 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 51
Passive frames: 6
Active frames: 6
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11
Active cycles: 2
Frame rate: 2
Duration: 3600
Active cooldown: 5
Bubble slots: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,41 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 64
Passive frames: 2
Active frames: 4
Frames order: 0 1 2 3 2 3
Active cycles: 2
Frame rate: 2
Duration: 3600
Active cooldown: 5
Bubble slots: 2
Slot: 0
X: 53
Y: 20
Text: In a lucid dream,\nI could walk...
AlignH: Left
AlignV: Bottom
StartFrame: 3
EndFrame: 9
Slot: 1
X: 53
Y: 20
Text: OH MY GOD!
AlignH: Left
AlignV: Bottom
StartFrame: 3
EndFrame: 5
Slot: 1
X: 53
Y: 31
Text: Just a dream...
AlignH: Left
AlignV: Bottom
StartFrame: 6
EndFrame: 9

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,50 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 50
Passive frames: 2
Active frames: 4
Frames order: 0 1 2 3 2 3
Active cycles: 2
Frame rate: 2
Duration: 3600
Active cooldown: 5
Bubble slots: 3
Slot: 0
X: 1
Y: 17
Text: I am happy,\nmy friend!
AlignH: Right
AlignV: Bottom
StartFrame: 3
EndFrame: 9
Slot: 1
X: 1
Y: 17
Text: So long and\nthanks for\nall the fish!
AlignH: Right
AlignV: Center
StartFrame: 3
EndFrame: 9
Slot: 2
X: 1
Y: 25
Text: I wish I could
AlignH: Right
AlignV: Bottom
StartFrame: 3
EndFrame: 5
Slot: 2
X: 1
Y: 25
Text: swim all day
AlignH: Right
AlignV: Bottom
StartFrame: 6
EndFrame: 9

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1 +0,0 @@
2

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1 +0,0 @@
2

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Some files were not shown because too many files have changed in this diff Show More