resource_package.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * Copyright (c) 2012-2015 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "resource_package.h"
  6. #include "resource_manager.h"
  7. #include "package_resource.h"
  8. #include "array.h"
  9. namespace crown
  10. {
  11. ResourcePackage::ResourcePackage(StringId64 id, ResourceManager& resman)
  12. : _marker(MARKER)
  13. , _resman(&resman)
  14. , _id(id)
  15. , _package(NULL)
  16. {
  17. resman.load(PACKAGE_TYPE, _id);
  18. resman.flush();
  19. _package = (const PackageResource*)resman.get(PACKAGE_TYPE, _id);
  20. }
  21. ResourcePackage::~ResourcePackage()
  22. {
  23. _resman->unload(PACKAGE_TYPE, _id);
  24. _marker = 0;
  25. }
  26. void ResourcePackage::load()
  27. {
  28. for (uint32_t i = 0; i < array::size(_package->resources); ++i)
  29. {
  30. _resman->load(_package->resources[i].type, _package->resources[i].name);
  31. }
  32. }
  33. void ResourcePackage::unload()
  34. {
  35. for (uint32_t i = 0; i < array::size(_package->resources); ++i)
  36. {
  37. _resman->unload(_package->resources[i].type, _package->resources[i].name);
  38. }
  39. }
  40. void ResourcePackage::flush()
  41. {
  42. _resman->flush();
  43. }
  44. bool ResourcePackage::has_loaded() const
  45. {
  46. for (uint32_t i = 0; i < array::size(_package->resources); ++i)
  47. {
  48. if (!_resman->can_get(_package->resources[i].type, _package->resources[i].name))
  49. return false;
  50. }
  51. return true;
  52. }
  53. } // namespace crown