2
0

par_asset.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "whereami.h"
  2. #include "sds.h"
  3. #define PAR_EASYCURL_IMPLEMENTATION
  4. #include "par_easycurl.h"
  5. #define PAR_FILECACHE_IMPLEMENTATION
  6. #include "par_filecache.h"
  7. static sds _exedir = 0;
  8. static sds _baseurl = 0;
  9. static void asset_init()
  10. {
  11. par_easycurl_init(0);
  12. _baseurl = sdsnew("http://github.prideout.net/assets/");
  13. int length = wai_getExecutablePath(0, 0, 0);
  14. _exedir = sdsnewlen("", length);
  15. int dirlen;
  16. wai_getExecutablePath(_exedir, length, &dirlen);
  17. sdsrange(_exedir, 0, dirlen);
  18. sds prefix = sdscat(sdsdup(_exedir), "cache_");
  19. par_filecache_init(prefix, 10 * 1024 * 1024);
  20. sdsfree(prefix);
  21. }
  22. static void asset_get(char const* filename, par_byte** data, int* nbytes)
  23. {
  24. int exists = par_filecache_load(filename, data, nbytes, 0, 0);
  25. if (exists) {
  26. return;
  27. }
  28. sds srcurl = sdscat(sdsdup(_baseurl), filename);
  29. printf("Downloading %s...\n", srcurl);
  30. int success = par_easycurl_to_memory(srcurl, data, nbytes);
  31. if (!success) {
  32. exit(1);
  33. }
  34. par_filecache_save(filename, *data, *nbytes, 0, 0);
  35. sdsfree(srcurl);
  36. }