This commit is contained in:
RogueMaster
2022-10-25 00:20:29 -04:00
parent 9691650616
commit a21df918d6
3 changed files with 65 additions and 46 deletions

View File

@@ -27,7 +27,8 @@ static FlipperFormat* snake_game_open_file(Storage* storage) {
return NULL; return NULL;
} }
flipper_format_write_header_cstr(file, SNAKE_GAME_FILE_HEADER, SNAKE_GAME_FILE_ACTUAL_VERSION); flipper_format_write_header_cstr(
file, SNAKE_GAME_FILE_HEADER, SNAKE_GAME_FILE_ACTUAL_VERSION);
flipper_format_rewind(file); flipper_format_rewind(file);
} }
return file; return file;
@@ -75,19 +76,22 @@ void snake_game_save_game_to_file(SnakeState* const snake_state) {
temp_array[a++] = snake_state->points[i].x; temp_array[a++] = snake_state->points[i].x;
temp_array[a++] = snake_state->points[i].y; temp_array[a++] = snake_state->points[i].y;
} }
if(!flipper_format_insert_or_update_uint32(file, SNAKE_GAME_CONFIG_KEY_POINTS, temp_array, array_size)){ if(!flipper_format_insert_or_update_uint32(
file, SNAKE_GAME_CONFIG_KEY_POINTS, temp_array, array_size)) {
snake_game_close_file(file); snake_game_close_file(file);
return; return;
} }
temp = snake_state->currentMovement; temp = snake_state->currentMovement;
if(!flipper_format_insert_or_update_uint32(file, SNAKE_GAME_CONFIG_KEY_CURRENT_MOVEMENT,&temp, 1)){ if(!flipper_format_insert_or_update_uint32(
file, SNAKE_GAME_CONFIG_KEY_CURRENT_MOVEMENT, &temp, 1)) {
snake_game_close_file(file); snake_game_close_file(file);
return; return;
} }
temp = snake_state->nextMovement; temp = snake_state->nextMovement;
if(!flipper_format_insert_or_update_uint32(file, SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT,&temp, 1)){ if(!flipper_format_insert_or_update_uint32(
file, SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT, &temp, 1)) {
snake_game_close_file(file); snake_game_close_file(file);
return; return;
} }
@@ -96,7 +100,8 @@ void snake_game_save_game_to_file(SnakeState* const snake_state) {
uint32_t temp_point_array[array_size]; uint32_t temp_point_array[array_size];
temp_point_array[0] = snake_state->fruit.x; temp_point_array[0] = snake_state->fruit.x;
temp_point_array[1] = snake_state->fruit.y; temp_point_array[1] = snake_state->fruit.y;
if(!flipper_format_insert_or_update_uint32(file, SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS, temp_point_array, array_size)){ if(!flipper_format_insert_or_update_uint32(
file, SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS, temp_point_array, array_size)) {
snake_game_close_file(file); snake_game_close_file(file);
return; return;
} }
@@ -152,10 +157,10 @@ bool snake_game_init_game_from_file(SnakeState* const snake_state) {
snake_state->nextMovement = temp; snake_state->nextMovement = temp;
flipper_format_delete_key(file, SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT); flipper_format_delete_key(file, SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT);
array_size = 2; array_size = 2;
uint32_t temp_point_array[array_size]; uint32_t temp_point_array[array_size];
if(!flipper_format_read_uint32(file, SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS, temp_point_array, array_size)){ if(!flipper_format_read_uint32(
file, SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS, temp_point_array, array_size)) {
snake_game_close_file(file); snake_game_close_file(file);
return false; return false;
} }

View File

@@ -233,7 +233,6 @@ static void
return; return;
} }
snake_state->currentMovement = snake_game_get_turn_snake(snake_state); snake_state->currentMovement = snake_game_get_turn_snake(snake_state);
Point next_step = snake_game_get_next_step(snake_state); Point next_step = snake_game_get_next_step(snake_state);
@@ -289,8 +288,7 @@ int32_t snake_game_app(void* p) {
FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(SnakeEvent)); FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(SnakeEvent));
SnakeState* snake_state = malloc(sizeof(SnakeState)); SnakeState* snake_state = malloc(sizeof(SnakeState));
if(!snake_game_init_game_from_file(snake_state)) if(!snake_game_init_game_from_file(snake_state)) snake_game_init_game(snake_state);
snake_game_init_game(snake_state);
ValueMutex state_mutex; ValueMutex state_mutex;
if(!init_mutex(&state_mutex, snake_state, sizeof(SnakeState))) { if(!init_mutex(&state_mutex, snake_state, sizeof(SnakeState))) {

View File

@@ -48,7 +48,13 @@ static bool totp_state_init(PluginState* const plugin_state) {
if(plugin_state->crypto_verify_data == NULL) { if(plugin_state->crypto_verify_data == NULL) {
DialogMessage* message = dialog_message_alloc(); DialogMessage* message = dialog_message_alloc();
dialog_message_set_buttons(message, "No", NULL, "Yes"); dialog_message_set_buttons(message, "No", NULL, "Yes");
dialog_message_set_text(message, "Would you like to setup PIN?", SCREEN_WIDTH_CENTER, SCREEN_HEIGHT_CENTER, AlignCenter, AlignCenter); dialog_message_set_text(
message,
"Would you like to setup PIN?",
SCREEN_WIDTH_CENTER,
SCREEN_HEIGHT_CENTER,
AlignCenter,
AlignCenter);
DialogMessageButton dialog_result = dialog_message_show(plugin_state->dialogs, message); DialogMessageButton dialog_result = dialog_message_show(plugin_state->dialogs, message);
dialog_message_free(message); dialog_message_free(message);
if(dialog_result == DialogMessageButtonRight) { if(dialog_result == DialogMessageButtonRight) {
@@ -64,10 +70,18 @@ static bool totp_state_init(PluginState* const plugin_state) {
if(totp_crypto_verify_key(plugin_state)) { if(totp_crypto_verify_key(plugin_state)) {
totp_scene_director_activate_scene(plugin_state, TotpSceneGenerateToken, NULL); totp_scene_director_activate_scene(plugin_state, TotpSceneGenerateToken, NULL);
} else { } else {
FURI_LOG_E(LOGGING_TAG, "Digital signature verification failed. Looks like conf file was created on another flipper and can't be used on any other"); FURI_LOG_E(
LOGGING_TAG,
"Digital signature verification failed. Looks like conf file was created on another flipper and can't be used on any other");
DialogMessage* message = dialog_message_alloc(); DialogMessage* message = dialog_message_alloc();
dialog_message_set_buttons(message, "Exit", NULL, NULL); dialog_message_set_buttons(message, "Exit", NULL, NULL);
dialog_message_set_text(message, "Digital signature verification failed", SCREEN_WIDTH_CENTER, SCREEN_HEIGHT_CENTER, AlignCenter, AlignCenter); dialog_message_set_text(
message,
"Digital signature verification failed",
SCREEN_WIDTH_CENTER,
SCREEN_HEIGHT_CENTER,
AlignCenter,
AlignCenter);
dialog_message_show(plugin_state->dialogs, message); dialog_message_show(plugin_state->dialogs, message);
dialog_message_free(message); dialog_message_free(message);
return false; return false;
@@ -142,7 +156,9 @@ int32_t totp_app() {
} }
processing = totp_scene_director_handle_event(&event, plugin_state); processing = totp_scene_director_handle_event(&event, plugin_state);
} else if (plugin_state->pin_set && plugin_state->current_scene != TotpSceneAuthentication && furi_get_tick() - last_user_interaction_time > IDLE_TIMEOUT) { } else if(
plugin_state->pin_set && plugin_state->current_scene != TotpSceneAuthentication &&
furi_get_tick() - last_user_interaction_time > IDLE_TIMEOUT) {
totp_scene_director_activate_scene(plugin_state, TotpSceneAuthentication, NULL); totp_scene_director_activate_scene(plugin_state, TotpSceneAuthentication, NULL);
} }