local sound = { }
function sound:init( )
self.Assembly = { }
if not file.Exists( "soundbrowsercache.txt" ) then
print( "building browse cache ( started at: " .. self:gettime( ) .. ")." )
self:build( "../sound" )
file.Write( "soundbrowsercache.txt", util.TableToKeyValues( self.Assembly ) )
print( "finished building browse cache ( finished at: " .. self:gettime( ) .. ")." )
print( "a total of " .. #self.Assembly .. " sounds were found." )
else
self.Assembly = util.KeyValuesToTable( file.Read( "soundbrowsercache.txt" ) )
end
end
function sound:gettime( )
local date, tag
tag = "am"
date = os.date( "*t" )
if date.hour > 11 then
tag = "pm"
end
if date.hour > 12 then
date.hour = date.hour - 12
end
return date.hour .. ":" .. date.min .. ":" .. ( string.len( date.sec ) == 2 and date.sec or "0" .. date.sec ) .. " " .. string.upper( tag )
end
function sound:build( folder )
local home, k, v
home = folder .. "/"
for k, v in pairs( file.Find( home .. "*" ) ) do
if file.IsDir( home .. v ) then
self:build( home .. v )
else
table.insert( self.Assembly, { name = v, path = string.sub( home .. v, 10 ) } )
end
end
end
function sound:search( _, _, args )
local search, k, v
if not args then return end
if not args[ 1 ] then return end
if args[ 1 ] == "" then return end
search = table.concat( args, " " )
for k, v in pairs( self.Assembly ) do
if string.find( v.path, search ) then
print( v.path )
end
end
end
function sound:rebuild( )
self.Assembly = { }
print( "building browse cache ( started at: " .. self:gettime( ) .. ")." )
self:build( "../sound" )
file.Write( "soundbrowsercache.txt", util.TableToKeyValues( self.Assembly ) )
print( "finished building browse cache ( finished at: " .. self:gettime( ) .. ")." )
print( "a total of " .. #self.Assembly .. " sounds were found." )
end
sound:init( )
concommand.Add( "/browse", function( pl, cmd, args ) sound:search( '', '', args ) end )
concommand.Add( "/rebuild", function( pl, cmd, args ) sound:rebuild( '', '', '' ) end )