more refactors..
[carveJwlIkooP6JGAAIwe30JlM.git] / addon.c
diff --git a/addon.c b/addon.c
index fde9f9d06750dfc0b86311b5c1b703c0dd08e05d..d408654100b3d5c5a8a0d66c7e7a45993c59fe08 100644 (file)
--- a/addon.c
+++ b/addon.c
@@ -42,6 +42,34 @@ static u32 get_index_from_addon( enum workshop_file_type type, addon_reg *a ){
    return 0xffffffff;
 }
 
+static u32 addon_match( enum workshop_file_type type,
+                        u64 workshop_id, const char *foldername ){
+   u32 foldername_djb2 = vg_strdjb2( foldername );
+
+   u32 count = 0;
+   for( u32 i=0; count<addon_system.registry_type_counts[type]; i++ ){
+      addon_reg *reg = &addon_system.registry[i];
+      if( reg->type == type ){
+         
+         if( workshop_id ){
+            if( workshop_id == reg->workshop_id )
+               return count;
+         }
+         else{
+            if( reg->foldername_hash == foldername_djb2 ){
+               if( !strcmp( reg->foldername, foldername ) ){
+                  return count;
+               }
+            }
+         }
+
+         count ++;
+      }
+   }
+
+   return 0xffffffff;
+}
+
 static void addon_system_init( void ){
    u32 reg_size   = sizeof(addon_reg)*ADDON_MOUNTED_MAX;
    addon_system.registry = vg_linear_alloc( vg_mem.rtmemory, reg_size );
@@ -140,6 +168,7 @@ VG_STATIC void addon_print_info( addon_reg *reg ){
 }
 
 VG_STATIC void addon_mount_finish( addon_reg *reg ){
+   addon_print_info( reg );
    addon_system.registry_count ++;
 }
 
@@ -189,7 +218,7 @@ VG_STATIC addon_reg *addon_mount_local_addon( const char *folder,
    vg_strnull( &folder_path, folder_path_buf, 4096 );
    vg_strcat( &folder_path, folder );
 
-   const char *folder_name = vg_strch( &folder_path, '/' );
+   const char *folder_name = vg_strch( &folder_path, '/' )+1;
    u32 folder_hash = vg_strdjb2(folder_name);
    for( u32 i=0; i<addon_system.registry_count; i++ ){
       addon_reg *reg = &addon_system.registry[i];