[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>
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
BIN
assets/dolphin/animations/laptop/frame_0.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/laptop/frame_1.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/laptop/frame_2.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/laptop/frame_3.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/laptop/frame_4.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/laptop/frame_5.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/laptop/frame_6.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/laptop/frame_7.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
32
assets/dolphin/animations/laptop/meta.txt
Normal 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
|
||||
34
assets/dolphin/animations/manifest.txt
Normal 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
|
||||
BIN
assets/dolphin/animations/recording/frame_0.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_1.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_10.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_11.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_2.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/recording/frame_3.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_4.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_5.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/recording/frame_6.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_7.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/dolphin/animations/recording/frame_8.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/dolphin/animations/recording/frame_9.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
14
assets/dolphin/animations/recording/meta.txt
Normal 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
|
||||
BIN
assets/dolphin/animations/sleep/frame_0.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
assets/dolphin/animations/sleep/frame_1.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
assets/dolphin/animations/sleep/frame_2.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
assets/dolphin/animations/sleep/frame_3.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
41
assets/dolphin/animations/sleep/meta.txt
Normal 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
|
||||
BIN
assets/dolphin/animations/waves/frame_0.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/dolphin/animations/waves/frame_1.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/dolphin/animations/waves/frame_2.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
assets/dolphin/animations/waves/frame_3.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
50
assets/dolphin/animations/waves/meta.txt
Normal 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
|
||||
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
@@ -1 +0,0 @@
|
||||
2
|
||||
@@ -1 +0,0 @@
|
||||
2
|
||||
@@ -1 +0,0 @@
|
||||
2
|
||||
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1 +0,0 @@
|
||||
2
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |