| 32 | } |
| 33 | |
| 34 | void ResourcePackage::load() |
| 35 | { |
| 36 | // Load the package resource itself. |
| 37 | if (!_package_resource_queued) { |
| 38 | _package_resource_queued = _resource_manager->try_load(PACKAGE_RESOURCE_NONE |
| 39 | , RESOURCE_TYPE_PACKAGE |
| 40 | , _package_resource_name |
| 41 | , 0 |
| 42 | ); |
| 43 | } else { |
| 44 | if (_package_resource == NULL) { |
| 45 | if (!_resource_manager->can_get(RESOURCE_TYPE_PACKAGE, _package_resource_name)) { |
| 46 | _resource_manager->complete_requests(); |
| 47 | return; |
| 48 | } |
| 49 | |
| 50 | _package_resource = (PackageResource *)_resource_manager->get(RESOURCE_TYPE_PACKAGE, _package_resource_name); |
| 51 | } |
| 52 | |
| 53 | // Now that the package resource has been loaded, issue loading requests for all the |
| 54 | // resources it contains. |
| 55 | for (u32 ii = _num_resources_queued; ii < _package_resource->num_resources; ++ii) { |
| 56 | const ResourceOffset *ro = package_resource::resource_offset(_package_resource, ii); |
| 57 | if (!_resource_manager->try_load(_package_resource_name, ro->type, ro->name, ro->online_order, _package_resource)) |
| 58 | break; |
| 59 | |
| 60 | ++_num_resources_queued; |
| 61 | } |
| 62 | } |
| 63 | } |
| 64 | |
| 65 | void ResourcePackage::unload() |
| 66 | { |