| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * Copyright (c) 2012-2023 Daniele Bartolini et al.
- * SPDX-License-Identifier: MIT
- */
- #include "core/containers/array.inl"
- #include "resource/package_resource.h"
- #include "resource/resource_manager.h"
- #include "resource/resource_package.h"
- #include "world/types.h"
- namespace crown
- {
- ResourcePackage::ResourcePackage(StringId64 id, ResourceManager &resman)
- : _marker(RESOURCE_PACKAGE_MARKER)
- , _resource_manager(&resman)
- , _package_id(id)
- , _package(NULL)
- {
- }
- ResourcePackage::~ResourcePackage()
- {
- _resource_manager->unload(RESOURCE_TYPE_PACKAGE, _package_id);
- _marker = 0;
- }
- void ResourcePackage::load()
- {
- _resource_manager->load(RESOURCE_TYPE_PACKAGE, _package_id);
- _resource_manager->flush();
- _package = (const PackageResource *)_resource_manager->get(RESOURCE_TYPE_PACKAGE, _package_id);
- for (u32 ii = 0; ii < _package->num_resources; ++ii) {
- const ResourceOffset *ro = package_resource::resource_offset(_package, ii);
- _resource_manager->load(ro->type, ro->name);
- }
- }
- void ResourcePackage::unload()
- {
- for (u32 ii = 0; ii < _package->num_resources; ++ii) {
- const ResourceOffset *ro = package_resource::resource_offset(_package, ii);
- _resource_manager->unload(ro->type, ro->name);
- }
- }
- void ResourcePackage::flush()
- {
- _resource_manager->flush();
- }
- bool ResourcePackage::has_loaded() const
- {
- for (u32 ii = 0; ii < _package->num_resources; ++ii) {
- const ResourceOffset *ro = package_resource::resource_offset(_package, ii);
- if (!_resource_manager->can_get(ro->type, ro->name))
- return false;
- }
- return true;
- }
- } // namespace crown
|