camera shake
[carveJwlIkooP6JGAAIwe30JlM.git] / workshop.c
index a2fe1fe5b36bc29bf32f8a00713842a57fbe4f48..61a4899793505e344fc227f252a15d1e6f420f1e 100644 (file)
@@ -769,31 +769,25 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index )
          u32 len = strlen(metadata_str);
          vg_info( "Metadata: %s\n", metadata_str );
          vg_str_bin( metadata_str, metadata_buf, len );
-         vg_msg msg;
-         vg_msg_init( &msg, metadata_buf, len/2 );
+         vg_msg root;
+         vg_msg_init( &root, metadata_buf, len/2 );
          
-         vg_msg_cmd cmd;
-         while( vg_msg_next( &msg, &cmd ) ){
-            if( (msg.depth == 1) && (cmd.code == k_vg_msg_code_frame) ){
-               if( VG_STRDJB2_EQ( "workshop", cmd.key, cmd.key_djb2 ) ){
-                  u32 depth = msg.depth;
-                  while( (msg.depth == depth) && vg_msg_next( &msg, &cmd ) ){
-                     if( cmd.code & k_vg_msg_code_unsigned ){
-                        if( VG_STRDJB2_EQ( "type", cmd.key, cmd.key_djb2 ) ){
-                           workshop_form.submission.type = cmd.value._u32;
-   workshop_form.submission.submission_type_selection.value = cmd.value._u32;
-                        }
-                     }
-                     else if( cmd.code == k_vg_msg_code_kvstring ){
-                        if( VG_STRDJB2_EQ( "folder", cmd.key, cmd.key_djb2 ) ){
-                           vg_strncpy( cmd.value._buf,
-                                       workshop_form.addon_folder,
-                                       sizeof(workshop_form.addon_folder),
-                                       k_strncpy_always_add_null );
-                        }
-                     }
-                  }
-               }
+         vg_msg workshop;
+         if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){
+            vg_msg_cmd kv_type = vg_msg_seekkv( &workshop, "type", 
+                                                k_vg_msg_first );
+            if( kv_type.code & k_vg_msg_code_integer ){
+               u32 u = kv_type.value._u32;
+               workshop_form.submission.type = u;
+               workshop_form.submission.submission_type_selection.value = u;
+            }
+
+            const char *kv_folder = vg_msg_seekkvstr( &workshop, "folder",
+                                                      k_vg_msg_first );
+            if( kv_folder ){
+               vg_strncpy( kv_folder, workshop_form.addon_folder,
+                           sizeof(workshop_form.addon_folder),
+                           k_strncpy_always_add_null );
             }
          }
       }