| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -183,7 +183,7 @@ void val_ui_menu(bool was_idle) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_var(&a_title, l_main);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_values(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    &a_title,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    -(lv_obj_get_height(o_container) - lv_obj_get_height(l_main)) / 2, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    -(lv_obj_get_height(o_container) + lv_obj_get_height(l_main)) / 2, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_exec_cb(&a_title, anim_y_cb);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_path_cb(&a_title, lv_anim_path_ease_in);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_duration(&a_title, 500);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -193,7 +193,7 @@ void val_ui_menu(bool was_idle) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_var(&a_sub, l_subtitle);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_values(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    &a_sub,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    (lv_obj_get_height(o_container) - lv_obj_get_height(l_main)) / 2,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    (lv_obj_get_height(o_container) + lv_obj_get_height(l_main)) / 2,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    (lv_obj_get_height(l_main) + lv_obj_get_height(l_subtitle)) / 2 + 5);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_exec_cb(&a_sub, anim_y_cb);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_path_cb(&a_sub, lv_anim_path_ease_in);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -284,7 +284,7 @@ void val_ui_queue_start(bool ms_not_comp) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_t *l_subtitle = lv_label_create(o_active);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_add_style(l_subtitle, &s_subtitle, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_center(l_subtitle);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_label_set_text_static(l_subtitle, ms_not_comp ? "UHHH SHOULD THAT BE COMP?" : "I HOPE IT'S NOT SPLIT...");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_label_set_text_static(l_subtitle, ms_not_comp ? "UHHH SHOULD THAT BE COMP?" : "HOPE YOU FIND A GAME QUICKLY!");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_t *spinner = lv_spinner_create(o_active);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_set_size(spinner, 100, 100);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -301,7 +301,6 @@ void val_ui_queue_start(bool ms_not_comp) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_set_y(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    spinner,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    lv_obj_get_height(o_container) / 4);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // offset + (lv_obj_get_height(l_main)/2) + lv_obj_get_height(l_subtitle) + (lv_obj_get_height(spinner)/2) + 15);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  // Animations
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_t a_title;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -309,7 +308,7 @@ void val_ui_queue_start(bool ms_not_comp) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_var(&a_title, l_main);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_values(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    &a_title,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    -(lv_obj_get_width(o_container) - lv_obj_get_width(l_main)) / 2, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    -(lv_obj_get_width(o_container) + lv_obj_get_width(l_main)) / 2, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_exec_cb(&a_title, anim_x_cb);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_path_cb(&a_title, lv_anim_path_ease_out);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_duration(&a_title, 750);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -319,7 +318,7 @@ void val_ui_queue_start(bool ms_not_comp) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_var(&a_sub, l_subtitle);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_values(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    &a_sub,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    (lv_obj_get_width(o_container) - lv_obj_get_width(l_subtitle)) / 2, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    (lv_obj_get_width(o_container) + lv_obj_get_width(l_subtitle)) / 2, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_exec_cb(&a_sub, anim_x_cb);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_path_cb(&a_sub, lv_anim_path_ease_out);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_completed_cb(&a_sub, anim_state_ready_cb);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -347,6 +346,50 @@ void val_ui_queue_start(bool ms_not_comp) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_timeline_start(at_active);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void val_ui_match_found(bool is_premier) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  setup_next_state();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  // Widgets
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_t *l_main = lv_label_create(o_active);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_add_style(l_main, &s_hero, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_center(l_main);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_label_set_text_static(l_main, "MATCH FOUND");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_t *l_subtitle = lv_label_create(o_active);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_add_style(l_subtitle, &s_subtitle, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_center(l_subtitle);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_label_set_text_static(l_subtitle, is_premier ? "DO THE COSMONAUTS PROUD!" : "I HOPE IT'S NOT SPLIT...");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_obj_update_layout(o_active);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  // Animations
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_t a_title;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_init(&a_title);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_var(&a_title, l_main);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_values(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    &a_title,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    (lv_obj_get_height(o_container) + lv_obj_get_height(l_main)) / 2, 0);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_exec_cb(&a_title, anim_y_cb);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_path_cb(&a_title, lv_anim_path_ease_in);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_duration(&a_title, 500);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_t a_sub;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_init(&a_sub);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_var(&a_sub, l_subtitle);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_values(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    &a_sub,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    -(lv_obj_get_height(o_container) + lv_obj_get_height(l_main)) / 2,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    (lv_obj_get_height(l_main) + lv_obj_get_height(l_subtitle)) / 2 + 5);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_exec_cb(&a_sub, anim_y_cb);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_path_cb(&a_sub, lv_anim_path_ease_in);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_completed_cb(&a_sub, anim_state_ready_cb);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_set_duration(&a_sub, 500);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_timeline_add(at_active, 0, &a_title);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_timeline_add(at_active, 0, &a_sub);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  lv_anim_timeline_start(at_active);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void val_lvgl_ui(lv_display_t *disp) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  color_primary = lv_color_hex(0xff4655);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  color_secondary = lv_color_hex(0xf7518f);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				 
 |