X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=addon.c;h=fe6693f89adf847a9f4bfad27c057d660eef7337;hb=4a567dd9ef3bd63fb924d80fd2e09323b99d0a34;hp=fde9f9d06750dfc0b86311b5c1b703c0dd08e05d;hpb=cb1d2f9fbec8a274aaf7a80c5fb552b928148b1e;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/addon.c b/addon.c index fde9f9d..fe6693f 100644 --- a/addon.c +++ b/addon.c @@ -7,6 +7,8 @@ #include "workshop_types.h" #include "workshop.h" +#include "addon_cache.c" + static u32 addon_count( enum workshop_file_type type ){ return addon_system.registry_type_counts[ type ]; } @@ -42,6 +44,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; counttype == 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 ); @@ -189,7 +219,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