49 lines
		
	
	
	
		
			879 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			879 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local cache = {}
 | |
| 
 | |
| -- Basic caching system
 | |
| function SaveCache(key, data, lifespan)
 | |
|     cache[key] = {
 | |
|         data = data,
 | |
|         maxAge = GetGameTimer() + (lifespan or 3000),
 | |
|     }
 | |
| end
 | |
| 
 | |
| function WipeCache(key)
 | |
|     cache[key] = nil
 | |
| end
 | |
| 
 | |
| function UseCache(key, cb, lifespan)
 | |
|     if not cache[key] or cache[key]['maxAge'] < GetGameTimer() then
 | |
|         local data = {cb()}
 | |
|         SaveCache(key, data, lifespan)
 | |
| 
 | |
|         return table.unpack(data)
 | |
|     end
 | |
| 
 | |
|     return table.unpack(cache[key]['data'])
 | |
| end
 | |
| 
 | |
| -- UTILS
 | |
| 
 | |
| function Count(t)
 | |
|     local count = 0
 | |
|     for _ in pairs(t) do count = count + 1 end
 | |
|     return count
 | |
| end
 | |
| 
 | |
| function Contains(tab, val)
 | |
|     for index, value in ipairs(tab) do
 | |
|         if value == val then
 | |
|             return true
 | |
|         end
 | |
|     end
 | |
|     
 | |
|     return false
 | |
| end
 | |
| 
 | |
| function Debug(...)
 | |
|     if not Link.debugMode then
 | |
|         return
 | |
|     end
 | |
|     print(...)
 | |
| end
 | 
